- Вопрос или проблема
- Ответ или решение
- Почему конфигурация Netplan не сохраняется при перезагрузке и как это исправить
- 1. Понимание конфликта YAML-файлов
- 2. Действия по устранению проблемы
- 3. Отключение автоматической настройки сети от Cloud-Init
- 4. Убедитесь в отсутствии конфликтов с resolvconf
- 5. Заключение
Вопрос или проблема
Я настроил свои сетевые интерфейсы на своем сервере Ubuntu bionic (18.04)
с помощью netplan
, а затем запустил netplan apply
, и конфигурация вступила в силу. В частности, я настроил DNS-серверы, и мой сервер разрешал IP-адреса с помощью серверов имен, которые я настроил в своей конфигурации netplan
.
Но после перезагрузки конфигурация не сохранилась, и любое разрешение по умолчанию выполнялось на 127.0.0.53
. Только после выполнения netplan apply
конфигурация снова вступила в силу.
Как мне сделать конфигурацию netplan
постоянной при перезагрузках?
Вывод cat /etc/*-release
:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
Вывод cat /etc/network/interfaces
:
# ifupdown был заменен на netplan(5) на этой системе. См.
# /etc/netplan для текущей конфигурации.
# Чтобы снова включить ifupdown на этой системе, вы можете запустить:
# sudo apt install ifupdown
Мои файлы конфигурации netplan yaml:
10-nameservers.yaml
:
network:
version: 2
ethernets:
ens160:
nameservers:
addresses: [127.0.0.1]
50-cloud-init.yaml
# Этот файл сгенерирован на основе информации, предоставленной
# источником данных. Изменения в нем не сохранятся после создания экземпляра.
# Чтобы отключить возможности конфигурации сети cloud-init, создайте файл
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg со следующим содержимым:
# network: {config: disabled}
network:
ethernets:
ens160:
addresses: []
dhcp4: true
dhcp-identifier: mac
version: 2
interfaces_ens160.yaml
network:
ethernets:
ens160:
addresses: [172.16.0.1/16]
dhcp4: 'no'
dhcp6: 'no'
gateway4: 172.16.100.1
nameservers:
addresses: [10.0.0.8, 8.8.8.8, 10.15.0.18]
version: 2
У вас конфликтующие файлы .yaml.
Переименуйте все существующие файлы .yaml
- sudo mv
/etc/netplan/10-nameservers.yaml
/etc/netplan/10-nameservers.yaml.HOLD
- sudo mv
/etc/netplan/50-cloud-init.yaml
/etc/netplan/50-cloud-init.yaml.HOLD
- sudo mv
/etc/netplan/interfaces_ens160.yaml
/etc/netplan/interfaces_ens160.yaml.HOLD
Создайте новый файл .yaml
- sudo pico
/etc/netplan/config.yaml
с таким содержимым… с точными отступами, пробелами и без табуляций…
network:
version: 2
renderer: networkd
ethernets:
ens160:
addresses: [172.16.0.1/16]
gateway4: 172.16.100.1
nameservers:
addresses: [10.0.0.8, 8.8.8.8, 10.15.0.18]
Сгенерируйте новые файлы
sudo netplan --debug generate
# сгенерировать конфигурационные файлы
sudo netplan apply
# применить конфигурацию
reboot
# перезагрузить сервер
Хорошо, похоже, что в этой среде был установлен и удален пакет resolvconf, сохранив файл /etc/resolv.conf
. Удаление этого файла решило проблему.
Если после перезагрузки у вас восстанавливается файл настроек *.yaml, который содержит в себе старые настройки, которые вы изменили до перезагрузки, то скорее всего это можно исправить, создав файл в директории /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg с таким текстом внутри:
network: {config: disabled}
Файл запрещает создавать настройки конфигурации netplan (обычно такое бывает на виртуальных машинах).
Подробнее об этом описано здесь:
https://devhops.ru/linux/ubuntu/network/netplan.php
Хорошо – я сделал именно так, как посоветовал @heynnema, чтобы настроить статический IP, и вот что я получаю после перезагрузки:
neilp@Lubuntu:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
*2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 44:87:fc:5a:92:73 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.199/24 brd 192.168.0.255 scope global enp3s0
valid_lft forever preferred_lft forever
inet 192.168.0.214/24 brd 192.168.0.255 scope global secondary enp3s0
valid_lft forever preferred_lft forever
inet6 2c0f:f5f0:40e0:60:4687:fcff:fe5a:9273/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2591931sec preferred_lft 604731sec
inet6 fe80::4687:fcff:fe5a:9273/64 scope link
valid_lft forever preferred_lft forever*
192.168.0.214 – это желаемый статический IP-адрес, но 192.168.0.199/24 адрес от DHCP, и, похоже, это происходит потому, что по какой-то причине система постоянно генерирует файл /run/netplan/enp3s0.yaml со следующим содержимым:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
dhcp-identifier: mac
critical: true
nameservers:
addresses: ["192.168.0.1"]
Удаление этого файла не помогает, потому что он просто восстанавливается после перезагрузки.
Ответ или решение
Почему конфигурация Netplan не сохраняется при перезагрузке и как это исправить
Проблема: Вы настроили сетевые интерфейсы на сервере с Ubuntu 18.04 (Bionic), используя Netplan, и после выполнения команды netplan apply
ваши изменения вступили в силу. Однако после перезагрузки конфигурация не восстанавливается, и разрешение имен осуществляется по умолчанию через 127.0.0.53
. Вам необходимо обеспечить постоянство настроек для сетевых интерфейсов.
1. Понимание конфликта YAML-файлов
На вашей системе существует несколько файлов YAML в директории /etc/netplan
, среди которых:
10-nameservers.yaml
50-cloud-init.yaml
interfaces_ens160.yaml
Ваша проблема в том, что могут быть конфликты между этими файлами. cloud-init
, который часто используется в облачных средах, может автоматически перезаписывать настройки, если его конфигурация не отключена.
2. Действия по устранению проблемы
2.1. Переименование существующих файлов
Для начала, вы можете переименовать или удалить существующие YAML-файлы, чтобы исключить конфликты.
sudo mv /etc/netplan/10-nameservers.yaml /etc/netplan/10-nameservers.yaml.HOLD
sudo mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.HOLD
sudo mv /etc/netplan/interfaces_ens160.yaml /etc/netplan/interfaces_ens160.yaml.HOLD
2.2. Создание нового конфигурационного файла
Создайте новый файл конфигурации, который будет аккумулировать все настройки. Например, создайте файл /etc/netplan/config.yaml
с содержимым:
network:
version: 2
renderer: networkd
ethernets:
ens160:
addresses: [172.16.0.1/16]
gateway4: 172.16.100.1
nameservers:
addresses: [10.0.0.8, 8.8.8.8, 10.15.0.18]
Обратите внимание на правильность отступов: в YAML используются пробелы, и табуляция недопустима.
2.3. Генерация и применение конфигурации
После создания нового файла выполните команды для генерации и применения конфигурации:
sudo netplan --debug generate
sudo netplan apply
3. Отключение автоматической настройки сети от Cloud-Init
Если после перезагрузки конфигурация снова меняется, возможно, cloud-init
применяет свои настройки. Для отключения этой функции создайте файл /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
со следующим содержимым:
network: {config: disabled}
Это остановит cloud-init
от изменения сетевых конфигураций.
4. Убедитесь в отсутствии конфликтов с resolvconf
Если на вашей системе установлен пакет resolvconf
, возможно, его отсутствие в системе netplan
также приводит к проблемам с разрешением имен. Убедитесь, что файл /etc/resolv.conf
корректно указывает на нужные вам DNS-сервера, или удалите его, если он не актуален.
5. Заключение
После выполнения всех вышеперечисленных шагов конфигурация Netplan должна сохраняться даже при перезагрузке системы. Если проблемы сохраняются, стоит проверить логи системы для более детального анализа возможных конфликтов или ошибок.
Создание правильной конфигурации для сетевых интерфейсов в Ubuntu через Netplan является важной задачей для обеспечения стабильного соединения. Следуя этим рекомендациям, вы сможете решить вашу проблему и достичь желаемого результата.