虽然海量的 IPv6 地址可以达成工程师眼中的完美网络构形,但长期存在的 NAT 网络拓朴也有其存在的道理。

就目前来说,我只要求宽带能获取一个公网 IP,而非每个终端都有公网 ip。通过 NAT6 技术,通过一个DDNS就可以追踪所有设备;也可以避免PPPOE重拨号后导致的终端不可访问问题。

前提:

  1. 能获取到IPv6地址。
  2. 安装 ip6tables 和 kmod-ipt-nat6。
  3. 手动获取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"

最后:

  1. 访问 ipw.cn,如果显示的 IPv6 地址和 wan 口获取的 IPv6 地址一致,则表示成功。
  2. 可以通过搭配 Adguardhome 过滤 IPv6 的解析,使电脑只访问 v4 站点。

标签: none