У меня есть небольшой вопрос.
Предположим, у меня есть сервер DHCP0 (192.168.1.X) и сервер DHCP1 (10.0.1.X).
У меня есть плата под управлением Linux с connman. Подключите мою плату к DHCP0, запустите ее. Connman запускается и устанавливает IP-адрес по DHCP на интерфейс eth0: 192.168.1.2
Отключите плату от DHCP0 и подключите ее к DHCP1.
Почему IP-адрес не обновляется в 10.0.1.X на eth0? Видите, у меня такое же поведение на Ubuntu 18.04 без connman. Полагаю, это нормальное поведение. Так могу ли я настроить connman для обновления DHCP IP-адреса при "link up"?
Чтобы обновить IP-адрес, мне нужно
$ ifconfig eth0 down
$ ifconfig eth0 up
или
$ systemctl restart connman
Спасибо за ваше возвращение.
Сильвен
решение1
Забыл сказать, что у нас на плате есть коммутатор. 2 порта включены на GMAC0 для eth1 и 3 порта включены на GMAC1 для eth0. Так что для eth1 мы видим два порта коммутатора sw0p0 и sw0p1. Когда я отключаю кабель, с помощью ip monitor link я вижу, что это sw0p1, который отключен, а не eth1
Это довольно важное упущение.
Ваш eth0не являетсяподключенный напрямую к DHCP-серверу – это просто "порт ЦП" на внутреннем коммутаторе GMAC1. Даже если он проходит через внутренний коммутатор, онвсе ещепроходит через коммутатор — и это имеет тот же эффект, что и связь «ЦП↔коммутатор» остается полностью независимой от связи «коммутатор↔DHCP-сервер».
Таким образом, на eth0 нет события «подключение», поскольку соединение никогда не разрывается!
Возможно, что внутренний драйвер коммутатора может поддерживать какой-либо метод распространения состояния канала с одного внешнего порта на внутренний порт... В качестве альтернативы, если «sw0p1» отображается как реальный сетевой интерфейс, то пользовательское пространство, такое какifplugdможет использоваться для мониторинга состояния его соединения и соответствующего перезапуска connman.