- Как восстановить работающую сетевую конфигурацию с помощью netplan в Ubuntu 20.04
- Netplan и как его правильно приготовить
- Настройка сети в Linux с помощью netplan
- Конфигурационный файл
- Простая настройка сети
- Применение настроек
- Статический маршрут
- Объединение интерфейсов (bonds)
- Сетевой мост (bridge)
- Отключение netplan и возврат к interfaces
- Возможные ошибки
- 1. Error in network definition *.yaml line xxx column yyy: expected mapping
Как восстановить работающую сетевую конфигурацию с помощью netplan в Ubuntu 20.04
Недавно я попытался установить open nebula, и по какой-то причине сетевой интерфейс eno1 исчез из моей сетевой конфигурации Ubuntu 20.04, и я хотел бы восстановить его, потому что теперь я не могу подключиться к Интернету. Ubuntu 20.04 использует netplan. Это мой 01-network-manager-all.yaml файл:
Когда я делаю ifconfig , Я вижу эти сетевые интерфейсы:
Я попытался воссоздать старый интерфейс eno1 с помощью следующих команд:
Ошибок идентификации не вижу, но ситуация не изменилась. У меня нет интерфейса eno1 и нет подключения к Интернету. Что я должен делать? чего не хватает?
NB: вот что произошло после того, как последовало первоначальное предложение @heynnema:
Это файл netplan, который я использовал (01-network-manager-all.yaml):
Я тоже пробовал эту версию:
Я также пробовал:
он говорит: NetworkManager : definition eno1 is not for us (backend 1 )
интерфейс eno1 не был создан. так что не работает.
мой файл / etc / network / interfaces выглядит так.
Частичное решение: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller не работает с ядром 5.4.0-42-generic; там написано, что аппарат невостребованный. Вместо этого с ядром 5.4.0-41-generic он работал отлично. так что это ошибка той версии ядра.
Источник
Netplan и как его правильно приготовить
Ubuntu потрясающая операционная система, давно не работал с Ubuntu server, а обновлять свой Desktop со стабильной версии не было смысла. И вот не давно пришлось столкнутся со свеженьким релизом Ubuntu server 18.04, моему удивлению не было предела. Когда я понял что я бесконечно отстал от жизни и не могу настроить сеть, т.к старая добрая система настройки сетевых интерфейсов по средствам редактирования файла /etc/network/interfaces канула в Лету. А что же пришло ей на смену? Что-то ужасное и на первый взгляд совершенно не понятное, встречайте «Netplan».
Признаться честно, сначала я не мог понять в чем дело и »зачем это нужно, ведь все было так удобно», но получив немного практики понял, что в нем есть свой шарм. И так хватит лирики продолжим. Что же такое Netplan — это новая утилита для настройки сети в Ubuntu, по крайне мере «в других дистрибутивах я не встречал подобного». Существенное отличие Netplan является то, что конфигурация пишется на языке YAML, да да вы не ослышались YAML, разработчики решили идти в ногу со временем (и как бы много не расхваливали его я все-таки считаю его ужасным языком). Основной минус этого языка в том что он очень чувствителен к пробелам, давайте же рассмотрим конфиг на примере.
Файлы конфигурации находятся по пути /etc/netplan/имяфайла.yaml, между каждым блоком когда должно быть + 2 пробела.
1) Стандартная шапка выглядит так:
Давайте рассмотрим что мы сейчас сделали:
- network: — это блок начало конфигурации.
- renderer: networkd — здесь мы указываем сетевой менеджер который будем использовать, это либо networkd либо NetworkManager
- version: 2 — тут, как я понял, версия YAML.
- ethernets: — этот блок говорит о том, что будем конфигурировать ethernet протокол.
- enps0f0: — указываем какой сетевой адаптер будем конфигурировать.
- dhcp4:no — отключаем DHCP IPv4, для IPv6, dhcp6 соответственно
2) Попробуем назначить ip адреса:
Здесь мы задали мак, ipv4, шлюз и dns сервер. Заметьте, что если нам нужно больше одного ip адреса, то мы пишем их через запятую с обязательным пробелом после.
3)А что если нам нужен bonding?
- bonds: — блок, поясняющий что мы будем настраивать bonding.
- bond0: — произвольное имя интерфейса.
- interfaces: — набор интерфейсов собираемых в bond-динг, »как оговаривалось ранее если параметров несколько описываем их в квадратных скобках».
- parameters: — описываем блок настройки параметров
- mode: — указываем мод по которому будет работать bonding.
- mii-monitor-interval: — задаем интервал мониторинга 1 сек.
Внутри блока с именем bond-а также можно конфигурировать такие параметры как addresses,gateway4,routes итд.
Мы добавили резервирование для нашей сети, теперь осталось только повесить vlan и настройку можно считать оконченной.
- vlans: — объявляем блок настройки vlan.
- vlan10: — произвольное имя vlan интерфейса.
- id: — тег нашего vlan.
- link: — интерфейс через который vlan будет доступен.
- routes: — объявляем блок описания маршрутов.
- — to: — задаем адрес/подсеть до которой необходим маршрут.
- via: — указываем шлюз через которой будет доступна наша подсеть.
- on-link: — указываем что прописывать маршруты всегда при поднятии линка.
Обратите внимание на то, как я расставляю пробелы, в языке YAML это очень важно.
Вот мы описали сетевые интерфейсы, создали bonding, и даже добавили vlan-ы. Давайте применим наш конфиг, команда netplan apply проверит наш конфиг на наличие ошибок и применит его в случае успеха. Далее конфиг будет сам подниматься при перезагрузке системы.
Собрав все предыдущие блоки кода, вот что у нас получилось:
Источник
Настройка сети в Linux с помощью netplan
Начиная с Ubuntu 18.04 конфигурирование сети выполняется с помощью утилиты netplan. В других системах на базе deb, например, Debian, она может быть установлена командой:
apt-get install netplan
В данной статье рассмотрим принцип и примеры настройки сети с помощью netplan.
Конфигурационный файл
Файл для настройки сети находится в каталоге /etc/netplan/. Имя файла может быть любым, на конце должно быть расширение yaml, например:
* чаще всего, это файл 50-cloud-init.yaml или 01-netcfg.yaml.
YAML представляет из себя текстовый формат файла. Вложенные параметры должны иметь отступы табуляциями или пробелами, количество которых имеет важное значение (если поставить лишний пробел у одного из нескольких параметров, мы получим сообщение об ошибке «expected mapping»).
Простая настройка сети
Разберем пример настройки 3-х сетевых интерфейсов. Два из них будут с IP-адресами назначенными вручную (static IP), один — по DHCP.
Приводим файл к следующему виду:
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: true
ens7:
dhcp4: no
addresses: [192.168.122.195/24]
gateway4: 192.168.122.1
mtu: 1500
nameservers:
addresses: [8.8.8.8, 77.88.8.8]
search: [ dmosk.local ]
ens9:
dhcp4: no
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-адреса через запятую.
- gateway4 — шлюз по умолчанию. В данном примере указывается только для интерфейса ens7.
- mtu — при желании, можно задать значение MTU.
- nameservers — настройка серверов имен (DNS).
- nameservers addresses — указываем серверы DNS. Обратите внимание на разный формат записи для ens7 и ens9. Приемлемы оба варианта.
- nameservers search — дописывает окончание домена, если мы обращаемся к узлу сети только по его имени. Стоит обратить внимание, что мы можем указать несколько доменов через запятую.
Применение настроек
Для применения настроек необходимо запустить команду netplan. Ее синтаксис:
Для проверки нашего конфигурационного файла вводим:
netplan —debug generate
Для применения настроек вводим:
* данную команду мы вводим также для перечитывания настроек и перезапуска сети (вместо привычных restart и reload).
Статический маршрут
Статический маршрут задается для конкретного интерфейса, также в конфигурационном файле netplan, например:
network:
version: 2
renderer: networkd
ethernets:
ens9:
dhcp4: no
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: no
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:
network:
version: 2
renderer: networkd
ethernets:
ens3: <>
vlans:
vlan5:
id: 5
link: ens3
dhcp4: no
addresses: [10.0.0.15/24]
gateway: 10.0.0.1
* в данном примере мы настроили интерфейс с тегом 5 на физическом адаптере ens3.
Для подключения к беспроводной сети задаем следующие настройки:
network:
version: 2
renderer: networkd
wifis:
wlp2s0b1:
dhcp4: no
dhcp6: no
addresses: [192.168.2.10/24]
gateway4: 192.168.2.1
nameservers:
addresses: [192.168.2.1, 77.88.8.8]
access-points:
:
password: wifi_password
- wifis — определяет настойки для WiFi.
- wlp2s0b1 — настройка для беспроводного сетевого адаптера.
- dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса.
- addresses, gateway4, nameservers — настройка сети (IP-адрес, шлюз, сервер DNS).
- access-points — настройка для подключения к беспроводной сети.
- — имя беспроводной сети, к которой будем подключаться.
- password — пароль для подключения к беспроводной сети.
Отключение netplan и возврат к interfaces
При желании, мы можем вернуть привычный принцип настройки сети. Для этого выполним несколько шагов.
1. Открываем настройку grub:
2. Находим опцию GRUB_CMDLINE_LINUX и дописываем в нее параметр:
* если GRUB_CMDLINE_LINUX содержит другие настройки, то наш параметр добавляем через пробел.
3. Устанавливаем пакет ifupdown:
apt-get install ifupdown
4. Настраиваем сеть в файле:
auto lo
iface lo inet loopback
auto ens5
iface ens5 inet dhcp
* в данном примере мы настраиваем сетевой интерфейс ens5 на автоматическое получение IP-адреса.
5. Применяем настройки загрузчика:
И перезагружаем систему:
Возможные ошибки
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, они должны иметь одинаковое количество пробелов.
Источник