Я учусь пользоваться нетпланом. При написании файла конфигурации YAML мне нужно знать, какой рендерер использовать: NetworkManager или networkd.
Как узнать, запущен ли у меня NetworkManager или сетевой интерфейс?
По умолчанию настольная версия Ubuntu поставлется с Администратором сети. В большинстве настольных сред это делает хорошее задание. В этом случае netplan файл должен передать сети Администратору сети. Как правило, соответствующий файл /etc/netplan/01-network-manager-all.yaml
Это читает:
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
В выпуске сервера Ubuntu, так как никакая настольная среда не установлена по умолчанию; т.е. Gnome, Единица, Уэйленд, KDE, и т.д., Администратор сети не возможен и поэтому не установленный. В версиях 17.10 и позже, сети обрабатываются одним только netplan. Типичный соответствующий файл /etc/netplan/01-netcfg.yaml
Это обычно читает:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: yes
... где enp0s3 является Вашим соответствующим интерфейсом. Это позволит интернет-соединение DHCP, пока полная и дальнейшая конфигурация не сможет быть произведена путем редактирования yaml файла и после с:
sudo netplan apply
Насколько я могу судить, было 3 подхода к сетям в Linux:
1) Самый старый использует файл /etc/network/interfaces
и сценарии ifup
/ifdown
для управления этими интерфейсами.
2) После этого появился демон network-manager
(часто пишется как Network-Manager
), который имеет доступные интерфейсы GUI.
3) И совсем недавно появился демон systemd-networkd
(иногда сокращенно просто «networkd»), который основан на systemd
юнит-файлах.
Чтобы увидеть, как управляется ваша сеть, сначала вы должны знать, инициализируется ли ваша система с помощью systemd
или более старой init
в качестве первого процесса. (Debian и Ubuntu, например, теперь используют systemd
вместо init
).
Вы можете проверить, использует ли ваша система systemd
с помощью этого:
pidof systemd && echo "systemd" || echo "other"
Таким образом, если вы НЕ используете systemd
, то, очевидно, вы можете исключить systemd-networkd
.
Если вы используете systemd
, проверьте, какие демоны сетевых служб запущены, с помощью этих двух команд:
sudo service systemd-networkd status
sudo service network-manager status
Вы увидите либо Active: active (running)
, либо Активный: неактивный (мертвый)
сообщается для каждого из них.
Обратите внимание, что вы также можете запускать эти более новые команды, но очевидно, что если у вас нет systemd, они не будут работать для вас:
systemctl status systemd-networkd
systemctl status network-manager
Но вы еще не закончили...
Наконец, даже если один из этих двух демонов работает, это не означает, что они управляют вашими сетевыми аппаратными интерфейсами, поскольку существуют исключения.
Сначала все интерфейсы, определенные в /etc/network/interfaces
, игнорируются сетевым менеджером. (man 5 NetworkManager
)
Далее, systemd-networkd
будет управлять сетевыми адресами и маршрутами только для любой ссылки, для которой он находит файл .network с соответствующим [ раздел Match]. (man 8 systemd-networkd
).