在OpenWrt上配置原生IPv6 NAT

来源:互联网 发布:淘宝网热卖怎么加入 编辑:程序博客网 时间:2024/06/03 22:40

准备工作
配置好路由使其能够连接网络,WAN口能够获取全球单播IPv6地址。
更改网络-接口设置。WAN选用DHCP客户端即可,WAN6要用默认的DHCPv6客户端,但是要改成强制请求IPv6地址并禁用请求指定长度的IPv6前缀,重新连接一下看看WAN6是否出现了IPv6地址,如果依旧没有,可以按照官方文档所说将wan的ipv6选项设为1:

uci set network.wan.ipv6='1'uci commit network

步骤
安装ip6tables和kmod-ipt-nat6。

opkg updateopkg install ip6tablesopkg install kmod-ipt-nat6

更改/etc/config/network,在config interface ‘lan’下添加一行:

option ip6addr 'fc00:100:100:1::1/64'

更改/etc/config/dhcp,将config dhcp ‘lan’那一栏改为以下内容:

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'

更改/etc/firewall.user,假设WAN对应的接口为eth0.2,则添加以下内容:

ip6tables -t nat -A POSTROUTING -o eth0.2 -j MASQUERADE

重启路由,看看电脑是否能够ping通IPv6地址,如果不能,再进行以下补充步骤.

将网线直接连电脑上,待能够正常上网后,运行CMD,输入以下命令:

tracert ipv6.google.com

tracert结果的第一跳就是你目前的网关,记下后面的IPv6地址,假设是2001:1234:1234:1234::1.

SSH连接路由器,输入以下命令:

route -A inet6 add default gw 2001:1234:1234:1234::1

这个时候应该立即可以打开支持IPv6访问的网站了.

要做到路由器开机自动添加该网关,可以在/etc/hotplug.d/iface/下新建一个文件90-ipv6,给予可执行权限,内容为

#!/bin/sh[ "$ACTION" = ifup ] || exit 0route -A inet6 add default gw 2001:1234:1234:1234::1

如果路由器自身能获取到ipv6地址却无法ping通外网ipv6(多半是PandoraBox),请尝试如下操作:

uci set network.wan6.sourcefilter=0uci commit networkifup wan6

另外,如果按照上文配置后内网机器能Ping通ipv6但是无法上网,可能是因为ip6tables阻断,需要关闭ip6tables

ip6tables -Fip6tables -P INPUT ACCEPTip6tables -P FORWARD ACCEPTip6tables -P OUTPUT ACCEPT

参考链接:
http://blog.csdn.net/cod1ng/article/details/45421025
http://www.jianshu.com/p/eb07eaac6167
https://www.shintaku.cc/posts/nat6/这里写代码片