LINUX.ORG.RU
ФорумAdmin

OpenWRT udhcpc проблемы с получением адреса у провайдера

 , ,


0

1

OpenWRT 19.07.10, Cisco Meraki Z1, udhcpc (должно быть часть busybox 1.30.1-6).

Как указано, проблемы с получением адресса по ethernet wan у DHCP сервера провайдера. Изначально busybox dhcp client совершенно не работал и не желал получать адрес у недоступного мне железа провайдера (один роутер на дом, полагаю). Взять адрес у глупого роутера получалось без проблем, впрочем остальные устройства (в том числе компьютер) не имеют подобную проблему в принципе. После установки dhcpcd, начались страшные конфликты, но адрес каким-то чудом таки достался. Началось спокойное время, где в логе раз в полчаса отображалось обновление того же адреса. Спустя два месяца почти беспрерывной работы, отключился свет на минуту и опять что-то не заладилось, лог стал сыпать попыткой udhcpc взять адрес каждые 3 секунды (по умолчанию) и ответ НЕТ.

# tail -f /var/log/system.log
DATE:11:00:00 daemon.notice netifd: wan (16868): udhcpc: sending select for REMOTE_ADDRESS
DATE:11:00:00 daemon.notice netifd: wan (16868): udhcpc: received DHCP NAK
DATE:11:00:03 daemon.notice netifd: wan (16868): udhcpc: sending select for REMOTE_ADDRESS
DATE:11:00:03 daemon.notice netifd: wan (16868): udhcpc: received DHCP NAK
...


# ps | grep dhcp
 1000 root      2008 S    /sbin/dhcpcd -B -J
16868 root      1208 S    udhcpc -p /var/run/udhcpc-br-wan.pid -s /lib/netif

Верхний демон это свой конфиг, который после запуска утилиты с --last-lease работал кое-как. Но dhcpcd просит ifconfig, а тот скриптами (болтами) прикручен к udhcpc из busybox. Проблема в том что wan получил таки запрашиваемый адрес! Пакеты проходят, сейчас пишу с него, а вот udhcpc не успокаиевается, и dnsmasq не желает отвечать.

# ifstatus wan
{
	"up": false,
	"pending": true,
	"available": true,
	"autostart": true,
	"dynamic": false,
	"proto": "dhcp",
	"device": "br-wan",
	"data": {
		
	}
}

В общем как быть? Кто сталкивался и как решал? Брать еще одну железку с нормальным Линухом и нормальным DHCP клиентом и ставить между - это онанизм. Спрашивал на офиц. форуме, результат нулевой, смени руки, голову, железо, напиши свою прошивку. Может прикрутить скрипт какой-то поверх /sbin/udhcpc который является демоном, похоже. Но ifstatus все равно не увидит поднятия, а значит и остальной функционал тоже неработоспособен. Есть ли вообще вариант воткнуть таки нормальный полноценный DHCP клиент чтоб busybox не влезал куда не просят?

Кратко: udhcpc сыпет запросы железке провайдера и получает НЕТ; потому OpenWRT DNS не раздает. Куда податься?


Может прикрутить скрипт какой-то поверх /sbin/udhcpc который является демоном, похоже. Но ifstatus все равно не увидит поднятия, а значит и остальной функционал тоже неработоспособен.

В udhcpc передаёт информацию путём вызова скрипта, (/lib/netifd/dhcp.script в openwrt). Так что ещё нужно будет написать хуки для dhcpcd, которые бы одни параметры перекладывали в другие (аргументы, переменные среды) и вызывали этот dhcp.script. Кроме вас это никому делать.

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

Спасибо, вспомнил про весь этот заскриптованный геморой, поплакал. Надеялся что будет что-то значительно более простое: скрипт проверяет реальное получение адреса, возвращает 0, появляется радуга, иначе запускает udhcpc но с адекватным временем между запросами и оставшимися аргументами.

turuk
() автор топика