以下操作仅适用于 OpenWRT 22 以及更高版本,低于 22 版本不支持。
nat66
是用于内网 IPv6 共享公网 IPv6 上网的方案。例如你的运营商只分配给你一个后缀是 126 的 IPv6 地址,或者公网 IPv6 地址是经常变动的,那么 nat66
就是最合适的解决方案。
配置的思路就是把路由器作为 RA 服务器,使用 stateless 的模式向终端下发 IPv6 地址(Android 设备仅支持 statless 模式)。
还需要设置一下子网前缀过滤,让终端仅生成和 RA 前缀一致的 IPv6 地址,避免遇到 IPv6 PD 的时候终端会忽略 RA 前缀的问题。
经过以上配置,客户端就能自动生成 IPv6 地址(因为是 stateless 模式,所以是由客户段自己生成 IPv6 地址),并且可以连通外网了。
测试一下效果:
$ curl -v -6 lvv.me
* Trying [2606:4700:3036::ac43:9c63]:80...
* Connected to lvv.me (2606:4700:3036::ac43:9c63) port 80 (#0)
> GET / HTTP/1.1
> Host: lvv.me
> User-Agent: curl/7.88.1
> Accept: */*
…
个性化 IPv6 内网地址
fd00::/8
范围的 IPv6 地址被约定用于内网,其作用类似于 IPv4 的 10.0.0.0/8
, 172.16.0.0/16
, 192.168.0.0/24
。
路由器作为 RA 服务器后,会把自己的前缀通告给终端,终端生成的 IPv6 地址就和 RA 服务器的一致。
如果还要区分同一个路由器中不同接口下发的 IPv6 地址,需要在接口中配置 ip6assign
和 ip6hint
,ip6assign
表示起始范围,ip6hint
表示结束地址:
看一下终端自动生成的 IPv6 地址: