前提,你的openwrt路由器已经能获取到公网IPV6地址,我用的是电信宽带,通过PPPoE拨号获得IPv4和IPv6地址各一个。之前想尝试过很多办法,都有各种问题,最后还是直接NAT6安心。。。
下面内容全部进行过测试,全新安装后仍成功,按顺序
潘多拉,openwrt,lede原版按照此方法都可以
(红字部分为代码,使用putty登陆openwrt后使用)
1、安装kmod-ipt-nat6
opkg update && opkg install kmod-ipt-nat6
2、将”IPv6 ULA Prefix” 第一个字母 f 改为 d
uci set network.globals.ula_prefix=”$(uci get network.globals.ula_prefix | sed ‘s/^./d/’)”
uci commit network
3、Set the DHCP server to “Always announce default router”
uci set dhcp.lan.ra_default=’1′
uci commit dhcp
4、生成nat6脚本,脚本内容在附件里,别忘了粘贴
touch /etc/init.d/nat6
vi /etc/init.d/nat6
nat6附件:点此下载
5、修改权限,并启用
chmod +x /etc/init.d/nat6
/etc/init.d/nat6 enable
6、伪装已开启,关闭 “Allow-ICMPv6-Forward”
uci set firewall.@rule[“$(uci show firewall | grep ‘Allow-ICMPv6-Forward’ | cut -d'[‘ -f2 | cut -d’]’ -f1)”].enabled=’0′
uci commit firewall
7、修改/etc/sysctl.conf,把文件中相关内容改为以下内容,没有的话就添加,接收广播并开启ipv6转发
net.ipv6.conf.default.forwarding=2
net.ipv6.conf.all.forwarding=2
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.all.accept_ra=2
8、加入转发规则,编辑/etc/firewall.user,或路由器界面防火墙规则里加上
ip6tables -t nat -I POSTROUTING -s $(uci get network.globals.ula_prefix) -j MASQUERADE
9、重启路由器,配置正确的话就可以用了。
除了vi和opkg,其他命令正常是没有返回的。
转载请注明:openwrt配置IPv6 NAT6,使后端设备获得ipv6网络 - https://shuodatong.com/openwrt-ipv6-nat6/