Рейтинг:0

основы работы с сетью systemd: невозможно переключиться с DHCP на статический IP-адрес

флаг sa
QF0

Я только начинаю работать с сетью systemd и не могу настроить новую систему со статическим IP-адресом. Это сервер Ubuntu 20.04 по умолчанию, а network-manager и ifupdown не установлены (поэтому нет /etc/network/interfaces и т. д.).

По умолчанию сервер загружается с включенным DHCP, получает IP-адрес и все работает. Теперь я добавил файл /etc/systemd/network/static.network, который содержит базовую настройку:

[Соответствовать]
Имя=е*

[Сеть]
Адрес=192.168.1.20/24
Шлюз=192.168.1.40

Если я сделаю systemctl перезапустить systemd-networkd это игнорируется и статус systemctl показывает, что адрес 192.168.1.10 был назначен от DHCP (enp1s0: адрес DHCPv4 192.168.1.10/24 через 192.168.1.40). Я получаю тот же результат, если я перезагружаюсь; адрес по-прежнему DHCP. Кажется, что статическая.сеть файл полностью игнорируется, но обрабатывается - если я добавлю в файл очевидную ошибку, об этом сообщает команда состояния.Любые идеи, что я делаю неправильно?

На самом деле сервер представляет собой виртуальную машину, работающую под управлением RHEL 8, что, я надеюсь, не имеет значения.

Artur Meinild avatar
флаг vn
Вы должны использовать [netplan.io](https://netplan.io/) для настройки своих сетей в Ubuntu.
QF0 avatar
флаг sa
QF0
@ArturMeinild: центр обработки данных не заинтересован в сетевом плане; говорят, что у них с этим проблемы. Они бы предпочли, чтобы я использовал /etc/network/interfaces. Я думаю, что лучший вариант - использовать systemd, так как он более переносимый и "стандартный". Я думаю.
Random Person avatar
флаг us
Эй QF0! Кросс-постинг обычно не считается хорошей практикой в ​​Stack Exchange. Я предлагаю вам пройти это: https://meta.stackexchange.com/q/64068. Также, пожалуйста, подумайте о том, чтобы посетить страницу [тур].
Рейтинг:0
флаг sa
QF0

Ну, это похоже на ошибку 20.04. .сеть файлы предназначены для обработки в лексическом порядке, в соответствии с этой выдержкой из systemd-networkd документы:

Файлы .network считываются из файлов, расположенных в системе. сетевые каталоги /usr/lib/systemd/network и /usr/local/lib/systemd/network, изменяемый сетевой каталог среды выполнения. /run/systemd/network и сетевой каталог локального администрирования /etc/системд/сеть. Все файлы конфигурации отсортированы вместе и обрабатываются в лексическом порядке, независимо от каталогов, в которых они живут.

Однако, если я включу systemd-networkd отладка (см. здесь если не умеете), оказывается, самый низкий-файл с лексической сортировкой имеет приоритет. Я не могу быть полностью уверен, потому что журналы не показывают порядок обработки и останавливаются только при первом обращении к соответствующему сетевому интерфейсу.

Это то, что я знаю, для простой установки сервера Ubuntu 20.04:

  1. Есть 5 .сеть файлы по всей системе
  2. Один из них создается netplan во время выполнения и называется /run/systemd/сеть/10-netplan-enp1s0.network
  3. Мой новый файл /etc/systemd/сеть/static.network
  4. На systemctl перезапустить systemd-networkd файл netplan имеет приоритет над моим собственным
  5. Если я вручную удалю файл netplan и перезапущу сеть, мой файл будет задействован. Однако это временно, до следующей перезагрузки.
  6. Если я переименую свой файл в 05-static.network тогда он имеет приоритет над файлом netplan

Следовательно, порядок обработки нарушен, если только я не делаю что-то глупое.

В качестве временного исправления вам нужно придать вашему файлу низкий лексический порядок, добавив префикс что-то вроде 05-. Однако это может сломаться при будущем обновлении, если порядок обработки будет обратным. Лучшим решением было бы отключить netplan (не уверен, как это сделать), но это также может сломаться, если что-то еще решит, что нужно создать .сеть файл, чтобы компенсировать отсутствующий файл netplan.

Изменить - удаление сетевого плана

Вы можете полностью удалить netplan с помощью меткая очистка netplan.io. Тем не менее, это может быть плохой идеей — это также удаляет облачная инициализация, например, который требуется DigitalOcean. Так:

# компакт-диск /etc/netplan
# rm 00-installer-config.yaml
# применить сетевой план

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.