Найти в Дзене
Linux | Network | DevOps

Разбираемся с Netplan: как настраивать сеть в Ubuntu

Что же такое Netplan — это новая утилита для настройки сети в Ubuntu, по
крайне мере «в других дистрибутивах я не встречал подобного».
Существенное отличие Netplan является то, что конфигурация пишется на
языке YAML, разработчики решили идти в ногу со временем. Основной минус этого языка в том что он очень чувствителен к пробелам, давайте же рассмотрим конфиг на примере.
Файлы конфигурации находятся по пути /etc/netplan/имяфайла.yaml, между каждым блоком когда должно быть + 2 пробела.
1) Стандартная шапка выглядит так: network:
version: 2
renderer: networkd
ethernets:
enp3s0f0:
dhcp4:no Давайте рассмотрим что мы сейчас сделали: network: — это блок начало конфигурации. renderer: networkd — здесь мы указываем сетевой менеджер который будем использовать, это либо networkd либо NetworkManager version: 2 — тут, как я понял, версия YAML. ethernets: — этот блок говорит о том, что будем конфигурировать ethernet протокол. enps0f0: — указываем какой сетевой адаптер будем к

Что же такое Netplan — это новая утилита для настройки сети в Ubuntu, по
крайне мере «в других дистрибутивах я не встречал подобного».
Существенное отличие Netplan является то, что конфигурация пишется на
языке
YAML, разработчики решили идти в ногу со временем. Основной минус этого языка в том что он очень чувствителен к пробелам, давайте же рассмотрим конфиг на примере.

Файлы конфигурации находятся по пути /etc/netplan/имяфайла.yaml, между каждым блоком когда должно быть + 2 пробела.

1) Стандартная шапка выглядит так:

network:
version: 2
renderer: networkd
ethernets:
enp3s0f0:
dhcp4:no

Давайте рассмотрим что мы сейчас сделали:

  • network: — это блок начало конфигурации.
  • renderer: networkd — здесь мы указываем сетевой менеджер который будем использовать, это либо networkd либо NetworkManager
  • version: 2 — тут, как я понял, версия YAML.
  • ethernets: — этот блок говорит о том, что будем конфигурировать ethernet протокол.
  • enps0f0: — указываем какой сетевой адаптер будем конфигурировать.
  • dhcp4:no — отключаем DHCP IPv4, для IPv6, dhcp6 соответственно

2) Попробуем назначить ip адреса:

enp3s0f0:
dhcp4:no
macaddress: bb:11:13:ab:ff:32
addresses: [10.10.10.2/24, 10.10.10.3/24]
gateway4: 10.10.10.1
nameservers:
addresses: 8.8.8.8

Здесь мы задали мак, ipv4, шлюз и dns сервер. Заметьте, что если нам
нужно больше одного ip адреса, то мы пишем их через запятую с
обязательным пробелом после.



3)А что если нам нужен
bonding?

bonds:
bond0:
dhcp4: no
interfaces: [enp3s0f0, enp3s0f1]
parameters:
mode: 802.3ad
mii-monitor-interval: 1

  • bonds: — блок, поясняющий что мы будем настраивать bonding.
  • bond0: — произвольное имя интерфейса.
  • interfaces: — набор интерфейсов собираемых в bond-динг, ''как
    оговаривалось ранее если параметров несколько описываем их в квадратных
    скобках".
  • parameters: — описываем блок настройки параметров
  • mode: — указываем мод по которому будет работать bonding.
  • mii-monitor-interval: — задаем интервал мониторинга 1 сек.

Внутри блока с именем bond-а также можно конфигурировать такие параметры как addresses,gateway4,routes итд.



Мы добавили резервирование для нашей сети, теперь осталось только повесить
vlan и настройку можно считать оконченной.

vlans:
vlan10:
id: 10
link: bond0
dhcp4: no
addresses: [10.10.10.2/24]
gateway: 10.10.10.1
routes:
- to: 10.10.10.2/24
via: 10.10.10.1
on-link: true

  • vlans: — объявляем блок настройки vlan.
  • vlan10: — произвольное имя vlan интерфейса.
  • id: — тег нашего vlan.
  • link: — интерфейс через который vlan будет доступен.
  • routes: — объявляем блок описания маршрутов.
  • — to: — задаем адрес/подсеть до которой необходим маршрут.
  • via: — указываем шлюз через которой будет доступна наша подсеть.
  • on-link: — указываем что прописывать маршруты всегда при поднятии линка.

Обратите внимание на то, как я расставляю пробелы, в языке YAML это очень важно.



Вот мы описали сетевые интерфейсы, создали bonding, и даже добавили
vlan-ы. Давайте применим наш конфиг, команда netplan apply проверит наш
конфиг на наличие ошибок и применит его в случае успеха. Далее конфиг
будет сам подниматься при перезагрузке системы.



Собрав все предыдущие блоки кода, вот что у нас получилось:

network:
version: 2
renderer: networkd
ethernets:
enp3s0f0:
dhcp4: no
ensp3s0f1:
dhcp4: no
bonds:
bond0:
dhcp4: no
interfaces: [enp3s0f0, enp3s0f1]
parameters:
mode: 802.3ad
mii-monitor-interval: 1

vlans:
vlan10:
id: 10
link: bond0
dhcp4: no
addresses: [10.10.10.2/24]
routes:
- to: 10.10.10.2/24
via: 10.10.10.1
on-link: true

vlan20:
id: 20
link: bond0
dhcp4: no
addresses: [10.10.11.2/24]
gateway: 10.10.11.1
nameserver:
addresses: [8.8.8.8]

Вот наша сеть и готова к эксплуатации. Все оказалось не так страшно, как
показалось вначале и код получился очень красивый и читабельный.

По netplan есть отличный мануал по ссылке
https://netplan.io/

Обсудить эту статью можно в Телеграм канале: https://t.me/linautonet