除了 netplan 之外,还向 systemd-network 添加 IP 地址

除了 netplan 之外,还向 systemd-network 添加 IP 地址

在 Ubuntu 20.04 服务器上,使用 netplan 配置网络。它可以配置普通的静态 IP 地址,但我需要 preferred_lft=0 的额外 IPv6 地址。Netplan 无法做到这一点(这有一个未解决的错误)。所以我发现它实际上是这样的:

  • Netplan 读取其自身有限的配置并将其转换为更强大的 systemd-network 的配置。
  • ip当网络设备出现时,systemd-network 可能会将其数据传递给命令之类的东西。
  • 然后网络设备应用实际配置。在这里一切皆有可能。

如果 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命令。据我所知,这在今天被认为是弃用的。

答案1

似乎旧的 ifupdown 功能已为 systemd-networkd 重新创建。该软件包网络调度程序,预装在 Ubuntu Server 20.04 上,让我可以在 /etc/networkd-dispatcher/routable.d/ 中添加一个脚本,该脚本在设备启动时执行。在该脚本中,我可以根据需要运行命令ip addr add。它在和 系统启动时被调用。在所有情况下,我的额外 IPv6 地址都被添加为“已弃用”,否则它们会丢失。netplan applysystemctl restart systemd-networkd

这里有一篇解释它的文章,其中包含一个简短的示例脚本:https://andreas.scherbaum.la/blog/archives/963-if-up-and-if-down-scripts-with-systemd.html

相关内容