3.14.0 Настройки сети при помощи netplan
Введение
Netplan обеспечивает хранение параметров в формате YAML и предоставляет бэкенды, абстрагирующие доступ к конфигурации для NetworkManager и systemd-networkd.
Конфигурация может происходить в /{etc|run|lib}/netplan/*.yaml.
Netplan подгружает все данные файлы и применяет их.
Команды для управления netplan:
- netplan apply - применить новые настройки
- netplan try - попытаться применить настройки
- netplan ip leases interface - просмотреть настройки interface (например, enp3s0 )
- netplan ifupdown-migrate - осуществляет преобразование старых настроек /etc/network/interfaces в формат netplan.
- netplan generate - создаёт из конфигураций с расширением .yaml специфичную конфигурацию для бэкенда (network-manager или systemd-network)
Базовые настройки
Для конфигурации netplan применяется yaml - формат сериализации данных. Ниже приведен пример автоматической настройки сетевых интерфейсов.
Пример конфигурации:
# /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
enp3s0:
addresses: []
dhcp4: true
optional: true
В начале идёт секция network, с которой начинается конфигурация. Далее следует указать version, который объявляет версию yaml, на котором представлена конфигурация.
renderer - указывает netplan в какой backend транслировать, доступные: networkd (systemd-network) и NetworkdManager (Network Manager)
После определения какой backend использовать, идёт поле ethernets, которое декларирует физические проводные интерфейсы, в нём определяются сетевые интерфейсы, которые реально подключены, например, enp3s0. Для данного интерфейса указывается список статических адресов addresses, включается dhcp4 для dhcp клиента IPv4, а также optional, что означает следующее: Данный интерфейс не обязателен для загрузки системы. Поле optional: по умолчанию false, поддерживается только networkd.
Настройка интерфейсов
Общие настройки для физических интерфейсов
- match (mapping) - выбирает интерфейсы по критерию
- macaddress (scalar) - макадрес устройства
- set-name (scalar) - установка имени интерфейса
- driver (scalar) - указание имени драйвера ядра
- wakeonlan (bool) - включение машины по сети
Общие настройки для всех типов
- renderer (scalar) - выбор бэкенда
- dhcp4 (bool) - получения настроек сети по dhcp IPv4
- dhcp6 (bool) - получения настроек сети по dhcp IPv6
- addresses (sequence of scalar) - список сетевый адресов вида a.b.c.d/mask для IPv4 или "2001:1::/64" для IPv6
- gateway4 (scalar) - шлюз для IPv4
- gateway6 (scalar) - шлюз для IPv6
- nameservers (mapping) - настройка dns
- optional (bool) - является ли обязательным при старте
- routes (mapping) - настройка маршрутизации
Маршрутизация
- vlans: — объявляем блок настройки vlan.
- vlan10: — произвольное имя vlan интерфейса.
- id: — тег нашего vlan.
- link: — интерфейс через который vlan будет доступен.
- routes: — объявляем блок описания маршрутов.
- to: — задаем адрес/подсеть до которой необходим маршрут.
- via: — указываем шлюз через которой будет доступна наша подсеть.
- on-link: — указываем что прописывать маршруты всегда при поднятии линка.
Пример
network:
version: 2
ethernets:
id0:
match:
macaddress: 00:11:22:33:44:55
wakeonlan: true
dhcp4: true
addresses:
- 192.168.14.2/24
- 2001:1::1/64
gateway4: 192.168.14.1
gateway6: 2001:1::2
nameservers:
search: [foo.local, bar.local]
addresses: [8.8.8.8]
lom:
match:
driver: ixgbe
set-name: lom1
dhcp6: true
switchports:
match:
name: enp2*
mtu: 1280
wifis:
all-wlans:
match: {}
access-points:
"Joe's home":
password: "s3kr1t"
wlp1s0:
access-points:
"guest":
mode: ap
channel: 11
bridges:
br0:
interfaces: [wlp1s0, switchports]
dhcp4: true
routes:
- to: 0.0.0.0/0
via: 11.0.0.1
metric: 3 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
Bond (Агрегация)
Настройка бондов, агрегирование физических каналов, в логический происходит следующим образом:
Блок параметров
- parameters (mapping)
- mode (scalar) - Режим бонда: balance-rr(default), active-backup, balance-xor, broadcast, 802.3ad(default for ssw), balance-tlb, and balance-alb
- mii-monitor-interval (scalar) - интервал мониторинга интерфейса(живой или нет). По умолчанию 0 (по умолчанию в милисек)
- down-delay (scalar) - задержка перед отключением. По умолчанию 0 (по умолчанию в милисек).
- up-delay (scalar) - задержка перед включением. По умолчанию 0 (по умолчанию в милисек).
- lacp-rate (fast|slow) - Только в 802.3ad. Скорость передачи LACPDU.
- transmit-hash-policy (salar) - Политика передачи хэша для выбора ведомых. Полезно в balance-xor, 802.3ad и balance-tlb. Возможные значения: layer2, layer3+4, layer2+3, encap2+3, and encap3+4.
bonds:
bond0:
interfaces: [enp1s0f0, en01s0f1]
addresses: [10.110.1.253/24]
gateway4: 10.1.1.1
parameters:
mode: 802.3ad
nameservers:
addresses: [10.110.10.22]
Основные параметры это:
- interfaces (sequence of scalar) - список физических интерфейсов, которые необходимо объединить в один
- parameters (mapping) - настройки агрегации
network:
version: 2
renderer: networkd
ethernets:
enp0s3
dhcp4: no
enp0s8:
dhcp4: no
bonds:
bond-ssw:
dhcp4: yes
interfaces:
- enp0s3
- enp0s8
parameters:
mode: 802.3ad
optional: true
- bonds: — блок поясняющий что мы будем настраивать bonding.
- bond0: — произвольное имя интерфейса.
- interfaces: — набор интерфейсов собираемых в bond-динг, ''как оговаривалось ранее если параметров несколько описываем их в квадратных скобках".
- parameters: — описываем блок настройки параметров
- mode: — указываем мод по которому будет работать bonding.
- mii-monitor-interval: — задаем интервал мониторинга 1 сек.
bonds:
bond0:
dhcp4: no
interfaces: [enp3s0f0, enp3s0f1]
parameters:
mode: 802.3ad
mii-monitor-interval: 1
Vlan
Настройка виртуальных интерфейсов мало чем отличается от настройки физического
vlans:
vdev:
id: 101
link: net1
addresses:
- 10.0.1.10/24
vprod:
id: 102
link: net2
addresses:
- 10.0.2.10/24
vtest:
id: 103
link: net3
addresses:
- 10.0.3.10/24
vmgmt:
id: 104
link: net4
addresses:
- 10.0.4.10/24
Для определения vlan служит секция `vlans`, в ней определяются имена новых vlan'ов. У vlan есть 2 обязательных аргумента: `id` и `link`.
- id (scalar) - номер vlan
- link (scalar) - родительский интерфейс
Пример
# Пример конфигурации для настройки ECSS-10
# В варианте когда каждый хост подключен к коммутаторам выделенным линком
# Коммутаторы организованны в erps-кольцо
network:
version: 2 # Версия
renderer: networkd # systemd
ethernets: # настройка сетевых интерфейсов
enp1s0f0: # Наименование интерфейса. Может быть иным
dhcp4: no # Отключаем настройку по dhcp
dhcp6: no # Отключаем настройку по dhcp v6
enp1s0f1:
dhcp4: no
dhcp6: no
enp2s1:
dhcp4: no
dhcp6: no
bonds: # Связываем физические интерфейсы в бонды для отказоустойчивости
bond1: # Наименование бонда
interfaces: # перечисляем интерфейсы, которые входят в данный бонд
- enp1s0f0
- enp1s0f1
parameters: # Параметры агрегации
mode: active-backup # Рекомендуемый режим для линков подключенных к коммутаторам в ERPS-кольце
primary: enp1s0f0 # Основной интерфейс
mii-monitor-interval: 100ms
up-delay: 100ms
down-delay: 200ms
lacp-rate: fast
optional: false
vlans: # Настраиваем vlan
vlan.80: # Название vlan
id: 80 # тэг vlan
link: bond1 # на каком интерфейсе будет добавляться тэг
addresses:
- 10.80.0.10/26 # адрес
nameservers: # На другой внутренней машине настроен dns
addresses:
- 172.16.0.250
- 172.16.0.100