четвер, 5 квітня 2012 р.

Проблема с dhclient'ом для подключения к провайдеру

В один прекрасный день наш провайдер перешел на авторизацию с DHCP.

То есть авторизация идет по MAC адресу, тебе выдаются нормальные настройки если он коректен или выдается ip 10.x.x.x с доступом в только клиентский центр.

 Напомню я использую Linux (дистрибутив Fedora) и проблем как таких не возникало - DHCP так DHCP, подключался нормально.

Но одним чудным февральським днем я никак не мог подключится к и-нету. Видимо руки наших "одминов" с малым радиусом кривизны добрались до DHCP сервера.

В общем неважно. Факт в том что подсоединиться к и-нету я никак не мог а точнее я не мог получить ответ DHCP сервера. Можно было увидеть

# dhclient eth0  -v
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 11
...
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 12
No DHCPOFFERS received.
No working leases in persistent database - sleeping.


через 2 дня все заработало нормально, а через время таже фигня.

ИЧСХ при этом на FreeBSD и на Windows все работало нормально.

ИЧСХ2 при неправильном МАС адрессе сетевой карты я спокойно получал ответ сервера DHCP.

 

Не сильный в премудростях DHCP я пошел гуглить. Что то с первого захода урожай был мал и воз остался там же. Еще и как показало будущее не проанализировал как следует дампы :(

Но второй заход оказался удачным.

Причина оказалась банальна и проста:

microsoft dhcp клиент когда отправляет широковещательный запрос  указывает в запросе параметр dhcp-client-identifier как "01макадрес_карты" (Option 61). ИЧСХ фряха туда же.

линуксовый dhclient по умолчанию так не делает.

Крепко выругавшись несколько раз  исправляю ситуацию редактируя конфиг dhclient'a (/etc/dhcp/dhclient.conf он у меня был пуст)  добавляю строку:
send dhcp-client-identifier 01:00:26:XX:XX:XX:XX;

где "01" префикс, а 00:26:XX:XX:XX:XX - МAC карты.

Ну и повторяем попытку

dhclient eth0 -v
...
Listening on LPF/eth0/00:26:xx:xx:xx:xx
Sending on   LPF/eth0//00:26:xx:xx:xx:xx
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
DHCPOFFER from x1.x2.x3.x4               #dhcp cервер ответил
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from x1.x2.x3.x4
bound to y1.y2.y3.y4  -- renewal in 33384 seconds.  # я получил свой ip

Бинго!


Чтиво по теме и источники инфы:
http://forum.radeon.ru/viewtopic.php?p=591530 - тут было увидено то что я искал :)
http://www.opennet.ru/tips/info/2539.shtml - в общем мало касается сабжа, но тоже инструкция для работы с кривыми провайдерами (по ссылке для Beeline/Corbina)

RFC стандарты
http://tools.ietf.org/rfc/rfc1497 - RFC 1497
http://tools.ietf.org/rfc/rfc1533 - RFC 1533
http://tools.ietf.org/html/rfc1534 - RFC 1534
http://tools.ietf.org/html/rfc2131 - RFC 2131 (std1)
http://tools.ietf.org/html/rfc2132 - RFC 2132 (std1)
http://tools.ietf.org/html/rfc3315 - RFC 3315 (ipv6)
http://tools.ietf.org/html/rfc3397 - RFC 3397
http://tools.ietf.org/html/rfc4361 - RFC 4361
http://tools.ietf.org/html/rfc4388 - RFC 4388
http://tools.ietf.org/html/rfc6148 - RFC 6148

http://www.networksorcery.com/enp/protocol/bootp/options.htm  - опции в виде листа
http://technet.microsoft.com/en-us/library/cc977367.aspx - "в ногу со временем"

Немає коментарів:

Дописати коментар