OpenWrt 启用 IPv6 NAT
虽然海量的 IPv6 地址可以达成工程师眼中的完美网络构形,但长期存在的 NAT 网络拓朴也有其存在的道理。
就目前来说,我只要求宽带能获取一个公网 IP,而非每个终端都有公网 ip。通过 NAT6 技术,通过一个DDNS就可以追踪所有设备;也可以避免PPPOE重拨号后导致的终端不可访问问题。
前提:
- 能获取到IPv6地址。
- 安装 ip6tables 和 kmod-ipt-nat6。
- 手动获取wan接口的IPv6地址。
设置代码:
#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
iface_dhcp=wan6
iface_route=pppoe-wan
[ -z "$iface_dhcp" -o "$INTERFACE" = "$iface_dhcp" ] || exit 0
ip6tables -t nat -I POSTROUTING -s `uci get network.globals.ula_prefix` -j MASQUERADE
gw=$(ip -6 route show default | grep $iface_route | sed 's/from [^ ]* //' | head -n1)
status=$(ip -6 route add $gw 2>&1)
logger -t IPv6 "Done: $status"
最后:
- 访问 ipw.cn,如果显示的 IPv6 地址和 wan 口获取的 IPv6 地址一致,则表示成功。
- 可以通过搭配 Adguardhome 过滤 IPv6 的解析,使电脑只访问 v4 站点。