Настройка сети в Ubuntu 18.04 LTS

04.01.2020

Теги: CLILinuxUbuntuКомандаКонфигурацияЛокальнаяСетьНастройка

Начиная с Ubuntu 17.10, для управления конфигурацией сети используется утилита Netplan. Раньше для этих целей применялся скрипт ifupdown, конфигурационные файлы которого находились в папке /etc/network/interfaces. Недостатком такого подхода было то, что файлы настройки сети были разбросаны по всей системе, частью настроек мог управлять NetworkManager, частью systemd-networkd, а часть вообще делалась с помощью ifupdown.

Все конфигурационные файлы Netplan находятся в папке /etc/netplan/. Во время запуска службы, она преобразовывает свою конфигурацию в конфигурацию той службы, которая будет управлять сетью и помещает её в каталог /run/. По умолчанию в Ubuntu Desktop есть только один конфигурационный файл со следующим содержимым:

$ cat /etc/netlan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

Первые две строчки конфигурации стандартны. Первая указывает, что мы будем иметь дело с сетью, а вторая указывает версию стандарта конфигурации, которая будет использоваться. Третья строка означает, что управление всей сетью передаётся утилите NetworkManager.

Примеры конфигурации

Сначала нужно посмотреть, как называются сетевые интерфейсы в системе:

$ ls /sys/class/net
enp0s3  lo

Интерфейс enp0s3 получает все настройки от DHCP-сервера:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: yes

Изменим этот файл конфигурации, назначим вручную DNS-сервера:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: yes
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

Формат YAML допускает блочный и строчный формат для списков:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: yes
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

Переопределим часть настроек, которые приходят от DHCP-сервера:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: yes
      dhcp4-overrides:
        use-dns: no
        use-domains: no
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

Теперь для интерфейса enp0s3 назначим статический ip-адрес:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.1.10/24] # список IP-адресов, которые нужно присвоить интерфейсу
      gateway4: 192.168.1.1 # адрес роутера, чтобы компьютер имел выход в интернет
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

Кроме проводного подключения, система конфигурации Netplan умеет управлять подключением к Wi-Fi. Например, у нас есть точка доступа AccessPoint с паролем qwerty и мы хотим к ней подключаться:

network:
  version: 2
  renderer: NetworkManager
  wifis:
    wlp0s3:
      dhcp4: yes
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
      access-points:
        "AccessPoint":
          password: "qwerty"
Для работы Wi-Fi через networkd надо, чтобы в системе был установлен пакет wpa_supplicant, который обеспечивает поддержку WEP, WPA и WPA2.

Пример задания маршрута по умолчанию и еще одного:

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s3:
      addresses: [192.168.110.2/24]
      #gateway4: 192.168.110.1
      routes:
        - to: 0.0.0.0/0 # маршрут по умолчанию
          via: 192.168.110.1
        - to: 192.168.30.0/24 # еще один маршрут
          via: 192.168.110.8

Директива gateway4 в настоящее время считается устаревшей и вместо нее рекомендуется использовать блок routes.

routes:
  - to: default # маршрут по умолчанию
    via: 192.168.110.1

Применение конфигурации

Теперь нужно проверить конфигурационный файл на ошибки и файлы конфигурации NetworkManager (для Ubuntu Desktop) или networkd (для Ubuntu Server). Для этого предназначена утилита netplan:

$ netplan опции команда

Команда может быть:

  • try — попытка применить новый YAML-файл к работающей системе и откат назад при неудаче
  • apply — применить новый YAML-файл к работающей системе (после успешного выполнения try)
  • generate — создать файлы конфигурации NetworkManager или networkd на основе /etc/netplan/*.yaml
$ netplan --help
usage: /usr/sbin/netplan  [-h] [--debug]  ...

Network configuration in YAML

optional arguments:
  -h, --help  show this help message and exit
  --debug     Enable debug messages

Available commands:

    help      Show this help message
    apply     Apply current netplan config to running system
    generate  Generate backend specific configuration files from
              /etc/netplan/*.yaml
    info      Show current netplan version and available features
    ip        Retrieve IP information from the system
    try       Try to apply a new netplan config to running system, with
              automatic rollback

Сначала проверяем YAML-файл(ы) на ошибки:

$ sudo netplan try

Если новая конфигурация успешно применилась к работающей системе, netplan предложит так и оставить, без отката назад.

Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in ..... seconds

Применяем YAML-файл(ы) к работающей системе. При этом netplan создает все необходимые файлы конфигурации NetworkManager или networkd и при необходимости перезапускает эти службы, чтобы применить эти новые файлы.

$ sudo netplan apply

Можно просто записать файлы конфигурации NetworkManager или networkd на диск, тогда потребуется вручную перезапустить службу.

$ sudo netplan generate
$ sudo systemctl restart NetworkManager.service # для Ubuntu Desktop
$ sudo systemctl restart system-networkd.service # для Ubuntu Server

Дополнительно

Поиск: Linux • Ubuntu • Локальная сеть • Netplan • NetworkManager • networkd • ifupdown • CLI • Конфигурация • Настройка

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.