Введение

Netplan обеспечивает хранение параметров в формате YAML и предоставляет бэкенды, абстрагирующие доступ к конфигурации для NetworkManager и systemd-networkd.

Конфигурация может происходить в /{etc|run|lib}/netplan/*.yaml.
Netplan подгружает все данные файлы и применяет их.

Команды для управления netplan:

Базовые настройки

Для конфигурации 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.

Настройка интерфейсов

Общие настройки для физических интерфейсов

Общие настройки для всех типов

Маршрутизация

Пример

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 (Агрегация)

Настройка бондов, агрегирование физических каналов, в логический происходит следующим образом:

Блок параметров


    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]


Основные параметры это:


   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:
    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`.

Пример

# Пример конфигурации для настройки 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