在校园网环境下通过Openwrt配置IPv6
[摘要] 在我校只给连接校园网的设备下发 /128 的IPv6地址的背景下,如何让内网设备取得IPv6访问权,就成了一个问题。本文旨在利用NAT66技术,帮助读者,尤其是同为本校学生的读者,为自己宿舍的内网配置v6环境,以享受各界给予的v6红利(
为简便起见,后文均使用“v6”指代IPv6。
由于本人长期使用Openwrt作为主路由,因此并不清楚使用一般家用路由器时能否正常取得v6访问权。经过简要测试,我发现小米4A路由器无论在设置内选择“Native”或“NAT6”均无法让内网设备获得合适的v6地址并上网,想必大部分的普通路由器也是如此。然而对于Openwrt用户,我们拥有对路由器的深度访问权,因此修复这个支持便成为了可能。
(更新:在亲戚家调试v6时,我发现华为AX3路由器在设置中开启IPv6选项并保持默认配置后,下级设备拿到的v6地址系fd开头,但却能正常上网,我猜测其内部也做了NAT6相关处理,但其能否在校园网环境下工作还是个未知数。)
本人的测试环境为iStoreOS,如果您使用的是其他固件,则可能会缺失部分配置项,届时您可能需要ssh连接到路由器并修改uci配置文件以达到目的。
wan 接口配置
请切换到wan接口的高级设置,并修改以下选项:
获取IPv6地址:自动
使用默认网关:[√]
委托IPv6前缀:[√]
IPv6分配长度:已禁用
IPv6前缀过滤器:未配置
IPv6后缀:
::1
IPv6首选项:
0
并在 DHCP服务器 - IPv6设置 中,关闭所有开关,禁用所有选项。
wan6 接口配置
回到接口界面后,您应该会找到除lan、wan之外的第三个接口:wan6
.
如果没有wan6接口,请手动添加:
点击“添加新接口”,名称为wan6
,协议为“DHCPv6 客户端”,设备为eth0
(该项以您wan接口所属的物理接口为准,可能因设备而异)
理论上,如此添加之后,若该接口获得了2001
开头的v6地址,您便可以按照下述步骤完成设置了。
在“常规设置”页面,设置如下选项:
- 开机自动运行:[√]
- 请求 IPv6 地址:try
- 请求指定长度的 IPv6 前缀:已禁用
接下来,在“高级设置”中,请按照和wan接口完全相同的方式进行配置。
随后切换到“防火墙设置”,将wan6
接口也加入wan
防火墙区域,以便管理。
之后请确保“DHCP服务器”选项卡提示“本接口未配置 DHCP 服务器”,因为本接口是作为dhcp客户端使用的。
全局网络选项
请修改此处IPv6 ULA 前缀
为合适的CIDR值,如dd12:3456::/64
,该值可以完全由您自定义。
请注意必须以dd
开头,这是此次网络配置的重点,用fd
开头的ULA地址无法成功完成NAT66的配置;而dd
之后的值请自拟,只需位于/64
的范围内即可,建议保持在8位hex数之内,以免客户端内网v6地址过长。
lan 接口配置
若您既没有开启合适的远程访问手段,又无法使用键盘和显示器连接到软路由控制台,请小心修改lan接口的配置,因为可能导致路由器失联。
在“常规设置”页面,设置如下选项:
委托IPv6前缀:[√]
IPv6分配长度:64
IPv6 分配提示:
dd123456
(该项请与上文ULA前缀保持一致即可)IPv6前缀过滤器:未配置
IPv6后缀:
::8
IPv6首选项:
0
随后请切换到“DHCP服务器”选项卡,
在高级设置中,勾选“动态 DHCP” 和 “强制”
在“IPv6设置”中,将 RA 服务 和 DHCPv6 服务 改为“服务器模式”,NDP代理 设为 已禁用,
通告的 IPv6 DNS 服务器
设为合适的v6公网DNS,此处可使用清华大学TUNA协会的dns:2001:da8::666
“IPv6 RA设置”中,请勾选“启用 SLAAC”,其余选项可选择与我保持一致,见下图:
内核设置
为了在内核中启用IPv6数据包的转发,以下操作需要您通过ssh或控制台登录到软路由来执行。
使用vi
或nano
打开 /etc/sysctl.conf
,并追加以下内容:
1 | net.ipv6.conf.default.forwarding=2 |
完成后,可以通过sysctl -p
命令应用刚刚设置的内核参数,但更推荐的做法是先重启您的设备,再继续接下来的操作。
防火墙 设置
在系统的防火墙设置(luci/admin/network/firewall
)中:
切换到常规设置,勾选”启用 FullCone-NAT“,将”转发“设为接受,”入站数据“选项可根据安全性需求,酌情选择是否打开;
检查页面下方”区域“,确保”转发“项设置无误,当然可以打开全部选项,如图:
切换到”自定义规则“,添加如下的iptables规则,以实际地启用NAT66:
1
2
3
4
5
6ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
WAN6=wan6
LAN=br-lan
ip6tables -t nat -A POSTROUTING -o $WAN6 -j MASQUERADE
ip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -A FORWARD -i $LAN -j ACCEPT
该代码中的eth0
,wan6
,br-lan
大多数情况下不必修改,若出现异常,请根据实际情况适当修改。
完成后点击”保存“,iptables会自动重启以应用规则。
验收环节
全部设置完成后,就可以开始测试连接性了。请将设备的网络断开再重连,随后观察IPv6可用情况。
以Windows的”网卡状态“页面为例,若如上图所示,v4和v6旁均显示”Internet“,恭喜设置成功,从此你的所有内网设备都将可以访问纯IPv6网站,如东北大学六维空间或某些高校的bt/pt站点(经测试,这样的NAT66网络仍然可以正常下载资源以及做种)……更多的用法,就请自己发掘吧!
如果你成功了,希望也可以去评论区冒个泡(
额外的测试连通性办法:使用命令ping 2001:da8::666
,尝试ping TUNA的dns,若成功,则说明你的v6网络已基本成型;
此后可以进入test-ipv6.com
,记得关闭科学上网工具再访问,若页面显示得分为10分,那么基本可以放心了。
In case failed
如果显示”无网络访问权限“,不要灰心,可能是设备并未尝试重新获取地址,可以尝试重启v6协议,具体操作方法为,在属性对话框中取消勾选”Internet协议版本6“,确认后重新打开属性对话框,再勾选v6协议,即可观察连接情况了。
若显示”无Internet访问权“,请打开”详细信息“窗口,观察”IPv6地址“项是否符合先前设置的ULA前缀:若不符合,请先尝试按照上文重启本地的v6协议;如果符合,那么说明设置过程出了一些问题,敬请评论反馈😥
我校の悲哀
经观察,无论是通过NAT6还是设备直连校园网,获取到的v6地址都面临过一段时间就失效的问题,我暂未找出该故障的原因,因此只能编写如下的bash脚本,自动检测v6连接性并在失败时重启接口。请将脚本写入/opt/ipv6-check.sh
,内容如下。
(提示:下方脚本代码仅供参考,系AI作品)
1 |
|
此后请在luci的启动项页面->本地启动脚本 中添加如下行:screen -dmS v6 /opt/ipv6-check.sh
一些闲言碎语
- 经测试,接入我校校园网的设备,无论是否经过认证,均能获取到
/128
的v6地址,但是尝试获取前缀却始终失败。鉴于上述情况,我只能采取NAT6的策略了。 - 据说NAT6对性能要求较高,但是在软路由为D2550、客户端通过千兆网线连接到路由器、访问USTC的ipv6测速网站的情况下,仍能轻松地跑出700Mbps的上下行,期间软路由上CPU占用率最高仅60%左右,因此我认为,非硬路由Openwrt用户不必对性能担忧。
- 为了发挥v6的最大潜力,我给一个虚拟机直通了网卡使其获取了校园网直接下发的v6地址,并设置DNS为2001:da8::666,但是该机莫名其妙地无法上网,猜测是DNS配置问题,须使其也连接到v4网络并设置v4的DNS,才能成功。
(后来因为v6地址需要定期更新的原因也放弃了这样做,回归到路由器NAT6了) - 让我继续折腾v6的真正起因是,上次回家,给家里一台旧Lenovo品牌机安装了个黑群晖(详情可见我tg频道),于是回宿舍后希望内网设备可以获得v6访问权,这样就可以方便地访问家中NAS了,最后结果也如我所愿,成功取得了v6地址;然而由于特殊的原因,上传到家中NAS的速度仅4MBps左右😭虽然不算快,但是算下来一晚上也够传30多G了,唉,就酱吧
- 折腾过程中,我看了好几篇教程,第一篇是官方的,写得很简略;
第二篇写的倒是很详细,但是一顿操作下来,差点搞得路由器自己都上不了v6,ping哪儿都显示 Network unreachable ;https://zhuanlan.zhihu.com/p/492774540
第三篇,直击重点,让我把内网分配的ip前缀(全局网络前缀)从fd00这个保留区移出来,改成dd开头,结果一改马上就通网了
https://zhuanlan.zhihu.com/p/467475294
其他参考: https://evanzj.com/2021/12/20/NAT6/
- Title: 在校园网环境下通过Openwrt配置IPv6
- Author: Ryan
- Created at : 2024-04-07 21:00:00
- Updated at : 2024-05-13 16:47:45
- Link: https://blog.eddy.moe/2024/04/07/在校园网环境下通过Openwrt配置IPv6/
- License: This work is licensed under CC BY-NC-SA 4.0.