Настройка сети через netplan в Ubuntu 18.04

Posted by

Как я понял, теперь в Ubuntu 18.04 за основную утилиту для настройки сетевых настроек из командной строки — это netplan. Настройка работы интерфейсов сводится к правильному конфигурированию через абстракцию YAML.

На заметку: При настройке конфигурационного файла netplan самое глачное не использовать символы табуляции, только символы пробела. Именно это и есть абстракция использования YAML (Yet Another Markup Language» — «Ещё один язык разметки»)

ekzorchik@srv-bionic:~$ sudo apt remove ifupdown -y

Отобразить все сетевые интерфейсы системы:

ekzorchik@srv-bionic:~$ ifconfig -a

  • интерфейс в выводе: epn0s3 → это сетевой интерфейс на который настроена система
  • интерфейс в выводе: lo → интерфейс обратной петли (loopback)

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

ekzorchik@srv-bionic:~$ sudo netplan generate

Чтобы установить статический IP-адрес:

ekzorchik@srv-bionic:~$ sudo nano /etc/netplan/01-netcfg.yaml

network:

version: 2

renderer: networkd

ethernets:

# имя сетевого интерфейса

enp0s3:

# активация или дезактивация получения настроек от DHCP-сервиса для IPv4

# можно указывать, как no/yes так и true/false

dhcp4: no

# активация или дезактивация получения настроек от DHCP-сервиса для IPv6

# можно указывать, как no/yes так и true/false

dhcp6: no

# установка статического адреса с указанием действующей маски подсети

addresses: 172.40.40.25/24

# установка шлюза для IPv4 (по умолчанию)

gateway4: 172.40.40.1

# установка DNS-серверов, если в доменной сети, то указываем IP адреса контроллеров домена, если без домена, то адрес Вашего маршрутизатора или же публичные DNS: 8.8.8.8, 8.8.4.4 или DNS провайдера.

nameservers:

addresses: [172.40.40.1,172.40.40.8]

Не забываем сохранить внесенные изменения и применить:

ekzorchik@srv-bionic:~$ sudo netplan apply

Error in network definition //etc/netplan/01-netcfg.yaml line 7 column 14: expected sequence

Если в файле конфигурации присутствует ошибка она будет выведена на консоль и ее нужно исправить т.к. изменения не будут применены. Подсказка: седьмая строка и четырнадцатый символ в моем случае.

Addresses: [172.40.40.25/24] → нужны квадратные скобки

Итоговый конфигурационный файл:

network:

version: 2

# Выбор сетевого рендера. Выбран networkd

renderer: networkd

# Блок с настройкой сетевых интерфейсов

ethernets:

enp0s3:

dhcp4: no

dhcp6: no

addresses: [172.40.40.25/24]

macaddress: 08.00.27.28.31.1f

gateway4: 172.40.40.1

nameservers:

addresses: [172.40.40.1]

Чтобы установить динамический IP-адрес:

ekzorchik@srv-bionic:~$ sudo nano /etc/netplan/01-netcfg.yaml

network:

version: 2

renderer: networkd

ethernets:

enp0s3:

dhcp4: yes

dhcp6: no

ekzorchik@srv-bionic:~$ sudo netplan apply

На заметку: как всегда расширенную информацию по использованию следует черпать в справочном файле: ekzorchik@srv-bionic:~$ man netplan

Чтобы установить несколько сетевых интерфейсов, то их можно либо разбить, как каждый конфигурационный файл с расширением yaml или все указать в едином. Просто начав с новой строки именованием второго или более сетевым интерфейсом:

ekzorchik@srv-bionic:~$ sudo nano /etc/netplan/01-netcfg.yaml

network:

version: 2

renderer: networkd

ethernets:

enp0s3:

dhcp4: yes

dhcp6: false

enp0s4:

dhcp4: no

addresses: [172.40.40.26/24]

gateway4: 172.40.40.1

nameservers:

addresses: [8.8.8.8]

dhcp6: no

ekzorchik@srv-bionic:~$ sudo netplan apply

