Skip to main content

Настройка сетевых интерфейсов в UbuntuServer 24.04 через NetPlan

Официальная дока лежит здесь https://netplan.readthedocs.io/en/stable/

Для настройки интерфейсов в Ubuntu сервер можно воспользоваться утилиой NetPlan. Для ее настройки необходимо отредактировать файл конфига .yaml по пути /etc/netplan/*.yaml

 nano /etc/netplan/50-cloud-init.yaml


Пример настройки

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp3s0f0:  #Имя физического интерфейса
            dhcp4: true  #Получение параметров по DHCP
        enp3s0f1: {} #Если внутри интерфейса есть несколько VLAN
 #           addresses:
 #           - 192.168.0.1/24
 #           nameservers:
 #               addresses: []
 #               search: []
        enp3s0f2:
            addresses: #Назначение статики для интерфейса
            - 192.168.1.1/24
            nameservers:
                addresses: []
                search: []
        enp3s0f3: {}
#            dhcp4: true
        enp4s0f0:
            dhcp4: true
        enp4s0f1:
            dhcp4: true
        enp4s0f2:
            dhcp4: true
        enp4s0f3:
            dhcp4: true
    
    version: 2
    
    vlans: #Блок, описывающий VLANы на сервере
        vlan2: #Имя виртуального интерфейса
            id: 2 #ID VLANа (VLAN номер 2)
            link: enp3s0f3 #Внутри какого физического интерфейса находится текущий VLAN (порт сразу становится Trunck)
            dhcp4: false #Настройка параметров виртуального интерфейса
            addresses: [192.168.0.1/24]

После сохранения файла необходимо применить настройки 

netplan apply

Выжимка от DiMosk

 

Начиная с Ubuntu 18.04 конфигурирование сети выполняется с помощью утилиты netplan. В других системах на базе deb, например, Debian, она может быть установлена командой:

 

apt install netplan


В данной статье рассмотрим принцип и примеры настройки сети с помощью netplan.

Немного о файле конфигурации
Настройка сети
Как применить настройки
Добавить маршрут
Объединение интерфейсов
Сетевой мост
Настройка vlans
Настройка WiFi
Несколько IP-адресов на одном интерфейсе
Удаление netplan
Решение возможных проблем

Конфигурационный файл

Файл для настройки сети находится в каталоге /etc/netplan/. Имя файла может быть любым, на конце должно быть расширение yaml, например:

 

vi /etc/netplan/00-installer-config.yaml


* чаще всего, это файл 00-installer-config.yaml, 01-netcfg.yaml или 50-cloud-init.yaml.

YAML представляет из себя текстовый формат файла. Вложенные параметры должны иметь отступы табуляциями или пробелами, количество которых имеет важное значение (если поставить лишний пробел у одного из нескольких параметров, мы получим сообщение об ошибке «expected mapping»).

Простая настройка сети

Разберем пример настройки 3-х сетевых интерфейсов. Два из них будут с IP-адресами назначенными вручную (static IP), один — по DHCP.

Приводим файл к следующему виду:

 

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: true
    ens7:
      dhcp4: false
      addresses:
        - 192.168.122.195/24
      routes:
        - to: default
          via: 192.168.122.1
      mtu: 1500
      nameservers:
        addresses:
          - 8.8.8.8
          - 77.88.8.8
        search: [ dmosk.local ]
    ens9:
      dhcp4: false
      addresses:
        - 192.168.1.10/24
        - 192.168.1.20/24
      nameservers:
        addresses:
          - 8.8.8.8
          - 77.88.8.8
        search: [ dmosk.local, dmosk.ru ]


* где:

  • version — версия YAML. На момент обновления статьи, была 2.
  • renderer — менеджер сети (networkd или NetworkManager).
  • ethernets — настройка сетевых адаптеров ethernet.
  • ens3, ens7, ens9 — настройки для соответствующих сетевых адаптеров. В данном примере мы настраиваем 3 сетевых адаптера.
  • dhcp4 — будет ли получать сетевой адаптер IP-адрес автоматически. Возможны варианты yes/true — получать адрес автоматически; no/false — адрес должен быть назначен вручную.
  • addresses — задает IP-адреса через запятую.
  • routes — настройка маршрутов. Для шлюза по умолчанию используем опцию и значение to: default. Ранее использовалась директива gateway4, но теперь она считается устаревшей (при применении настройки с ней система вернет предупреждение gateway4 has been deprecated, use default routes instead). Также обратите внимание на вариант с 0.0.0.0 — в более ранних версиях системы вариат с default выдаст ошибку, и нужно использовать конфигурацию с четыремя нулями.
  • mtu  — при желании, можно задать значение MTU.
  • nameservers — настройка серверов имен (DNS).
  • nameservers addresses — указываем серверы DNS. Обратите внимание на разный формат записи для ens7 и ens9. Приемлемы оба варианта.
  • nameservers search — дописывает окончание домена, если мы обращаемся к узлу сети только по его имени. Стоит обратить внимание, что мы можем указать несколько доменов через запятую.

Применение настроек

Для применения настроек необходимо запустить команду netplan. Ее синтаксис:

netplan <опции> <команда>

Для проверки нашего конфигурационного файла вводим:

 

netplan --debug generate


 Для применения настроек вводим:

 

netplan apply


* данную команду мы вводим также для перечитывания настроек и перезапуска сети (вместо привычных restart и reload).

Статический маршрут

Статический маршрут задается для конкретного интерфейса, также в конфигурационном файле netplan, например:

 

network:
    version: 2
    renderer: networkd
    ethernets:
        ens9:
            dhcp4: false
            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:

  • to — направление маршрута (в какую сеть мы должны попадать). В данном примере, 192.168.0.0/24.
  • via — через какой шлюз мы попадаем в сеть to.
  • on-link — активация маршрута при поднятии линка на сетевом интерфейсе.

Объединение интерфейсов (bonds)

С помощью bonds мы можем объединить интерфейсы с целью обеспечения отказоустойчивости и/или повышения пропускной способности.

Пример настройки:

 

network:
    version: 2
    renderer: networkd
    ethernets:
        ens2f0: {}
        ens2f1: {}
    bonds:
        bond0:
            dhcp4: false
            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 указываем на тип объединения — доступны варианты:

  • balance-rr (задействуются оба интерфейса по очереди, распределение пакетов по принципу Round Robin).
  • active-backup (используется только один интерфейс, второй активируется в случае неработоспособности первого).
  • balance-xor (задействуются оба интерфейса по очереди, распределение пакетов на основе политики хеширования xmit_hash_policy).
  • broadcast (задействуются оба интерфейса одновременно, пакеты передаются все интерфейсы).
  • 802.3ad (задействуются оба интерфейса по очереди, распределение пакетов на основе политики хеширования xmit_hash_policy)
  • balance-tlb (задействуются оба интерфейса по очереди, пакеты распределяются в соответствии с текущей нагрузкой)

Сетевой мост (bridge)

Сетевой мост позволяет пропускать сетевой трафик через другой сетевой адаптер. Это можно применить, например, для организации хоста виртуальных машин (для трансфера трафика к виртуальным машинам 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


* где:

  • bridges — настройки для интерфейсов bridge.
  • bridges br0 — настройка интерфейса br0.
  • macaddress — физический адрес (MAC) интерфейса. Настройка важна для некоторых провайдеров VPS — без нее бридж может не заработать.
  • interfaces — перечисление интерфейсов, из которых собираем мост. В данном примере ens2f0.
  • addresses, gateway4, nameservers — сетевые настройки (IP-адрес, шлюз, сервер имен).
  • mtu — одноименный параметр. Для сетей ethernet обычно равен 1500.
  • parameters stp — включает или отключает устранение петель в сети. В данном примере включено.
  • parameters forward-delay — время в секундах в течение которого мост будет оставаться в состояниях «Listening» и «Learning».
  • dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса. В нашем случае, отключает.

Подробнее про настройку сетвого моста для KVM в инструкции Настройка KVM на Ubuntu Server.

Vlan

Также мы можем настроить тегированный интерфейс vlan:

 

network:
    version: 2
    renderer: networkd
    ethernets:
        ens3: {}
    vlans: 
        vlan5:
            id: 5
            link: ens3
            dhcp4: false
            addresses: [10.0.0.15/24]
            gateway: 10.0.0.1


* в данном примере мы настроили интерфейс с тегом 5 на физическом адаптере ens3.

WiFi

Для подключения к беспроводной сети задаем следующие настройки:

 

network:
  version: 2
  renderer: networkd
  wifis:
    wlp2s0b1:
      dhcp4: false
      dhcp6: false
      addresses:
        - 192.168.2.10/24
      routes:
        - to: default
          via: 192.168.2.1
      nameservers:
        addresses:
          - 192.168.2.1
          - 77.88.8.8
      access-points:
        "<имя WiFi сети (SSID)>":
          password: "wifi_password"


* где:

  • wifis — определяет настойки для WiFi.
  • wlp2s0b1 — настройка для беспроводного сетевого адаптера.
  • dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса.
  • addresses, routes, nameservers — настройка сети (IP-адрес, шлюз, сервер DNS).
  • access-points — настройка для подключения к беспроводной сети.
  • <имя WiFi сети (SSID)> — имя беспроводной сети, к которой будем подключаться.
  • password — пароль для подключения к беспроводной сети.

Если мы не знаем точное имя нашей WiFi сети, можно провести сканирование с помощью утилиты wireless-tools:

 

apt install wireless-tools


 

iwlist wlp2s0b1 scan | grep ESSID


* данная команда с помощью сетевого интерфейса wlp2s0b1 выполнит сканирование сетей и выведет список имен (ESSID).

Если система не подключается к WiFi переходим к возможному решению.

Несколько IP-адресов

Если нужно задать несколько IP-адресов на одном сетевом адаптере, просто перечисляем их:

 

network:
    version: 2
    renderer: networkd
    ethernets:
        ens7:
            dhcp4: false
            addresses:
                - 1.2.3.4/24
                - 5.6.7.8/24


* в данном примере сетевому адаптеру ens7 будут назначены адреса 1.2.3.4 и 5.6.7.8.

Отключение netplan и возврат к interfaces

При желании, мы можем вернуть привычный принцип настройки сети. Для этого выполним несколько шагов.

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 install ifupdown


4. Настраиваем сеть в файле:

 

vi /etc/network/interfaces


... например:

 

auto lo
iface lo inet loopback

auto ens5
iface ens5 inet dhcp


* в данном примере мы настраиваем сетевой интерфейс ens5 на автоматическое получение IP-адреса.

5. Применяем настройки загрузчика:

 

update-grub


И перезагружаем систему:

 

shutdown -r now


Возможные ошибки

1. Error in network definition *.yaml line xxx column yyy: expected mapping 

Ошибка появляется при проверке (generate) или применении (apply) настроек сети.

Причина: ошибка синтаксиса YAML.

Решение: внимательно смотрим на количество отступов, которое сделано для строки xxx. Количество пробелов должно точно соответствовать количеству в других строках. Если параметр вложенный, он также должен отделяться от родителя нужным количеством пробелов. Пример неправильной настройки:

 

network:
    version: 2
  renderer: networkd


* обратите внимание, что version имеет 4 пробела для отступа, а renderer — 2. Так как version и renderer равнозначные параметры для родителя network, они должны иметь одинаковое количество пробелов.

2. wpa_supplicant: No such file or directory

Компьютер не подключается к сети WiFi. Если ввести команду просмотра лога:

 

journalctl -xe


... то можно увидеть ошибку:

/sbin/wpa_supplicant: No such file or directory

Причина: система при настройке подключения к беспроводной сети пытается использовать утилиту wpa_supplicant, которой нет в системе.

Решение: устанавливаем wpa_supplicant:

 

apt install wpasupplicant


Перезапустим конфигурацию сети:

 

netplan apply