Конфигурация Netplan не является постоянной.

Вопрос или проблема

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

Оцените материал
Добавить комментарий

Капча загружается...