我网络上的路由器会分发我ISP分配的IPv6前缀。该前缀是动态的,但“相当粘”。
我希望我的机器自动选择在RA中发布的前缀,但将其与用户指定的本地部分结合在一起,而不是随机生成一个前缀或基于MAC地址。有没有简单的方法可以做到这一点?
我网络上的路由器会分发我ISP分配的IPv6前缀。该前缀是动态的,但“相当粘”。
我希望我的机器自动选择在RA中发布的前缀,但将其与用户指定的本地部分结合在一起,而不是随机生成一个前缀或基于MAC地址。有没有简单的方法可以做到这一点?
Answers:
有两种方法可以做到这一点。一种是简单的方法,一种是困难的方法。
简单的方法是在网络上运行DHCPv6服务器,并为每个设备自己分配主机地址。或者让服务器选择主机部分;即使前缀发生更改,我所见过的DHCPv6服务器也将保留相同的主机部分。
困难的方法是使用ip token
设置标记化的接口标识符。描述为:
IPv6标记化的接口标识符支持用于为节点分配众所周知的主机部分地址,同时仍从路由器通告中获取全局网络前缀。标记标识符的主要目标是服务器平台,在该服务器平台上通常是手动配置地址,而不是使用DHCPv6或SLAAC。通过使用标记化标识符,主机仍可以通过使用SLAAC来确定其网络前缀,但是如果其网络前缀发生更改,主机将更易于自动重新编号。草案中描述了标记化的IPv6标识符:<draft-chown-6man-tokenised-ipv6-identifiers-02>。
之所以如此困难,是因为尽管Linux包含此功能,但我所知的Linux发行版都不支持将这样的配置持久化并在引导时应用它,就像它们对手动或DHCP配置的地址一样。因此,除非进行某些分发,否则它可能不会很好地为您服务。注意,现在可以在NetworkManager和systemd-networkd中配置IPv6令牌。最近的答案有特定的配置说明。
最后,如果您的ISP偶尔更改前缀,请考虑在网络中使用唯一本地地址。这样,您所有的设备将始终具有一个永远不会更改的地址,它们可以彼此通信。一些支持IPv6的家庭/ SOHO路由器(例如OpenWrt)可以选择在整个家庭网络中启用ULA。如果家中有多个路由器,则应在连接到ISP的路由器上启用此功能。
迈克尔做了一个很好的总结,plugwash的最新技巧是我花了几个小时寻找CentOS 7 / RHEL(也是系统和网络管理器)解决方案之后找到的最好的技巧。习惯了nmcli之后(我主要还是使用ifcfg和ip)-我可以成功地应用它。
但是根据https://developer.gnome.org/NetworkManager/stable/settings-ipv6.html深入研究NetworkManager直接支持将IPv6标记化的接口标识符作为属性(从2016年8月1.4版开始http://news.softpedia.com/ news / networkmanager-1-4-adds-support-for-setting-ipv6-tokenized-interface-identifiers-507601.shtml)。
因此,您无需将网络管理器IPv6设置设置为忽略,而是应将设置设置为
nmcli connection modify eth0 ipv6.method "auto" # if not already
nmcli connection modify eth0 ipv6.addr-gen-mode "eui64" # use interface token
nmcli connection modify eth0 ipv6.token "::2"
它将写入IPV6_TOKEN=::2
/ etc / sysconfig / network-scripts / ifcfg-eth0以在重新启动后幸存下来。要立即应用,请通过以下方式重新启动界面
nmcli connection up id eth0 # restart