如何确保 IPv6 链路本地地址格式与 MAC 地址一致

如何确保 IPv6 链路本地地址格式与 MAC 地址一致

在我的定制 Yocto Linux 版本中,我想使用 IPv6 链接本地地址。我有地址fe80::bdc2:521:a893:b757/64,但我的 MAC 地址是e4:5f:01:75:d3:04。据我所知,它们应该对应。我不确定这个地址的持久性如何。我如何强制它使用基于 MAC 的地址?在我的所有其他 Linux 计算机上,除了安装了 Raspbian 的 Raspberry Pi 外,这都是这样工作的。

答案1

据我所知,它们应该对应

这不是必需的。链路本地地址仍然使用邻居发现,因此不需要任何特定格式。

我不确定这个地址的持久性如何。

取决于生成它的软件。非基于 MAC 地址的地址是可能使用 RFC7217 样式的基于哈希的生成;用户空间软件(例如 systemd-networkd)将自动使用基于文件的种子(例如)/etc/machine-id——但另一方面,内核地址分配代码没有办法生成和存储种子,因此只有在手动设置 sysctl 时,地址才会持久.stable_secret

我怎样才能强制它使用基于 MAC 地址?

如果地址是由内核分配的(即显示proto kernel_ll),则将接口的addrgenmode参数设置为eui64

  • 通过网络链接:ip link set eth0 addrgenmode eui64
  • 通过 sysctl:sysctl net.ipv6.conf.eth0.addr_gen_mode=0

相关内容