Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » РЕШЕНО. Заставить dhclient FreeBSD брать в renew или rebind

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

boaboa

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Теория.
http://docs.pcn.com.ua/book.itep.ru/dhcp.html
 
Ищу как заставить dhclient FreeBSD посылать широковещательно запрос в положенное время rebind Т2 87,5%  
поскольку на запрос (уникастно) DHCPREQUEST в положенное время renew Т1 50%,  сервер провайдера не отвечает даже для Windows ,
или посылать запросы через указанный мною интервал времени.  
 
По алгоритму интервал для момента следующего запроса после безответного (уникастно) DHCPREQUEST Т1 50%,  формируются по формуле - время аренды умноженное на случайное число в интервале до 1.  
Поэтому, продолжая посылать запросы через вычисленный таким образом интервал времени и момент следующего запроса после очередного неполучения ответа на запрос (уникастно) DHCPREQUEST renew Т1 50%-87,4%, очень часто не попадает в интервал времени для запроса широковещательного DHCPREQUEST rebind Т2 87,5%-99%, превышая момент rebind Т2 87,5%-99%, и expire 100%, и сервер остаётся без шлюза и без связи с интернетом на несколько секунд, пока не наступит расчётный момент следующего запроса и dhclient не сформирует широковещательный DHCPDISCOVER запрос уже от IP 0.0.0.0 на 255.255.255.255
А это при просмотре IPTV или в играх задалбывает, если время аренды двенадцать минут(720 сек), то почти каждые двадцать минут на десять секунд затык.  
Настройки, dhclient из ядра, опций запросов в dhclient.conf ничего не меняют.  
Во многих форумах ещё с 2003 года встречается описание этой проблемы, но решения никто не нашел,  
кроме как требовать от провайдера желаемой настройки DHCPсервера, и естественно безрезультатно.  
 Но:

    а.    Остальные имеющиеся провайдеры ещё хуже.  
    Этот вроде нормальный в остальном, но вот этот нюанс.  
    б.    Хочу всё же найти решение на своей стороне используя хвалёную гибкость FreeBSD,

и предполагаю что просто не хватает знаний для осуществления необходимого,  
поэтому ищу решение в поисковиках.  
Даже роутер D-link DIR-300 rev.A , программное обеспечение которого основано на UNIX системе,  
беспроблемно берёт аренду точно в момент rebind (+0 -0 сек)
и Windows берёт аренду в момент rebind (+1 - +4 сек)
 
 
Может вы знаете метод самостоятельного решение этого простого вопроса.
 
Как заставить dhclient:

    1.    Или  заставить посылать широковещательно запрос rebind в положенное время T2, то есть когда истечет 87.5% аренды, а не произвольно в интервалы по алгоритму.  
    2.    Или заставить посылать запросы через установленное мною интервалы времени, а не произвольно в интервалы по алгоритму.  
    3.    Или каждый раз вместо уникастового посылать широковещательный запрос получения аренда.  
    4.    Или в момент expire не терять свой адрес, а продолжать его использовать до получения нового от DHCP сервера, продолжая посылать широковещательный запрос получения аренда.  
    5.    Или Ваши варианты по dhclient

 
Лучше осуществить п.1.  
 повторюсь
dhclient в Windows берёт аренду точно в момент rebind (+1 - +4 сек)  
значит интервал между запросами идёт 5 секунд.  
 
Роутер D-link DIR-300 rev.A , программное обеспечение которого основано на UNIX системе,  
беспроблемно берёт аренду точно в момент rebind (+0 -0 сек)
 
фрагмент tcpdump подряд с удачной, неудачной, удачной, удачной, неудачной, удачной попыткой получения аренды.

Всего записей: 377 | Зарегистр. 27-12-2008 | Отправлено: 17:38 01-02-2012 | Исправлено: boaboa, 10:26 30-09-2012
tankistua

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
man 5 dhclient.conf

Всего записей: 9572 | Зарегистр. 15-01-2002 | Отправлено: 15:43 06-02-2012
boaboa

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tankistua

Цитата:
man 5 dhclient.conf

Содержательно, и как величественно многозначительно !
Один из явных примеров флудерства,  
когда человек не знает что ответить  
но хочет зарисоваться своей крутизной он посылает в маны.
Это то-же что послать на х.й.
 
Я уже перелопатил все маны, не только dhclient
и всё с упоминанием слова dhclient, rebind, renew, DHCPREQUEST, и т.п. за 12-15 лет,  
о чём сообщил в первом сообщении,  
а меня в man 5 dhclient.con послали.
Очень умно, ................................................................. !!!

Всего записей: 377 | Зарегистр. 27-12-2008 | Отправлено: 17:48 06-02-2012 | Исправлено: boaboa, 14:35 05-03-2012
awl42

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Хотелось бы узнать уважаемый boaboa, смогли ли Вы найти решение этой проблемы?
Я (возможно) также столкнулся с подобным случаем, хотя у меня установлен Linux. Я пробовал использовать разные DHCP-клиенты - dhclient и dhcpcd, но проблема не исчезла. На одном из Linux-форумов мне максимум, что смогли посоветовать, так это воткнуть маршрутизатор между моим компьютером и провайдерской сетью. Я проверял - это работает, но хотелось бы всё же найти причины проблемы и устранить их.
Не могли бы Вы рассказать поподробнее, что необходимо требовать при обращении в техподдержку провайдера, чтобы решить указанную проблему?

Всего записей: 1 | Зарегистр. 28-08-2012 | Отправлено: 18:15 29-08-2012
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
Andreo77777

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А можно вопрос чайника, зачем нужна такая задача?

Всего записей: 35 | Зарегистр. 10-07-2012 | Отправлено: 16:28 11-10-2012
fortero

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...

Всего записей: 6 | Зарегистр. 19-05-2014 | Отправлено: 18:00 19-05-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fortero
Ну так 2-мя постами выше всё подробно изложено и разжёвано.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 18:24 19-05-2014
fortero

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну так 2-мя постами выше всё подробно изложено и разжёвано.
 
И нечего не работает...

Всего записей: 6 | Зарегистр. 19-05-2014 | Отправлено: 00:40 20-05-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fortero
Это означает что у Вас работает на машине dhclient с опцией supersede dhcp-server-identifier 255.255.255.255; и при этом в дампе трафика Вы наблюдаете отправленные unicast пакеты на адрес dhcp сервера?

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 13:56 20-05-2014
fortero

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как должен выглядить unicast? ip:68 to ip_gw:67
 
У мееня ткое ощущение что он неуспевает иногда так как это случаетса раз в час при оренде ip раз в 10 мин.

Всего записей: 6 | Зарегистр. 19-05-2014 | Отправлено: 10:10 21-05-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fortero
Да, unicast пакет это тот который идёт на один конкретный адрес.
 
Что значит "не успевает"? Судя по тому что Вы написали, Ваш клиент не обрабатывает опцию lease time. Попробуйте запускать dhclient с опцией -v и посмотреть что он пишет в лог.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 10:45 21-05-2014 | Исправлено: Alukardd, 10:46 21-05-2014
fortero

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...

Всего записей: 6 | Зарегистр. 19-05-2014 | Отправлено: 10:42 22-05-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fortero
Ну так у Вас клиент стучится на unicast адрес, и изредка бродакстит. Это "изредка" Вам как и многим другим не хватает. Судя по всему Ваш клиент либо не воспринял конфиг описанный выше, либо Вы что-то недоделали.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 18:03 22-05-2014
fortero

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...

Всего записей: 6 | Зарегистр. 19-05-2014 | Отправлено: 20:56 22-05-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fortero
Первое, что меня смущает во всём этом деле это то, что в rfc2131 в секции 4.3.6 сказано, что RENEWING пакет должен быть unicast (алгоритм начинает работать по наступлению времени T1).
Про времена описано в секции 4.4.5. T1 = 0.5 лизы, T2 = 0.875 лизы.
 
Почему у Вас dhclient42 не работает это надо разбираться отдельно.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 23:55 22-05-2014
fortero

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Самое интересное не одна из версий из портов isc-dhcp не работает. И на ubunte не работает((( Хотя раньше работала...

Всего записей: 6 | Зарегистр. 19-05-2014 | Отправлено: 23:58 22-05-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » UNIX » РЕШЕНО. Заставить dhclient FreeBSD брать в renew или rebind


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru