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

Добавьте IP-адреса в systemd-network помимо netplan

На сервере Ubuntu 20.04 netplan используется для настройки сети. Он может настраивать обычные статические IP-адреса, но мне нужны дополнительные IPv6-адреса с предпочтительным_lft = 0. Netplan не может этого сделать (для этого есть открытая ошибка). Итак, я обнаружил, что на самом деле это выглядит так:

Если netplan не может мне помочь, я попытался перейти на systemd. Поскольку я не хочу полностью удалять очевидно широко используемый и высоко оцененный netplan, мне просто нужно добавить мои дополнительные адреса помимо базовой конфигурации netplan.

Я попытался создать файл /etc/systemd/network/web-ipv6.conf с таким содержимым:

[Match]
Name=ens33 (this is the name from the existing netplan file)

[Address]
Address=fd9e:21a7:a92c:2323::2/64
PreferredLifetime=0

Адрес fd9e: 21a7: a92c: 2323 :: 1 настраивается статически через netplan. В этой демонстрации это локальный адрес, на самом деле это основной IPv6-адрес моего сервера. Дополнительные адреса имеют другое значение интерфейса, например ... :: 2.

Думаю, мне нужно применить свою конфигурацию с systemctl restart systemd-networkd но я не уверен. В журнале написано то, что я считаю успешным. Но новый IPv6-адрес ... :: 2 не отображается в ip addr.

На странице руководства для systemd.network я прочитал, что только один файл для [Match] будет использоваться. Теперь у меня явно есть два файла: один из netplan (/run/systemd/network/10-netplan-ens33.network), а другой - из моего. Так что, похоже, это не работает. Но я не хочу редактировать файл netplan, поскольку он наверняка когда-нибудь будет перезаписан.

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

Должен ли я вернуться к ifupdown или что было в старину? В предыдущей настройке сервера я использовал файл с именем /etc/network/if-up.d/dynamic6, который содержит все ip addr add ... dev ... preferred_lft 0 команды. Судя по тому, что я видел, сегодня это считается устаревшим.

Кажется, старая функция ifupdown была воссоздана для systemd-networkd. Посылка сетевой диспетчер, предустановленный на Ubuntu Server 20.04, позволяет мне добавить сценарий в /etc/networkd-dispatcher/routable.d/, который запускается при подключении устройства. В этом скрипте я могу запустить ip addr add Команды как мне нужно. Это называется netplan apply, systemctl restart systemd-networkd и при загрузке системы. Во всех случаях мои дополнительные IPv6-адреса были добавлены как «устаревшие», хотя в противном случае они отсутствовали бы.

Вот статья, которая объясняет это с коротким образцом сценария: https://andreas.scherbaum.la/blog/archives/963-if-up-and-if-down-scripts-with-systemd.html