在 Openwrt Chaos Calmer 中配置 IPv6 NAT

参考文章:“ 在OpenWrt上配置原生IPv6 NAT ”

我的环境和参考文章中类似都是教育网,使用 Openwrt 版本一样(15.05-rc2 比较精简,不带 luci,D-Link DIR-605 中可怜的 4M flash 居然能剩896K空间可以安装软件),对参考文章的步骤略做修改。

  1. 刷入 Openwrt 15.05-rc2,使用原始配置,安装 IPv6 内核 nat 模块及路由追踪软件:

    opkg update
    opkg install kmod-ipt-nat6
    opkg install iputils-tracepath6
  2. 修改 /etc/init.d/dhcp , 在设置 lan 那节添加内容,odhcpd 为内网设备设置 IPv6 地址及路由等,如下:

    config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv6 'server'
        option ra 'server'
        option ra_management '1'
        option ra_default '1'
  3. 更改 /etc/firewall.user ,添加一行,为内网访问外网 IPv6 时提供IP伪装

    ip6tables -t nat -A POSTROUTING -o $(uci -q get network.wan6.ifname) -j MASQUERADE
  4. 创建 /etc/hotplug.d/iface/90-ipv6 ,设置外网 IPv6 路由,修改文件属性为755, 内容如下:

    #!/bin/sh
    
    [ "$ACTION" = ifup ] || exit 0
    
    [ "$INTERFACE" = wan6 ] && {              
      route -A inet6 add ::/0 gw $(tracepath6 -n tv.byr.cn | grep ' 1: ' | awk 'NR==1 {print $2}') dev $(uci -q get network.wan6.ifname)
    }

    通过 tracepath6 -n tv.byr.cn 获取外网 IPv6 网关,可选择其它较快且能连通的 IPv6 服务器,注意不要用 ipv6.google.com 。

重启路由器或者重启网络和防火墙(/etc/init.d/network restart; /etc/init.d/firewall restart),然后可以测试内网设备访问IPv6。


补充:有时我这里可能是外网获得 IPv6 地址太慢,导致 IPv6 路由添加失败。于是我创建了一个检测并添加 IPv6 路由的脚本 /etc/config/route6

#!/bin/sh

GATEWAY6=$(tracepath6 -n tv.byr.cn | grep ' 1: ' | awk 'NR==1 {print $2}')                       
if [ -z "$(route -A inet6 | grep '::/0' | grep ${GATEWAY6})" ]; then                                                   
  route -A inet6 add ::/0 gw ${GATEWAY6} dev $(uci -q get network.wan6.ifname)
fi

然后在 /etc/crontab/root 中添加一行,cron每分钟检测一次 IPv6 路由:

* * * * * /bin/sh /etc/config/route6


你可能感兴趣的:(NAT,ipv6,openwrt,ChaosCalmer)