Назад | Перейти на главную страницу

systemd-networkd: относительно разницы между `/ etc / systemd / network` и` / usr / lib / systemd / network`

Я начал экспериментировать с systemd-networkd как на хост-машине, так и на контейнерах systemd-nspawn. После отключения всех других служб управления сетью, таких как NetworkManager, на хозяин машине я создал файлы .network в

/etc/systemd/network

и все работало нормально. Вместо этого в контейнерах systemd-nspawn система игнорировала файл .network, который я вставил в

/etc/systemd/network/

даже если я правильно сопоставил имя сетевого адаптера (host0) в [Match] Раздел файла .network. Позже, используя

# networkctl status host0

Я обнаружил, что такой интерфейс брал конфигурацию из

/usr/lib/systemd/network/80-container-host0.network

файл. Я вставил в него правильные сетевые настройки, и все заработало.

Из man systemd-networkd:

The configuration files are read from the files located in the system network directory /usr/lib/systemd/network, the volatile runtime network directory  /run/systemd/network and the local administration network directory /etc/systemd/network.

Вопросы:

  1. В чем разница между system network directory и local administration network directory?
  2. Почему контейнер автоматически получает настройки сети из /usr/lib/systemd/network/ каталог?

«Системный сетевой каталог» - это место, куда пакеты должны устанавливать файлы.

«Каталог локального администрирования» - это место, где администраторы-люди должны добавлять и редактировать пользовательские файлы.

Вы сообщаете, что помещаете файл в каталог «/ etc / systemd», но наличие параллельного файла в «/ usr / lib / systemd», по-видимому, перекрывает его.

Файлы в "/ etc / systemd" должны иметь приоритет в случае конфликта. Вы заметили эту другую часть systemd-networkd страница руководства?

Сетевые конфигурации, примененные до запуска networkd, не удаляются, а статическая конфигурация, примененная networkd, не удаляется при выходе из networkd. Динамическую конфигурацию, применяемую networkd, также можно оставить на месте при завершении работы. Это гарантирует, что перезапуск networkd не прерывает сетевое соединение и, в частности, безопасен переход между initrd и реальным корнем и обратно.

Как я это читал, вам может потребоваться полностью остановить управление сетью, чтобы новый файл конфигурации вступил в силу.

Пытаться:

sudo systemctl stop systemd-networkd
sudo systemctl start systemd-networkd

Затем посмотрите, если новые файлы, которые вы создали в /etc/systemd начали быть активными.