Чтобы проверить правильность конфигурационного файла на ошибки:

ekzorchik@srv-bionic:~$ sudo netplan try

Warning: Stopping systemd-networkd.service, but it can still be activated by:

systemd-networkd.socket

Do you want to keep these settings?

Press ENTER before the timeout to accept the new configuration

Changes will revert in 118 seconds

Configuration accepted.

И если все правильно сказать системе нажатием клавиши Enter применить их.

А после проверяем, что интерфейс поднялся и получил или был назначен:

ekzorchik@srv-bionic:~$ sudo ifconfig -a

Установить сетевой интерфейс использую NetworkManager если настройка ведется через интерфейс wifi:

ekzorchik@navy:~$ sudo nano /etc/netplan/01-network-manager-all.yaml

network:

version: 2

renderer: NetworkManager

wifis:

wlp3s0:

dhcp4: no

addresses: [172.40.40.7/24]

gateway4: 172.40.40.1

nameservers:

addresses: [172.40.40.1,8.8.8.8]

access-points:

ekzorchik:

password: "Aa1234567"

ekzorchik@navy:~$ sudo netplan apply

ekzorchik@navy:~$ sudo ifconfig -a | egrep -E "wlp3s0|inet"

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10<host>

wlp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 172.40.40.7 netmask 255.255.255.0 broadcast 172.40.40.255

inet6 fe80::96d1:8a4e:ed15:9be8 prefixlen 64 scopeid 0x20<link>

И если все правильно указано для подключения к точке доступа, то интерфейс поднимется и подключиться к Wi-Fi и в зависимости от настроек получит сетевой адрес, как у меня. Для справки Wi-Fi подключение работает на базе Mikrotik. Скорее всего у Вас также как у меня при подключении к Wi-Fi сетевой адрес выдает от DHCP-сервиса и тогда конфигурационный файл можно сократить до вида:

network:

version: 2

renderer: NetworkManager

wifis:

wlp3s0:

dhcp4: yes

access-points:

ekzorchik:

password: "Aa1234567"

Дабы не мудрить с правильность настройки конфигурационного файла под интерфейса за основу можно взять один из примеров прилагаемых вместе с утилитой netplan:

ekzorchik@navy:~$ ls /usr/share/doc/netplan.io/examples/

bonding_router.yaml direct_connect_gateway.yaml static.yaml

bonding.yaml loopback_interface.yaml vlan.yaml

bridge_vlan.yaml network_manager.yaml windows_dhcp_server.yaml

bridge.yaml source_routing.yaml wireless.yaml

dhcp.yaml static_multiaddress.yaml

ekzorchik@navy:~$ sudo cp /usr/share/doc/netplan.io/examples/wireless.yaml /etc/netplan/01-networkd.yaml

На заметку: любой настроечный файл в каталоге /etc/netplan будет обрабатываться утилитой netplan имеющий расширение yaml.

Вот мой рабочий конфиг с ноутбука Lenovo E555 системы Ubuntu 18.04 Desktop amd64, если нажать клавишу F8 то выключаем Wi-Fi, если подключен кабель ethernet, то настройки автоматически присваиваются и интернет и локальная сеть есть, если вытаскиваю кабель, а включаю Wi-Fi то также интернет есть, если оба интерфейса включены то интернет также есть:

ekzorchik@navy:~$ sudo nano /etc/netplan/01-networkd.yaml

network:

version: 2

renderer: NetworkManager

ethernets:

enp0s3:

dhcp4: yes

wifis:

wlp3s0:

dhcp4: yes

access-points:

ekzorchik:

password: "Aa1234567"

ekzorchik@navy:/etc/netplan$ sudo netplan apply

На заметку: в файле ekzorchik@navy:~$ cat /etc/network/interfaces все закомментировано, за исключением:

auto lo

iface lo inet loopback

Итого, я для себя разобрал, как настраивается сетевой интерфейс(ы) через утилиту netplan в системе Ubuntu 18.04 независимо от используемой редакции, как Server или Desktop. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.