在 OpenWrt 上使用 WPA2-EAP 连接校园网并通过 NAT6 配置 IPv6


快过年了,不要再讨论什么 NAS、HTPC、OpenWrt 了。你带你的大机箱回到家并不能给你带来任何实质性作用,朋友们兜里掏出一大把钱吃喝玩乐,你默默的在家里摆弄你的破群晖。亲戚朋友吃饭问你收获了什么,你说我组了一个 RAID 0 的 ALL IN ONE,亲戚们懵逼了,你还在心里默默嘲笑他们,笑他们不懂你的刮削器,不懂你的 Auto Backup,也笑他们看爱奇艺还要忍受会员专属广告。你父母的同事都在说自己的子女一年的收获,儿子买了个房,女儿买了个车,姑娘升职加薪了,你的父母默默无言,说我的儿子装了个黑盒子,开起来嗡嗡响、家里电表走得越来越快了。

前言

为了给国庆的时候找点事做,以及未来若干年的宿舍网络环境,我决定稍微折腾一下校园网。同时,为了避免一段时间后出问题却找不到北,也简单记录一下操作的流程。

我使用的设备是 Cudy TR3000 128MB,安装了 OpenWrt 24.10.3。相应的 Sysupgrade 镜像可以从 OpenWrt Firmware Selector 中找到,但 Cudy 的官网中只有 256MB 版本的升级所需中间固件,没有 128MB 版本的,不过在互联网上随便找下就可以得到。

连接校园网

我所在的环境只提供无线连接校园网的方式,要么选择使用深澜的那一套认证方式,要么使用 WPA2-EAP。前者已经有人做过了,不过显然后者更简单一点,因为之前“Openwrt 不支持 WPA2-Enterpise 无线中继”这一点在今天已经不成立了。

为了使用 WPA2-EAP,需要删去形同 wpad-basic 或者 wpad-mini 之类的包并安装 wpad。但是路由器还没有互联网连接呢,总不能手动安装包括依赖在内的所有包吧?在手动操作了几次之后,我意识到一个简单的方法是使用路由器的无线网卡连上手机热点(

安装完 wpad 后,在 LuCI 中操作,通过网络→无线→无线概况→扫描加入网络时仍然只有给出 WPA 密钥、而非期望的 WPA2-EAP 那套身份和密码的形式。可以随便写个 WPA 密钥,后续在接口配置中再做修改。编辑新得到的网络,在接口配置→无线安全中选择加密“WPA2-EAP (强安全性)”,EAP 类型选择“PEAP”,身份认证选择“EAP-MSCHAPv2”,并在鉴权和密码中填写对应内容。如果没有意外,这样就可以登录到校园网了。

配置 NAT6 完成 IPv6 连接测试

为了正常使用 IPv6,还需要在网络→接口增加一个额外的 DHCPv6 客户端,记作 wwan6。在得到 IPv6 地址后,理论上路由器就可以使用 IPv6 了,可以通过网络→网络诊断进行测试。据说教育网环境下分配的 IPv6 地址并不会附赠 PD 信息,我没有深究我所处的地方是不是也是这样,不过就当是这样吧。为了让同一个 LAN 中的其他设备也能够使用 IPv6,大家普遍采用的方案是使用 NAT6。

编辑得到的 wwan6 接口,在常规设置中,请求 IPv6 地址设置为“尝试”,请求 IPv6 前缀设置为“已禁用”。由于 OpenWrt 24.10.3 已经有了 nftables,所以默认支持配置 NAT6。在网络→防火墙→常规设置中,将 Forward 设置为“accept”,并在 Zones 中编辑 wan→ACCEPT,在高级设置中启用“IPv6 Masquerading”。

最后需要配置网关,创建 /etc/hotplug.d/iface/99-ipv6 并写入

1
2
3
#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
route -A inet6 add default gw `(ip -6 route | grep default | awk '{print $5,$6,$7}' | sed -n '1p')`

设置权限并重启使之生效

1
2
chmod +x /etc/hotplug.d/iface/99-ipv6
reboot

出于众所周知的原因,https://test-ipv6.com 这种难以直连的测试网站会受到诸多其他因素的影响,除此以外可以使用 http://test6.ustc.edu.cn 之类的 IPv6 only 网站进行测试。当然 ping -6 也是可以的。

使用 Nikki 作为透明代理

在不够幸运情况下,可能会因为网络问题难以得到 GeoIP 的数据。一个可能的解决方法是使用其他下载源,Nikki 也提供了替换下载地址的方法。以 https://github.com/Loyalsoldier/geoip 为例,在服务→Nikki→混入配置→GeoX配置中给出格式和对应的链接就可以了。

同时,需要把“外部控制配置”和“入站配置”之类存在密码的地方进行一些修改,总不能用默认的吧。

后记

在 2025 年,我在配置 OpenWrt 时第一时间选择的方法是问问 ChatGPT。然而 LLM 在这一类问题中表现的并不好,在一些方向性的内容可能有指导意义,但具体的命令或是配置方法上仍有严重的幻觉。更好的做法是找到一些靠谱的教程然后一步步走,希望往后 AI 的发展能解决好这个问题。

参考资料