LINUX.ORG.RU
ФорумAdmin

dhcpcd WTF???


0

0

Не столь давно решил переползти с ISC dhclient на dhcpcd (собственно, недавний эпик фейл был последней каплей).

Конфигурация сети у меня такая

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
METRIC=10
USERCTL=yes
RESOLV_MODS=yes
LINK_DETECTION_DELAY=6
DHCP_CLIENT=dhcpcd
PEERDNS=no
PEERYP=yes
PEERNTPD=no
(PEERDNS пришлось поставить в no, так как dhcpcd устраивал безобразные драки с resolvconf из-за resolv.conf - это вообще отдельный вопрос).

До определенного момента все работало нормально. Вот вывод /etc/dhcpc/dhcpcd-eth0.info в штатном режиме:

IPADDR=xx.xx.xx.xx
NETMASK=255.255.255.0
NETWORK=xx.xx.xx.0
BROADCAST=xx.xx.xx.255
GATEWAY=xx.xx.xx.1
DOMAIN='aaa.aa'
DNS=yy.yy.yy.yy,zz.zz.zz.zz
DHCPSID=10.100.32.3
DHCPGIADDR=10.132.0.1
DHCPSIADDR=10.100.32.3
DHCPCHADDR=bb:bb:bb:bb:bb:bb
DHCPSHADDR=00:01:5C:31:4C:C0
DHCPSNAME=''
LEASETIME=86400
RENEWALTIME=86100
REBINDTIME=86100
INTERFACE='eth0'
CLASSID='Linux 2.6.aaa'
CLIENTID=bb:bb:bb:bb:bb:bb

Но! При перезагрузке кабельного модема (arris touchstone) модем на короткое время выдает внутренний айпишник без гейта (пока он к серваку прова не подконнектился). Выглядит это так:

IPADDR=192.168.100.2
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255
DNS=192.168.100.1
DHCPSID=192.168.100.1
DHCPGIADDR=0.0.0.0
DHCPSIADDR=0.0.0.0
DHCPCHADDR=bb:bb:bb:bb:bb:bb
DHCPSHADDR=00:15:CE:30:D3:2D
DHCPSNAME=''
LEASETIME=20
RENEWALTIME=10
REBINDTIME=17
INTERFACE='eth0'
CLASSID='Linux 2.6.aaa'
CLIENTID=bb:bb:bb:bb:bb:bb
после чего dhcpcd замирает навсегда в таком положении, даже если модем уже подсоединился к прову и выдал нормальный айпишник. Рестарт не помогает. Однако если переключиться на dhclient или статику - все нормально работает. Если удалить /etc/dhcpc/dhcpcd-eth0.cache и рестартануть dhcpcd - все поднимается.

dhclient такую ситуацию отрабатывает нормально.

Итого: для dhcpcd собственный кеш важнее данных от DHCP-сервера? Т.е. он глючное УГ? Или я в чем-то неправ?

★★★★

насколько я знаю, задача dhcpd - раздавать ip а не получать. а получать - задача dhclientа.

Komintern ★★★★★
()

> (PEERDNS пришлось поставить в no, так как dhcpcd устраивал безобразные драки с resolvconf из-за resolv.conf - это вообще отдельный вопрос).

Это проблемы мейнтейнеров дистрибутива. Разработчик dhcpcd для подобных вещей предусмотрел hook-скрипты. Мейнтейнеры конкретного дистрибутива должны написать скрипт, который бы обновлял resolv.conf так, чтобы это не мешало работе других программ.

> Итого: для dhcpcd собственный кеш важнее данных от DHCP-сервера? Т.е. он глючное УГ? Или я в чем-то неправ?


Для начала неплохо бы узнать версию dhcpcd. А судя по

> /etc/dhcpc/dhcpcd-eth0.cache


она не шибко свежая =).

И покажи, что выдаёт dhcpcd, запущенный вручную с ключём -d или --debug.

Deleted
()
Ответ на: комментарий от Komintern

> насколько я знаю, задача dhcpd - раздавать ip а не получать. а получать - задача dhclientа.

Автор темы спрашивает про dhcp*C*d, а не dhcpd

Deleted
()
Ответ на: комментарий от Deleted

>Мейнтейнеры конкретного дистрибутива должны написать скрипт, который бы обновлял resolv.conf так, чтобы это не мешало работе других программ.

resolvconf - это программа, которая, будучи установленной, должна единолично поддерживать файл resolv.conf, получая информацию об NS-серверах от DHCP-клиента. В паре с dhclient у нее это отлично получалось, а вот с dhcpcd все как-то печально.

>Для начала неплохо бы узнать версию dhcpcd.


1.3.22

>И покажи, что выдаёт dhcpcd, запущенный вручную с ключём -d или --debug.


Вручную он всего лишь запрашивает айпшиник и почти сразу вырубается.
[nnz@imp ~]$ sudo dhcpcd -R -N -D eth0 -d
dhcpcd: MAC address = bb:bb:bb:bb:bb:bb
dhcpcd: your IP address = xx.xx.xx.xx
dhcpcd: orig domainname = aaa.aa
dhcpcd: your domainname = aaa.aa
dhcpcd.exe: interface eth0 has been configured with old IP=xx.xx.xx.xx
По этой причине ситуацию с перезагрузкой модема я воспроизвести не могу.

Как передать ему этот ключ при вызове системой в режиме демона - не знаю. Но кое-какую инфу из логов я выдрал:
Aug 3 01:06:23 imp ifplugd(eth0)[28943]: client: Determining IP information for eth0...dhcpcd.exe: interface eth0 has been configured with old IP=xx.xx.xx.xx
Aug 3 01:06:23 imp dhcpcd.exe: interface eth0 has been configured with old IP=xx.xx.xx.xx
[перезагружаю модем...]
Aug 3 01:06:38 imp dhcpcd[29041]: terminating on signal 15
Aug 3 01:06:38 imp dhcpcd.exe: interface eth0 has been brought down
Aug 3 01:06:42 imp dhcpcd[29512]: DHCP_NAK server response received
Aug 3 01:06:42 imp ifplugd(eth0)[28943]: client: Determining IP information for eth0...dhcpcd.exe: interface eth0 has been configured with new IP=192.168.100.2
Aug 3 01:06:42 imp dhcpcd.exe: interface eth0 has been configured with new IP=192.168.100.2
[еще через несколько секунд модем устанавливает коннект с сервером прова и выдает айпишник, но dhcpcd цинично игнорирует это в течение контрольных 10 минут]
[у меня кончается терпение и я перенастраиваю интерфейс на статику и пишу это пост]

nnz ★★★★
() автор топика
Ответ на: комментарий от nnz

> resolvconf - это программа, которая, будучи установленной, должна единолично поддерживать файл resolv.conf, получая информацию об NS-серверах от DHCP-клиента. В паре с dhclient у нее это отлично получалось, а вот с dhcpcd все как-то печально.

В Gentoo dhcpcd замечательно работает с resolvconf.

> 1.3.22


facepalm.tar.bz2.gz.lzma.lzo.rar.jar.zip!!!!1 0_O_o 8/

После первой версии, dhcpcd был почти полностью переписан, потом у него сменился автор, который тоже уже успел переписать dhcpcd пару раз практически с нуля! Вот тут: http://roy.marples.name/projects/dhcpcd/wiki/DhcpcdDownload лежит версия 5.0.7 (пять точка ноль точка семь).

Дальше не буду даже читать =).

Deleted
()
Ответ на: комментарий от Deleted

Понятно. Значит речь идет о другой программе.

nnz ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.