OpenWrt 如何开启 IPv6 NAT
坑边闲话:IPv6 是一个很老但是又很新的技术,它已经发布很多很多年了,但是它至今没有完全普及。在某些 IPv4 地址特别多的发达国家,你甚至看不到 IPv6 的影子。而在另一些特殊场景,ISP 不愿意给用户分配 IPv6 前缀,而只是分配一个简单的 IPv6 地址。这导致内网里的 IPv6 分配出现麻烦。一种可行的解决方式就是对 IPv6 开 NAT. 然而,这并不是一个优美的做法。
1. 查询路由器的默认 IPv6 网关·
首先通过命令 ip -6 route
获取路由器的 default
网关,也就是你路由器的上一级路由器的地址,即下面的 fe80::7625:8aff:fe0e:b250 dev eth2
.
1 | root@OpenWrt:~# ip -6 route | grep default |
然后将上面查询得到的默认网关设置为当前 NAT6 模式下的默认网关。运行命令如下:
1 | route -A inet6 add default gw fe80::7625:8aff:fe0e:b250 dev eth2 |
记住,这里的地址要写你查询出来的那个地址,eth2
也同样如此。
2. 防火墙配置·
修改文件 /etc/user.firewall
,在该文件尾部添加下面这一行。
1 | ip6tables -t nat -A POSTROUTING -o eth2 -j MASQUERADE |
3. 设置 LAN 口 DHCP·
修改文件 /etc/config/dhcp
如下
1 | config dhcp 'LAN' |
4. 修改网络配置·
修改文件 /etc/config/network
如下:
1 | config globals 'globals' |
有的 OpenWRT 发行版,如 eSir 的高大全版本,会把 ULA 前缀删掉,我们需要在 /etc/config/network
里面把这个选项加回来。如果本来就有,可直接在 luci 界面里修改。
总结·
上述 5 个步骤缺一不可,每个配置项都是必须的。
如果还是无法上网,可以尝试更改自己的 DNS 服务器。
最后,本人十分痛恨 NAT 技术,但是无奈 native 的 IPv6 在我的环境下并不稳定,故不得已开启了 NAT6. 而 NAT6 的端口转发颇为复杂,有内网穿透需求的用户,在这种场景下可能左右为难。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Peng Liu's blog!
评论