OpenWrt iStoreOS X-WRT 配置 IPv6 NAT6
OpenWrt iStoreOS X-WRT 配置 IPv6 NAT6
狂犬主子OpenWrt iStoreOS X-WRT 配置 IPv6 NAT6
为什么要使用NAT6?
通常情况下,IPv6为每个设备都配备了公网IPv6地址。公网IPv6地址数量很多,黑客用枚举法一时半会儿扫不进来。但是,随着量子计算机的发展,未来这一优势将会进一步减弱。
在缺乏网络安全管理的家庭、中小企业中,通常会使用IPv6进行外网远程访问,一些设备由于系统精简、年份较老,如果没有配置好详细的防火墙规则,就会被黑客扫描破解。在量子计算机发展普及的将来,这些攻击将会变得轻而易举。
IPv6在正式普及用起来之前,反而算是一片攻击者的蓝海。
为了提高安全性,同时兼具IPv6升级,我们可以考虑在IPv6网络中使用NAT技术。
此外,一些地区的宽带拨号后没有下发DHCPv6-PD前缀信息,而是直接下发64位IPv6地址,路由器无法分配IPv6地址(当然可以把IPv6相关选项设置成relay模式,但获取的IPv6地址不是你路由器分配的)。
OpenWrt系统配置NAT6
1、安装并更新软件包。
1 | opkg update |
这几个包通常是默认安装的。
2、修改ULA前缀。
这个在IPv6中近似于IPv4的LAN口内网地址。
默认情况下,iStoreOS、X-WRT等系统在第一次启动时会随机生成好ULA前缀,因此我们可以直接跳到第3步。
修改/etc/config/network
文件中的ula_prefix
,如果已有内容,无需修改,直接:q
退出。
1 | vi /etc/config/network |
1 | config globals 'globals' |
如果此时重启网络或OpenWrt系统,下联的设备会获取到ULA前缀开头的64位和128位IPv6地址。
3、配置DHCPv6。
这步千万不能省!!!!!!!
修改/etc/config/dhcp
文件中lan口的DHCPv6配置,如果已有多余的内容,建议从option dhcpv6
开始删除替换。
1 | vi /etc/config/dhcp |
1 | config dhcp 'lan' |
建议从第六行就开始覆盖替换,别自作聪明,直接在浏览器里面用LuCI修改,太强大了你把持不住的。千万别开混合模式。
4、打开IPv6 NAT。
默认情况下,X-WRT在“网络->防火墙->NAT 规则”里面配置好一条名为“nat6”的规则,默认没有启用,我们勾选“启用”,然后点击页面下方的“保存并应用”即可完成配置。
还有些系统,支持FullCone NAT6,虽然支持有限,但建议开启。
其它系统需要修改/etc/firewall.user
脚本,自定义防火墙规则。
方法一:http://路由器的IP地址/cgi-bin/luci/admin/network/firewall/custom
方法二:vi /etc/firewall.user
1 | WAN6=这里填写IPv6 WAN6口的网卡名称,如eth0 |
安全起见,下面两条不建议添加,基本不影响使用:
1 | ip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT |
5、正确配置网关。
这是本文的重点。
在路由器上看一下自己的默认网关。
1 | ip -6 route show default |
1 | default from 2409:8a6c:5722:daf1::52c via fe80::213:32ff:fe09:216d dev eth0 proto static metric 512 pref medium |
如果获得的是这样坑爹的网关,在转发NAT包的时候会有问题,需要创建一个脚本/etc/hotplug.d/iface/99-ipv6
,把去掉from 2409:8a6c:5722:daf1::52c
这一部分的以后的默认路由添加到路由表中。
1 | vi /etc/hotplug.d/iface/99-ipv6 |
网上的教程中,基本上都只获取到一个IPv6地址,如SLAAC或DHCPv6无状态,然而我这边有两个IPv6地址,如DHCPv6有状态+无状态,即使上级路由也有ULA前缀,但实际上网关地址都相同,这回使获取到的信息重复,从而配置无效。用网上的脚本都会出现这个问题 ,自己手动添加路由又正常,就是这个原因导致的。
下面的脚本我已经修改过,只会使用获取到的第一个IPv6地址的网关地址及信息,均测试有效 。
第一种:
1 | #!/bin/sh |
第二种:
1 | #!/bin/sh |
设置权限:
1 | chmod +x /etc/hotplug.d/iface/99-ipv6 |
6、重启路由器使配置生效。
1 | reboot |
7、开启IPv6 DNS解析。
默认情况下,X-WRT已经开启IPv6 DNS解析。
其它系统需要浏览器访问http://路由器的IP地址/cgi-bin/luci/admin/network/dhcp ,点击高级设置,取消“禁止解析 IPv6 DNS 记录”,然后点击页面下方的“保存并应用”。
8、测试。
http://[上一层的IPv6网络设备地址]
如果ipv6-test已出IPv4地址,5秒内未出IPv6地址,那么基本上失败,不用继续等待。
如果第5步网关配置错误,会表现为上一层的IPv6网络设备正常访问,上上层的网络设备(公网)无法访问,ipv6-test失败。
这种情况可以尝试更改/etc/hotplug.d/iface/99-ipv6
文件sed -n '1p'
中的1
。
正常情况下,ipv6-test应该可以正常(10/10)通过,显示的 IPv6 地址为上级路由的 IPv6 地址。
不过这个IPv6的NAT目前还有一些问题,而且相关问题和应用开发的积极性不高,毕竟这与IPv6要消除NAT的初衷相悖,不过对于多线聚合等应用还是有一定意义。相信以后随着IPv6的普及和大佬的进一步研究,以及在企业等大型公共网络中的部署,肯定会出现更完善甚至更独特的解决方案。
参考:
https://openwrt.org/docs/guide-user/network/ipv6/ipv6.nat6