openwrt下IPv6配置

进入 OpenWrt 后台「网络-接口」,编辑 wan 接口(通常都是这个名字),修改这些选项:

  • 获取 IPv6 地址:自动
  • 委托 IPv6 前缀:勾选

wan 口的「DHCP 服务器 - IPv6 设置」:

  • 指定的主接口:不勾选
  • RA 服务:禁用
  • DHCPv6 服务:禁用
  • NDP 代理:禁用

保存应用后通常会多出一个名为 wan_6 的虚拟动态接口,因为大部分营运商是通过 DHCPv6 下发地址的,而我们之前选择了「自动」,OpenWrt 识别到之后就会新建一个客户端。若运营商支持现在应该就能看到获取的前缀了(PD):

注意,若只有 fe80:: 开头的地址则说明未获取到 IPv6,这个只是自动生成的链路地址而已。

分配 IPv6

路由器获得了一个网段,下面要做的就是给每一个设备都分配一个公网地址。有两种方案,可以单独选择也可以同时使用,分别是 SLAAC 与 DHCPv6。

SLAAC

SLAAC 是无状态地址自动配置协议,顾名思义,它不再需要 DHCP 服务器来维护状态,而是各个客户端自行生成、协商、通告地址。SLAAC 是唯一全平台支持的协议,Android 明确不会支持有状态 DHCPv6,谷歌认为有状态协议对于终端用户没有明显优点,还会造成隐私问题,属于 IPv4 时代的陋习。

SLAAC 的一个重要数据是路由器定期发送的 RA(路由通告),其包含前缀信息,以及是否应该尝试通告 DHCPv6 请求地址。

要配置纯 SLAAC,需要进入 「lan 口的设置 - 高级设置」:

  • 委托 IPv6 前缀:自选,决定到下级设备能否获得前缀(不影响 IPv6 地址本身的分配)。不懂可以勾上。

  • IPv6 分配长度:启用委托前缀时决定分配下去的前缀长度,划分多个子网时需要,不懂可以填 64 或保持默认。

  • IPv6 分配提示:保持默认就行,划分子网是可选用的。

  • IPv6 后缀:设置当前接口的 IPv6 地址后缀,可以填写 ::1,那么此接口的地址就类似 240e:aaaa:bbbb:cccc::1。

另外还要配置「 lan 口的设置 - DHCP 服务器 - IPv6 设置」:

  • 指定的主接口:不勾选

  • RA 服务:服务器模式

  • DHCPv6 服务:禁用

  • 本地 IPV6 DNS 服务器:勾选

  • NDP 代理:禁用

对应地,修改 「IPv6 RA 设置」:

  • 默认路由器:自动

  • 启用 SLAAC:勾选

  • RA 标记:无,因为我们根本没有 DHCPv6 服务器。

这样保存应用之后,应该所有的下属设备都可以生成公网 IPv6 地址了。