3
11月
2023
15:25

netplan как замена /etc /network /interfaces

3 11月 2023 15:25

Способ настройки сети с помощью файла interfaces устарел.

Начало

Утилита netplan служит для конфигурации сети. Она преобразует файл конфигурации формата YAML (структуированный текстовый файл) в настройки для сетевой службы SystemD, сервиса systemd-networkd.
Netplan был представлен в Ubuntu 18.04 "Bionic Beaver" в 2017 году, затем он постепенно вошёл в обиход: присутствует в ОС 20.04 "Focal Fossa". В Ubuntu 22.04 "Jammy Jallyfish" и Linux Mint 21.2 "Victoria" компонент netplan включен по умолчанию. Мало того, файл /etc/network/interfaces отсутствует, если Вы не повышали версию методом sudo do-release-upgrade (из пакета update-manager-core) или sudo mintupgrade (из одноименного пакета).

Конфигурация Netplan может быть не всегда использоваться на настольных операционных системах, но всегда применяется на серверных вариантах ОС Ubuntu начиная с 22.04. Дело в том, что отключение netplan требует вмешательства в параметры ядра (в Интернете есть информация о способах отключении netplan).

На настольных ПК по умолчанию netplan передает управление сетью NetworkManager (см. ниже — "Конфигурация natplan по умолчанию").

Чтобы netplan заработал, нужна версия ОС 18.04 и выше. В версиях 18.04 и 20.04 для работы с конфигурацией отличной от штатной нужно принудительно запустить сетевую службу systemd-networkd. (В 22.04 она запускается после установки по умолчанию).

sudo systemctl start systemd-networkd
sudo systemctl enable systemd-networkd

Запуск службы systemd-networkd для работы netplan обязателен для работы с конфигурациями динамического распределения DHCP и статических IP-адресов, и иных вариантов, описанных в *config.yaml.

1. Конфигурация netplan по умолчанию

При использовании systemd-networkd, перестаёт восприниматься конфигурация /etc/network/interfaces и данный файл может отсутствовать в системе.

Конфигурация в виде yaml файла лежит в папке /etc/netplan.

При чистой установке системы, например, Linux Green, netplan настроен на передачу управления настройками графическому компоненту NetworkManager (настраивается с помощью апплета в системном лотке на панели задач).

Конфигурация netplan по умолчанию:

Файл /etc/netplan/1-network-manager-all.yaml:

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

Применение конфигурации - при помощи команды:

sudo netplan apply

2. Конфигурация netplan для DHCP

Чтобы настраивать конфигурацию при помощи файлов netplan, а не графического интерфейса NetworkManager, нужно в каталоге /etc/netplan/ в файле YAML строку "renderer" с "NetworkManager" на "networked". При этом апплет "NetworkManager" в системном лотке утрачивает возможность управления сетью и показывает значок "разорванное соединение", независимот от того, сеть есть или сети нет.

Если в сети используются динамические IP-адреса, на марштутизаторе настроен сервис DHCP, а на клиенте используется следующая конфигурация netplan:

Файл /etc/netplan/00-installer-config.yaml для DHCP

network:
  renderer: networkd
  ethernets:
    enp1s10:
      dhcp4: true
  version: 2

где имя сетевой карты enp1s10 в моём случае (внешняя сетевая карта), а для встроенных может быть enp1s0 и enp2s0.
Если роутер умеет раздавать IP-адреса ещё и по протоколу IPv6, ниже dhcp4: true пишем dhcp6: true с таким же отступом (символы табуляции или пробелы важны)!

Применение конфигурации:

sudo netplan apply

3. Конфигурация netplan для статического IP адреса

Отступы в файле имеют большое значение. Ниже пример корректного файла настройки netplan для статического IP-адреса.

Файл /etc/netplan/000-installer-config.yaml для статического IP-адреса:

network:
  renderer: networkd
  ethernets:
    enp1s10:
      dhcp4: false
      dhcp6: false
      optional: false
      addresses: [192.168.1.2/24]
      nameservers:
        addresses: [192.168.1.1,8.8.8.8]
      routes:
        - to: default
          via: 192.168.1.1
          metric: 100
  version: 2

Где:

  • optional = false устройство не нужно для загрузки

  • optional = true устройство необходимо для загрузки.
    Если устройство отмечено как необязательное (optional), сервис networkd не будет его ждать.
    Значение по умолчанию - false.

  • addresses - может включать несколько IP-адресов, например, [192.168.14.2/24, "2001:1::2/64"]

Параметры конфигурации gateway4 и gateway6 устарели, вместо них используются "Default routes" следующего вида:

      routes:
        - to: default
          via: 192.168.1.1
          metric: 100

Не забудьте применить конфигурацию:

sudo netplan apply

Чтобы проверить конфигурацию сети для принятия решения о её корректности, вместо apply нужно использовать try. пользователю даётся 120 секунд, чтобы проверить работу сети. Если нажать Ctrl+C или истечёт время таймаута, конфигурация будет отменена. Для применения конфигурации нажмите Enter.

4. Установка netplan в Debian

(Дополнение от 04.11.2023):

su -
apt update
apt install netplan

5. Как программно узнать, какой механизм управления сетью используется?

Определить использование netplan можно командами:

systemctl status systemd-networkd

(Проверка состояния службы systemd-networkd).

cat /run/network/ifstate

(Для netplan будет lo=lo).

Настройка сети с помощью NetworkManager

Если же файл /etc/netplan/*.yaml указывает на графическую утилиту NetworkManager, то текущие настройки сети нужно смотреть файл конфигурации:
/etc/NetworkManager/NetworkManager.conf

Если устройство не управляется NetworkManager:

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
match-device=interface-name:*

Для управления устройством посредством NetworkManager (из строки состояния рядом с панелей задач):

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=true

[device]
match-device=interface-name:*

Не забудьте перезапустить службу NetworkManager:

sudo systemctl restart NetworkManager

Для управляемого устройства (managed = true) появляются дополнительные пункты меню "Отключить", "ifupdown" и становится доступен раздел настроек "Параметры соединений":

  1. в системном лотке нажимаем на значок Network Manager и выбираем название сетевой карты
  2. нижний пункт меню "Параметры соединений..." предназначен для изменения настроек (MTU, Wake-on-Lan, согласование каналов, скорость, прокси, параметры IPv4 - DHCP или вручную, дополнительные статические адреса, серверы DNS (для статического IP-адреса), дополнительные серверы DNS (для динамического IP-адреса), поисковые домены, параметры IPv6).

Дополнение: от 01.03.2025: также необходимо "поднять" подключение с помощью апплета NetworkManager или утилиты командной строки nmcli

nmcli connection show
nmcli connection up "Проводное подключение 1"

Дополнение от 30.07.2024. После настройки netplan, следует переименовать файл /etc/network/interfaces, перезапустить службы сети и выполнить проверку IP-адреса (он должен смениться на указанный в настройках соединения в Network Manager или в YAML-файле конфигурации /etc/netplan/*.yaml).

sudo mv /etc/network/interfaces /etc/network/interfaces.old
sudo systemctl restart networking
systemctl status systemd-networkd
ip addr

Вывод

В данной статье, как и во множестве других, есть примеры настройки netplan как для DHCP, так и простого статического IP. Файл interfaces устарел. Используйте netplan. Netplan использует YAML для конфигурации. Файл /etc/network/interfaces следует удалить во избежание путаницы.


Источники:



相关出版物