OpenWRT 22 配置 NAT66

Jul 22, 2023 • 预计阅读时间 2 分钟

以下操作仅适用于 OpenWRT 22 以及更高版本,低于 22 版本不支持。

nat66 是用于内网 IPv6 共享公网 IPv6 上网的方案。例如你的运营商只分配给你一个后缀是 126 的 IPv6 地址,或者公网 IPv6 地址是经常变动的,那么 nat66 就是最合适的解决方案。

配置的思路就是把路由器作为 RA 服务器,使用 stateless 的模式向终端下发 IPv6 地址(Android 设备仅支持 statless 模式)。

编辑防火墙的 wan 口设置

开启 nat66

把路由器作为 RA 服务器

需要禁用 IPv6 source routing

还需要设置一下子网前缀过滤,让终端仅生成和 RA 前缀一致的 IPv6 地址,避免遇到 IPv6 PD 的时候终端会忽略 RA 前缀的问题。

设置 IPv6 前缀过滤

经过以上配置,客户端就能自动生成 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 服务器的一致。

设置前缀为 fd12:34:56

如果还要区分同一个路由器中不同接口下发的 IPv6 地址,需要在接口中配置 ip6assignip6hintip6assign 表示起始范围,ip6hint 表示结束地址:

通过这个接口连接的终端,IPv6 的前缀为 fd12:34:56:78

看一下终端自动生成的 IPv6 地址:

OpenWRTIPv6
版权声明:如果转发请带上本文链接和注明来源。

lvv.me

iOS/macOS Developer

使用 CSS Flex 实现指定间距的九宫格

Swift 的元组(Tuple)