我有以下场景:使用 Fritzbox 路由器后面的旧 PC,我想使用 docker 设置几个小服务。Fritzbox 要求我的 PC 具有静态接口地址,以便端口转发功能正常工作。但每当我重新启动 PC 时,ipv6 接口部分似乎在两个单独的接口之间交替。一个是 xxxx:xxxx:f6d1:cbfa(这已经是 fritz-box 内的标准接口),另一个是部分 xxxx:xxxx:fe08:f24(根据 fe80 地址,它似乎是网络内部的某种本地 ip)。
现在我的具体问题是如何让 Ubuntu 22.04 表现得像一个好的系统并始终使用 xxxx:xxxx:f6d1:cbfa 作为其接口 ip 部分?有某种配置文件吗?
提前致谢。
答案1
IPv6 有几种选择,用于确定稳定的 IP 地址。在主机上定义静态接口 ID。DHCPv6 保留地址不变。以及可以根据已知值计算的值,例如基于第 2 层地址的 EUI-64。假设您想要静态主机 ID。
标记化 IPv6 标识符是用户提供的低 64 位附加到现有 /64 前缀上。应该使前缀更改更容易。Linux iproute 有一个实现,man ip token
。但在 Linux 上,事情过于复杂,并且有竞争网络管理器可供选择,以使这些功能合理使用。
和网络计划这是设备属性ipv6-address-token
ethernets:
eth0:
ipv6-address-token: "::f6d1:cbfa"
systemd-networkd 形式为Token=static::f6d1:cbfa
NetworkManager 将设置ipv6.token
为::f6d1:cbfa
只是为了好玩,Gentoo可以放入ip token set ::f6d1:cbfa dev eth0
一个 postup() 钩子。
xxxx:xxxx:fe08:f24(根据 fe80 地址,这似乎是网络内部某种本地 IP)。
fe80::/10 是本地链接。换句话说,当最高有效位为 fe8 时。
数字序列“fe”可以并且将出现在地址的其余部分,但这并不要求该地址与链路本地有任何关系。例如,2001:db8 :: fe80:f24 是全球单播。