воскресенье, 14 декабря 2025 г.

NetworkManager перестал принимать одинаковый IP для проводной и беспроводной сетей

Подключил проводную сеть к ноутбуку для обновления OpenWrt в домашней Wifi сети и заметил что NetworkManager долго "крутит" иконку настройки нового подключения в трее. Полез в логи посмотреть что там происходит и нашёл такое

Dec 13 11:29:34 XXXXXXXXXX NetworkManager[978]: <warn>  [1765614574.8401] device (enp0s31f6): IP address 192.168.XX.XX cannot be configured because it is already in use in the network by host XX:XX:XX:XX:XX:XX
Dec 13 11:30:04 XXXXXXXXXX NetworkManager[978]: <warn>  [1765614604.9456] device (enp0s31f6): IP address 192.168.XX.XX cannot be configured because it is already in use in the network by host XX:XX:XX:XX:XX:XX

Т.е. он отказывается назначить IP адрес, который ему выдал DHCP сервер, т.к. этот адрес уже используется на беспроводном интерфейсе.

Тут нужно сделать пояснение что такое назначение адресов сделано намеренно и одинаковый IP выдаётся на проводной и беспроводной интерфейсы (не все DHCP сервера позволяют делать такое). В настройках маршрутизации у интерфейсов разный приоритет и при наличии подключения через проводную сеть будет использоваться она, а при отключении пакеты идут через беспроводной интерфейс без разрыва соединений.

Таким образом можно переместиться с ноутбуком в более тихое место без прерывания звонка или подключить проводную сеть если нужно быстро сделать резервную копию или передать большой файл.

Последний раз я пользовался этим ещё до обновления на Debian 13 и похоже нужно копаться в настройках NetworkManager чтобы вернуть прежнее поведение либо настроить его аналог иначе.

Поискав в интернете нашёл что в NetworkManager за это поведение отвечает Address Conflict Detection.

Выключить его можно либо глобально

$ cat <<_EOF_ | sudo tee /etc/NetworkManager/conf.d/50-no-ipv4-dad.conf
[connection-dad-default]
ipv4.dad-timeout=0
_EOF_

$ sudo systemctl restart NetworkManager.service

Либо для отдельного соединения

$ nmcli connection modify Ethernet\ connection ipv4.dad-timeout 0

После этого оба соединения снова активируются одновременно и получают одинаковый IP адрес.

$ ip r
default via 192.168.XX.Y dev enp0s31f6 proto dhcp src 192.168.XX.ZZ metric 100 
default via 192.168.XX.Y dev wlp1s0 proto dhcp src 192.168.XX.ZZ metric 600 
192.168.XX.0/24 dev enp0s31f6 proto kernel scope link src 192.168.XX.ZZ metric 100 
192.168.XX.0/24 dev wlp1s0 proto kernel scope link src 192.168.XX.ZZ metric 600

Комментариев нет:

Отправить комментарий