boaboa
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору РЕШЕНИЕ: Сначала хочу сказать, что служба большого провайдера это неповоротливая машина старающаяся не делать ошибки, чтоб не угробить всю сеть, поэтому от момента обращения к ним до момента решения вопросы в глобальных масштабах может пройти много времени и пару сотен жалоб от других абонентов, а поскольку данная проблема на Windows машинах большинства пользователей провайдера не возникает, и роутеры тоже её не имеют, то остальным оставшись в меньшинстве придется самостоятельно решать на своей стороне. В данном случае проблема была в том что DHCP-сервер провайдера отвечает только на мультикастовые запросы, которые DHCP-клиент начинает слать только с момента Т2 87,5% времени аренды, но в соответствии с требованием об интервалах между запросами, а именно: T2 по умолчанию равно (0.875 * duration_of_lease) время T2 должно быть выбрано с некоторым случайным разбросом относительно фиксированных значений. Клиент должен ждать половину остающегося времени вплоть до T2 (в состоянии RENEWING) и половину остающегося времени действия конфигурационного набора (в состоянии REBINDING), как минимум 60 секунд, прежде чем осуществить повторную отправку сообщения DHCPREQUEST. Поэтому не всегда удавалось успеть послать мультикастовый запрос DHCPREQUEST до потери аренды. Решением было выбрано посылать только мультикаст широковещательные запросы, таким образом DHCP-клиент с момента Т1 в соответствии с требованием об интервалах вместо уникастового DHCPREQUEST безответного посылать широковещательно сообщение DHCPREQUEST Для этого в файл /usr/local/etc/dhclient.conf достаточно записать строку "замена DHCP-сервер идентификатор 255.255.255.255" supersede dhcp-server-identifier 255.255.255.255; о чём в принципе пишут почти на каждом углу http://www.google.com.ua/search?q=%22supersede+dhcp-server-identifier+255.255.255.255%22&sugexp=chrome,mod=2&sourceid=chrome&ie=UTF-8 Но. Никто ж не сказал что половина DHCP-клиентов от разных производителей не обращает внимания на существование этого указания в своей конфигурации, и продолжают слать запросы по стандартному протоколу на уникаст. что при использовании мониторинга tcpdump сетевой карты eth1 tcpdump -eni eth1 port 67 or port 68 хорошо видно http://forum.ru-board.com/topic.cgi?forum=65&topic=4463&start=0&limit=1&m=1#1 Поэтому дальнейшим правильным путём был поиск DHCP-клиентов согласных подчиняться командам, и в последствии был найден isc-dhcp42-client он как оказалось способен сделать то что требуется, но возникли проблемы с его запуском из за моей привычки чётко следовать инструкции, а в своей инструкции компания isc пишет: **** To setup dhclient, you may need to edit /etc/rc.conf to replace the base system dhclient as follows: Для настройки dhclient, вам может потребоваться отредактировать файл /etc/rc.conf, чтобы заменить базовую систему dhclient , следующим образом: dhcp_program="/usr/local/sbin/dhclient" dhcp_flags="-q" что естественно неправильно поскольку dhcp_program это DHCP-сервер, а мы поставили и желаем запустить DHCP-клиент, а значит правильным будет в файл /etc/rc.conf # Путь к программе-клиенту DHCP. dhclient_program="/usr/local/sbin/dhclient" # Флаги для программы-клиента DHCP. dhclient_flags="" о чём верно написано, здесь http://www.freebsd.org/doc/ru/books/handbook/network-dhcp.html только место нового не "/sbin/dhclient" а "/usr/local/sbin/dhclient" как указал установщик. затем в файл /usr/local/etc/dhclient.conf записать строку supersede dhcp-server-identifier 255.255.255.255; и в завершение перезагрузить машину reboot или shutdown -r now или как Вы привыкли. смотрим tcpdump -eni eth1 port 67 or port 68 видим 00:01:01.381662 MAC сетевой МОЕЙ > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: IP сетевой МОЕЙ.68 > 255.255.255.255.67: BOOTP/DHCP, Request [|bootp] 00:01:01.508511 MAC сетевой ПРОВАЙДЕРА > MAC сетевой МОЕЙ, ethertype IPv4 (0x0800), length 336: IP сетевой ПРОВАЙДЕРА.67 > IP сетевой МОЕЙ.68: BOOTP/DHCP, Reply, length 294 или короче tcpdump -ni eth1 port 67 or port 68 00:01:01.068917 IP сетевой МОЕЙ.68 > 255.255.255.255.67: BOOTP/DHCP, Request [|bootp] 00:01:01.102829 IP сетевой ПРОВАЙДЕРА.67 > IP сетевой МОЕЙ.68: BOOTP/DHCP, Reply, length 294 и так повторяется через приблизительно половину времени аренды, в момент Т1. чего и желали достичь, dhclient берёт аренду точно в то время, когда и должен изначально брать при положительном стечении всех первичных обстоятельств по стандартному протоколу. и не флудит кучей запросов. ---------------- На стороне провайдера в последующем тоже произвели перемены увеличив длительность аренды с 12 минут до 60 минут, таким образом увеличив время с момента Т2 в который DHCP-клиент начинает слать широковешательные запросы на которые откликается DHCP-сервер провайдера до момента окончания аренды, в пять раз, со 108секунд до 540секунд, что вполне достаточно для выполнения DHCP-клиентом требований по интервалам запросов, и успешного получения аренды, но флуда кучей безответных уникаст запросов от dhclient не избежать. Поскольку все UNIX-системы очень похожи, то это dhclient решение надеюсь подойдёт. Для понимания сути проблемы и направления пути решения очень помогла инструкция, которую я указал в первом сообщении вверху. | Всего записей: 377 | Зарегистр. 27-12-2008 | Отправлено: 20:34 24-09-2012 | Исправлено: boaboa, 10:32 30-09-2012 |
|