Начиная с Ubuntu 18.04 конфигурирование сети выполняется с помощью утилиты netplan. В других системах на базе deb, например, Debian, она может быть установлена командой:
apt-get install netplan
В данной статье рассмотрим принцип и примеры настройки сети с помощью netplan.
Файл для настройки сети находится в каталоге /etc/netplan/. Имя файла может быть любым, на конце должно быть расширение yaml, например:
vi /etc/netplan/01-netcfg.yaml
* чаще всего, это файл 50-cloud-init.yaml или 01-netcfg.yaml.
YAML представляет из себя текстовый формат файла. Вложенные параметры должны иметь отступы табуляциями или пробелами, количество которых имеет важное значение (если поставить лишний пробел у одного из нескольких параметров, мы получим сообщение об ошибке «expected mapping»).
Разберем пример настройки 3-х сетевых интерфейсов. Два из них будут с IP-адресами назначенными вручную (static IP), один — по DHCP.
Приводим файл к следующему виду:
network: version: 2 renderer: networkd ethernets: ens3: dhcp4: true ens7: dhcp4: no addresses: [192.168.122.195/24] gateway4: 192.168.122.1 mtu: 1500 nameservers: addresses: [8.8.8.8, 77.88.8.8] search: [ admins24.local ] ens9: dhcp4: no addresses: [192.168.1.10/24, 192.168.1.20/24] nameservers: addresses: – 8.8.8.8 – 77.88.8.8 search: [ admins24.local, admins24.com ]
* где:
Для применения настроек необходимо запустить команду netplan. Ее синтаксис:
netplan <опции> <команда>
Для проверки нашего конфигурационного файла вводим:
netplan –debug generate
Для применения настроек вводим:
netplan apply
* данную команду мы вводим также для перечитывания настроек и перезапуска сети (вместо привычных restart и reload).
Статический маршрут задается для конкретного интерфейса, также в конфигурационном файле netplan, например:
network: version: 2 renderer: networkd ethernets: ens9: dhcp4: no addresses: 192.168.1.10/24 nameservers: addresses: – 8.8.8.8 – 77.88.8.8 routes: – to: 192.168.0.0/24 via: 192.168.1.1 on-link: true
* в данном примере мы настроили маршрут для сетевого интерфейса ens9. Данная настройка задается параметром routes:
С помощью bonds мы можем объединить интерфейсы с целью обеспечения отказоустойчивости и/или повышения пропускной способности.
Пример настройки:
network: version: 2 renderer: networkd ethernets: ens2f0: {} ens2f1: {} bonds: bond0: dhcp4: no interfaces: – ens2f0 – ens2f1 parameters: mode: active-backup addresses: – 192.168.122.195/24 gateway4: 192.168.122.1 mtu: 1500 nameservers: addresses: – 8.8.8.8 – 77.88.8.8
* в данном примере мы объединяем физические интерфейсы ens2f0 и ens2f1; настройка parameters mode указываем на тип объединения — доступны варианты:
Сетевой мост позволяет пропускать сетевой трафик через другой сетевой адаптер. Это можно применить, например, для организации хоста виртуальных машин (для трансфера трафика к виртуальным машинам KVM через единственный сетевой интерфейс сервера).
network: version: 2 renderer: networkd ethernets: ens2f0: {} bridges: br0: macaddress: ce:ce:ce:45:45:45 interfaces: – ens2f0 addresses: – 192.168.1.15/24 gateway4: nameservers: addresses: – 77.88.8.8 – 8.8.8.8 mtu: 1500 parameters: stp: true forward-delay: 4 dhcp4: false dhcp6: false
Подробнее про настройку сетвого моста для KVM в инструкции Настройка KVM на Ubuntu Server.
Также мы можем настроить тегированный интерфейс vlan:
network: version: 2 renderer: networkd ethernets: ens3: {} vlans: vlan5: id: 5 link: ens3 dhcp4: no addresses: [10.0.0.15/24] gateway: 10.0.0.1
* в данном примере мы настроили интерфейс с тегом 5 на физическом адаптере ens3.
Для подключения к беспроводной сети задаем следующие настройки:
network: version: 2 renderer: networkd wifis: wlp2s0b1: dhcp4: no dhcp6: no addresses: [192.168.2.10/24] gateway4: 192.168.2.1 nameservers: addresses: [192.168.2.1, 77.88.8.8] access-points: <имя WiFi сети (SSID)>: password: wifi_password
При желании, мы можем вернуть привычный принцип настройки сети. Для этого выполним несколько шагов.
1. Открываем настройку grub:
vi /etc/default/grub
2. Находим опцию GRUB_CMDLINE_LINUX и дописываем в нее параметр:
GRUB_CMDLINE_LINUX=”netcfg/do_not_use_netplan=true”
* если GRUB_CMDLINE_LINUX содержит другие настройки, то наш параметр добавляем через пробел.
3. Устанавливаем пакет ifupdown:
apt-get install ifupdown
4. Настраиваем сеть в файле:
vi /etc/network/interfaces
… например:
auto loiface lo inet loopback
auto ens5iface ens5 inet dhcp
* в данном примере мы настраиваем сетевой интерфейс ens5 на автоматическое получение IP-адреса.
5. Применяем настройки загрузчика:
update-grub
И перезагружаем систему:
shutdown -r now
Ошибка появляется при проверке (generate) или применении (apply) настроек сети.
Причина: ошибка синтаксиса YAML.
Решение: внимательно смотрим на количество отступов, которое сделано для строки xxx. Количество пробелов должно точно соответствовать количеству в других строках. Если параметр вложенный, он также должен отделяться от родителя нужным количеством пробелов. Пример неправильной настройки:
network: version: 2 renderer: networkd
* обратите внимание, что version имеет 4 пробела для отступа, а renderer — 2. Так как version и renderer равнозначные параметры для родителя network, они должны иметь одинаковое количество пробелов.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies