До прошлой ночи моя система UBUNTU 20.04 нормально работала с этим файлом конфигурации в /etc/netplan/01-network-manager-all.yaml.
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.1.6/24
gateway4: 192.168.1.254
nameservers:
addresses: [192.168.1.2]
Это отлично работало в течение нескольких лет, но где-то вечером соединение с 192.168.1.6 было потеряно с других серверов (я знаю, потому что у меня были ssh-соединения, которые были прерваны ночью).
В ходе расследования я обнаружил, что у (обычно безголового) сервера был новый IP-адрес (.92, а не .6), и, по-видимому, этот файл конфигурации больше не применим.
Я обнаружил, что network-manager находится в каталоге /etc/init.d/, что, похоже, означает, что по какой-то причине система теперь игнорирует предыдущую конфигурацию. Для меня загадка, почему это вдруг изменилось.
Во всяком случае, я нашел, как настроить NetworkManager для получения желаемого результата, и придумал это, которое я поместил в (новый файл) /etc/NetworkManager/conf.d/ethernet.conf:
[802-3-ethernet]
auto-negotiate=true
mac-address=b4:2e:99:a2:58:77
[connection]
id=Wired connection 1
uuid=06563f32-7cd9-3ee1-ac71-e5bb775a4840
type=802-3-ethernet
timestamp=0
[ipv6]
method=ignore
[ipv4]
method=manual
dns=192.168.1.2
address1=192.168.1.6/24,192.168.1.254
(Я получил значение uuid из «nmcli conn show», а MAC-адрес из «ip a show eth0»)
dennis@velmicro:/etc/NetworkManager 01/10 10:01:12
> nmcli conn show
NAME UUID TYPE DEVICE
Wired connection 1 06563f32-7cd9-3ee1-ac71-e5bb775a4840 ethernet eth0
ls2021.lovelady.com a4fa8d23-a06d-4955-bfd9-5d7de76584c2 wifi wlan0
dennis@velmicro:/etc/NetworkManager 01/10 10:01:30
> ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether b4:2e:99:a2:58:77 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.92/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
valid_lft 84428sec preferred_lft 84428sec
Вот как выглядит файл /etc/NetworkManager/NetworkManager.conf:
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=false
[device]
wifi.scan-rand-mac-address=no
[keyfile]
unmanaged-devices=*,except:type:wifi,except:type:wwan,except:type:ethernet
Перезапуск NetworkManager и даже полная перезагрузка не приводят к ошибкам, но конфигурация явно игнорируется: адрес 192.168.1.92 сохраняется.
Чего мне не хватает, чтобы сделать этот системный статический IP адресом, который мне нужен?
Бонусные баллы: как мне определить, что вызвало внезапное (очевидное) переключение на NetworkManager из netplan?
Следующие команды, введенные в командной строке от имени пользователя root, решили эту проблему:
nmcli con modify 06563f32-7cd9-3ee1-ac71-e5bb775a4840 ipv4.address 192.168.1.6/24
nmcli con modify 06563f32-7cd9-3ee1-ac71-e5bb775a4840 ipv4.gateway 192.168.1.254
nmcli con modify 06563f32-7cd9-3ee1-ac71-e5bb775a4840 ipv4.dns "192.168.1.2"
nmcli con modify 06563f32-7cd9-3ee1-ac71-e5bb775a4840 ipv4.method manual
nmcli con modify 06563f32-7cd9-3ee1-ac71-e5bb775a4840 ipv4.dns-search "lovelady.com"
nmcli con modify 06563f32-7cd9-3ee1-ac71-e5bb775a4840 ipv6.method disabled
nmcli connection up 06563f32-7cd9-3ee1-ac71-e5bb775a4840
После выполнения этих команд в /etc/NetworkManager/system-connections/Wired\connection\ 1.nmconnection можно найти следующую конфигурацию (она была создана для меня)
[connection]
id=Wired connection 1
uuid=06563f32-7cd9-3ee1-ac71-e5bb775a4840
type=ethernet
autoconnect-priority=-999
interface-name=eth0
permissions=
timestamp=1673626973
[ethernet]
mac-address-blacklist=
[ipv4]
address1=192.168.1.6/24,192.168.1.254
dns=192.168.1.2;
dns-search=lovelady.com;
method=manual
[ipv6]
method=disabled
[proxy]
Размещение конфигурации устройства в структуре /etc/NetworkManager/conf.d было ошибкой. Никакие конфигурации устройств не должны помещаться в этот каталог.
Команда journalctl -u NetworkManager.service (исполняемая любым пользователем) в конечном итоге помогла выяснить, что происходит, и почему созданный мной файл конфигурации не дал желаемого эффекта.
Все конфигурации устройств должны располагаться в /etc/NetworkManager/system-connections/ и в идеале должны создаваться с помощью последовательности команд nmcli, как указано выше.
Это устройство теперь (снова) настроено так, как мне нравится. Обратите внимание, что прежний файл конфигурации (/etc/netplan/01-network-manager-all.yaml) больше не используется системой по неизвестной причине. ls -lu /etc/netplan/01* показывает, что он не читался несколько дней, несмотря на серию перезагрузок.