我正在寻找一种工具,非常类似于 rdisc6,它将在收到 RA 后使用静态 IID 在接口上配置 v6 地址。这是一个需要位于 ULA 内已知地址的服务器。(不,我不能使用 mDNS 和 SLAAC,因为涉及到绑定到名称的证书,并且在配置此接口之前,mDNS 甚至可能无法工作)。
如果必须的话,我会扩展 rdisc6,但我希望不要复制某人已经做过的事情。这将在 LXC 容器内的 Linux (armv7) 上运行。
您应该能够为此使用 IPv6 令牌。IPv6 令牌是手动设置的 IID,无论通过 SLAAC 分配的 IPv6 前缀如何,它都保持不变。使用 IPv6 令牌需要 SLAAC。
您可以通过在 NetworkManager 中设置接口属性来持久配置令牌。
# nmcli c mod enp4s0 ipv6.addr-gen-mode eui64
# nmcli c mod enp4s0 ipv6.token ::deca:fbad:c0:ffee
Run Code Online (Sandbox Code Playgroud)
现在带有子网前缀2001:db8:dead:beef::/64的接口将拥有 IPv6 地址2001:db8:dead:beef:deca:fbad:c0:ffee。
要删除令牌,请将其设置为空值。然后,您可以将 addr-gen-mode 重置为其默认值。
# nmcli c mod enp4s0 ipv6.token ''
# nmcli c mod enp4s0 ipv6.addr-gen-mode stable-privacy
Run Code Online (Sandbox Code Playgroud)
使用 systemd-networkd,IPv6Token=在配置[Network]部分设置属性。
您也可以ip token手动运行该命令。为了用于配置容器,这可能是您最终要做的事情。
如果您需要在单个接口上使用多个 IID,那么您将不得不手动设置它们。没有别的东西可以帮助你。