На сервере Ubuntu 20.04 netplan используется для настройки сети. Он может настраивать обычные статические IP-адреса, но мне нужны дополнительные IPv6-адреса с предпочитаемым_lft = 0. Netplan не может этого сделать это (для этого есть открытая ошибка). Итак, я обнаружил, что на самом деле это выглядит примерно так:
ip
, когда появляется сетевое устройство. Если 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. Пакет networkd-dispatcher, предустановленный на Ubuntu Server 20.04, позволяет мне добавить скрипт в /etc/networkd-dispatcher/routable.d/, который выполняется при появлении устройства. В этом скрипте я могу запускать команды ip addr add
по мере необходимости. Он вызывается netplan apply
, systemctl перезапуска systemd-networkd
и при загрузке системы. Во всех случаях мои дополнительные адреса IPv6 были добавлены как «устаревшие», хотя в противном случае они отсутствовали бы.
Вот статья, которая объясняет это, с коротким примером скрипта: https://andreas.scherbaum.la/blog/archives/963-if-up-and-if-down-scripts-with-systemd .html