写给 Geek 们的 IPv6 组网最佳实践系列:处理动态前缀造成的种种问题
本文属于《写给 Geek 们的 IPv6 组网最佳实践》系列,旨在为需要小范围 IPv6 组网(如家庭组网)的爱好者们提供最佳实践方案和常见问题解答,部分概念性内容为方便理解可能会过度简化,部分方案可能不适用企业宽带接入、大规模组网等场景。首发于 V2EX ,现重发到本人的个人网站《云行者》,转载请注明出处。 问题描述 IPv6 下 LAN 侧每一台机器都会获得独立的公网 IPv6 地址。 目前国内绝大多数地区的家庭带宽是通过 PPPoE 虚拟拨号接入的,下发的 IPv6 前缀会在每次重新拨号后发生变化。这就需要我们重新给 LAN 侧的设备分配 IPv6 地址,以及处理前缀变化造成的种种问题,如服务发现及防火墙配置。 前缀前化导致的断网问题 举例说明 假设光猫运行在桥接模式,路由器拨号获得 IPv6 PD 前缀 2001:db8:beef:1200::/56。路由器下联一个 LAN ,指定 PD 前缀的 SLA ID 为1(也就是从2001:db8:beef:1200::/56 挑选第 1 个(从 0 开始数)/64子网),路由器会将2001:db8:beef:1201::/64 这个子前缀划为给 LAN 。正确配置的情况下所有 LAN 下的设备都将获得2001:db8:beef:1201:xxxx:xxxx:xxxx:xxxx/64 格式的地址。 此时路由器上的 PPPoE 断开后重拨,ISP 下发新的 PD 前缀 2001:db8:dead:ab00::/56。此时路由器应该向 LAN 下的所有设备宣告原前缀2001:db8:beef:1201::/64失效,并重新下发 2001:db8:dead:ab01::/64 前缀,否则 LAN 下的设备可能会因为继续使用老前缀而导网络中断。 解决方法 最佳实践:关闭 DHCPv6 服务,改用 SLAAC 无状态分配。DHCPv6 分配的地址存在一个租期,除非租期快到了,用户设备不会重新请求一个新的地址。而 SLAAC 可以由服务器主动通知用户设备前缀失效。如果无特殊理由,可以禁用 DHCPv6 。此外,现在无状态分配也可以通过 RDNSS 选项配置 DNS ,现代操作系统都支持。DHCPv6 已经没有必要使用了,尤其是 Android 不支持 DHCPv6 。 次佳方案:将 DHCPv6 租期调短,比如 5 分钟。这样如果前缀变更,最长 5 分钟老前缀就会失效。 已经使用纯无状态分配了,但重新拨号后老前缀没有失效? 前面说了,SLAAC 可以由服务器主动通知用户设备前缀失效。但这只是协议支持。如果重新拨号后老前缀没有失效或者新前缀没有下发,说明你的路由器固件存在问题。在条件允许的情况下,换一个其他的的固件吧。...