使用桥接方法让Openwrt下的设备也获得可用的IPv6
博主所在学校的实验室提供的网络环境为内网IPv4(需要锐捷认证)+ IPv6(无PD)。而一个学号只能认证两台设备,对博主这样的多设备用户很苦恼,遂通过软路由Openwrt进行代理认证。但这样只有软路由有可用的IPv6,与博主的家庭宽带PPPOE后得到PD的IPv6不同,连入的设备都只有IPv4能力,非常的不优雅。
经过查阅资料后发现,大部分的教育网都是采用SLAAC来分配地址,不带有PD头,路由不知道自己所分配的子网范围。知道了问题所在以及结合匮乏的计网中IPv6知识,于是有以下的集中解决方案:
通过nat66将IPv6进行NAT操作
优点:
可以使用原生的IPv6功能
可以让路由来分配自己的内网IPv6,与IPv4使用方式相同(即端口转发)
配置较为简单,只要路由可以上网就可以保证内网中的设备都可以访问IPv6
缺点:
IPv6所谓的每个设备都有自己的IP地址这一广告词就当放屁了
这nat66性能也。。。令人堪忧啊,毕竟这软路由的配置仅仅是双核四线程的辣鸡Atom
通过已给出的IPv6地址划出一个更小范围的子网
优点:
地址分配自己可以控制,方便记忆(比如1919:810:114:514)
可以通过防火墙地址范围规划保护设备
保证设备能拿到自己的公网IPv6,外网访问不用再打洞了
缺点:
由路由器作转发网关,对于软路由这类没有硬件级IPv6转发的设备来说。。。性能和nat66差不多
安卓设备不支持DHCPv6得到IPv6地址(虽然博主自己没有安卓设备),还需要root后手动添加IPv6地址,很不优雅
有些设备上的防火墙会与路由上的防火墙冲突,导致有地址但不可用(说的是你,Windows)
分配了地址后需要路由向上级交换机报告IPv6地址,若上级交换机过于陈旧就不可用
通过已经拿到IPv6地址的wan6接口来中继到br-lan的网桥上
优点:
继续使用学校的SLAAC分配子网内的IPv6地址,不用讨论学校上级交换机的情况
因为是SLAAC分配地址,安卓设备也可以拿到IPv6地址
不再使用路由器做网关,流量与性能问题不用再考虑
类原生的IPv6体验
缺点:
路由器上看不到已连入设备的IPv6地址(很合理嘛,毕竟不是路由器分配的)
防火墙部分可能会失效
有些学校的IPv6部分也会单独计费等,此时每个连入的设备都需要计费认证后才能使用IPv6功能(但博主所在学校IPv6是免费的)
综上,博主选择了第三种方法。给软路由刷入了Openwrt后,装上锐捷认证(minieap
与mentohust
均可)。而后进入Openwrt的shell,更改其dhcp配置
vim /etc/config/dhcp
其中lan部分
1 | config dhcp 'lan' |
wan部分
1 | config dhcp 'wan' |
wan6部分(此处是需要手动添加)
1 | config dhcp 'wan6' |
全部修改完成后退出并保存,然后重启dhcp服务
/etc/init.d/odhcp restart
再打开Openwrt的IPv6转发功能
vim /etc/sysctl.conf
其中加入以下配置
1 | net.ipv6.conf.default.forwarding=2 |
然后就可以发现子网内设备成功拿到了IPv6地址。
但有时又无法ping通阿里云2400:3200::1的DNS服务器,检查一下防火墙。
在/etc/config/firewall
中的default
项加入option disable_ipv6 '1'
,再重启防火墙即可。
另:
为了确保Openwrt及其子网设备的IPv6的功能是正常的,请确保以下设定是满足的,其包括:
网络——DHCP——高级设置中勾选了“禁止解析 IPv6 DNS 记录”
网络——负载均衡——策略中备用成员是“不可达(拒绝)”而不是“默认(使用主路由表)”