Debian/Mint/Raspbian/Ubuntu - 如何强制 SLAAC EUI64 IPv6 自动配置?

Debian/Mint/Raspbian/Ubuntu - 如何强制 SLAAC EUI64 IPv6 自动配置?

我有一个静态 IPv6 /62 前缀,我在路由器(运行 Debian)上使用 radvd 将其中的 /64 通告到我的整个网络。除了我的路由器(即 ::1)之外,我让 EUI64 根据 MA​​C 地址设置后缀(即匹配自动 fe80:: 地址的后缀)。

出于隐私原因,大多数 Linux 都转而屏蔽此地址。我其实并不担心隐私问题,而且,我希望为 sshd 等服务提供一个完全可预测的 IPv6 地址。

理论上,这应该很容易配置。例如,在运行 Raspbian 的 Raspberry Pi 上,我在 /etc/sysctl.conf 文件中添加了:

###################################################################

# 启用 IPv6 EUI64

#

net.ipv6.conf.all.use_tempaddr=0

net.ipv6.conf.默认.use_tempaddr=0

net.ipv6.conf.eth0.use_tempaddr=0

唉,什么都没变。(最后一行是最后一次尝试;前两行确实应该单独起作用。)

这些操作系统中的某些东西阻止了 EUI64 运行。这是什么问题?如何启用它?

这台特殊的机器不是正在运行 NetworkManager,但其中一些是。

答案1

您混淆了两种不同的地址类型:

  • 根据 RFC 4941“隐私扩展”生成的临时地址,
  • 根据 RFC 7217“不透明接口标识符”生成的永久地址。

前者总是产生此外默认地址并且不要替换它,所以肯定不是你想要的。

后者确实取代了基于 EUI64 的默认地址,但它们不是暂时的与旋钮无关use_tempaddr。相反,您需要更改主地址生成模式:

  • 如果 SLAAC 由内核执行,请更改此 sysctl:

    net.ipv6.conf.default.addr_gen_mode = 0
    net.ipv6.conf.eth0.addr_gen_mode = 0
    

    (查看源代码,它似乎没有all.addr_gen_mode实现。)

  • 如果 SLAAC 由DHCP服务器,请使用此dhcpcd.conf选项:

    slaac hwaddr
    
  • 如果 SLAAC 由 NetworkManager 执行:

    nmcli con modify "Connection name" ipv6.addr-gen-mode eui64
    

相关内容