硬件环境
出口路由:Openwork
防火墙(路由模式):Fortigate (局域网互联路由)
网络环境
局域网已有IPv4,现新增IPv6环境。
运营商分配前缀(PD):2408:3333:4444:6ab0::/60
运营商分配IPv6出口地址:2408:4444:4423:x::x/64
子网划分
需要知道的是,我们首先拿到一个IPv6前缀后,需要规划子网段,从而使得局域网互联路由下的终端都能拿到IPv6地址,当然字网划分的前提是运营商给你分配了一个小于64位长度的前缀。像这个环境中,我们假设只有两跳路由,那么我们要确保整个网络环境能分配的地址都在2408:3333:4444:6ab0::/60内。
互联网出口地址已经由运营商分配,不需要我们操心,我们需要分配Openwrt与Fortigate互联的地址段、Fortigate下的LAN地址段。因此整个前缀我们可以简单划分为两个字网:
2408:3333:4444:6ab0::/61,用于路由器互联,有点奢侈。
2408:3333:4444:6ab8::/61,用户Fortigate下的终端地址分配。
初尝试
Openwrt LAN的DHCPv6设置如下,为默认不变,其实不开DHCPv6也可以
- 路由通告服务: 服务器模式
- DHCPv6服务:服务器模式
- NDP代理:禁用
- DHCPv6模式:有状态+无状态
Openwrt LAN口设置分配前缀长度为61,IPv6地址2408:3333:4444:6ab0::1
Fortigate与Openwrt互联端口分配地址为2408:3333:4444:6ab0::2/61
Fortigate LAN口IPv6地址设置为手动2408:3333:4444:6ab8::1/61
Fortigate LAN开启DHCPv6,设置为SLAAC及手动指定DNS地址。
Fortigate配置IPv6静态默认路由,下一跳指向 2408:3333:4444:6ab0::1 ,原则上这里下一跳应该是Openwrt的链路本地地址,可以减少路由表查询。
Fortigate配置安全策略,放行所有IPv6流量。
Fortigate配置NAT策略,来自LAN的所有IPv6流量均不做NAT转换。
Openwrt配置静态IPv6路由,目的地2408:3333:4444:6ab8::/61,下一跳2408:3333:4444:6ab0::2
配置验证
- 从Fortigate使用默认配置ping 2408:3333:4444:6ab0::1 正常。
- 从Fortigate使用默认配置ping 运营商IPv6 DNS地址正常。
- 从Fortigate下的LAN ping 2408:3333:4444:6ab0::1正常。
- 从Fortigate下的LAN ping运营商IPv6 DNS地址正常。
疑难问题
- Fortigate下的设备无法通过DHCPv6获取IPv6地址,但可手动设置IPv6地址,指定网关后可访问公网IPv6。
解决办法:除开启SLAAC外,在DHCPv6配置中指定有状态服务器,指定IPv6地址分配范围。 - 运营商IPV6前缀在家宽环境下经常会变,导致静态配置IPv6地址无法使用。
解决办法:待研究IPv6 Prefix delegation可能可以解决。
本文由 Ethan 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。