对校园网认证体系的探索
最近学校升级了整个网络系统,由原来的光猫桥接拨号无限家宽 变成了 一人一号AP接入 的联网验证模式。这本来都没有什么,但是 一人一号限制2个设备 并且 59/m 的价格只能做到100m的速度,这当然不能忍!!!因此 此LOG诞生,记录网络的折腾过程。
验证体系
首先翻了翻常见的校园网认证体系,确认了学校是用的锐捷这一套系统。如何确认?如果你的校园网认证界面也想这样,并且分配到的IP为 10.0.0.1/8 的A类地址,可以无脑照抄这篇文章了
![]() |
![]() |
为何 “限制” ?
对于校园网来说,为了提升“ 通讯收益”,通常伴随着多设备检测机制。对于多设备需要协同工作的同学 可以说是 带来了诸多的不便。当然,如果想突破这一层限制 我们就要先找到“何为限制”。
我们都知道 常见的家用网络是通过 直接购买 ISP的服务,通过你所属的ISP接入整个网络体系;但是,身处学校 无法直接享受到ISP的服务。通常,学校会与三大运营商其一进行合作,通过学校中转到公网。
就因为这一层转发,有了让学校“制定”规则的空间。当然一个小小的学校 是没有 人力和物力 来实现他们想要的策略。自然而然,像 锐捷 这样的科技公司就来了。

即使你所在学校/单位不是锐捷的实现方案,他们实现检测的技术原理也应该大同小异。下文将会结合计算机网络原理,分析出设备检测的方法。默认读者应掌握一些基础的CS知识,如果你对一些概念很陌生,请自行google吧。对于只想破解设备 不想知道其原理的同学,自动跳转到 何为“破解” 部分抄作业
何为“限制”?
MAC地址
对于设备数量的检测来说,找到每一个设备的 “特殊身份标识” 绝对是一个完美的方案。在网络体系当中,这个“特殊身份标识”就是我们设备的 MAC地址 了。但是,虽然每一个入网设备都有一个唯一且固定的物理 MAC地址,但是在现代操作系统当中,为了能够有更为安全的上网体系,操作系统通常都允许我们自行修改设备的MAC地址 对于检测方来说,就不能达到效果了。
回到锐捷这一套系统,MAC地址 只用来区分设备 不作为检测多设备的依据,但是正因为这一性质的存在,我们就可以 将无法进行登录认证的路由器设备 通过模拟 已经认证过的pc设备的MAC地址 接入校园网体系。

User-Agent 字符
既然无法从传统意义上的硬件入手,就把目光放在了HTTP这个数据传输协议体系上面了。我们都知道,网络通信数据都是通过 http报文传输的,在GET请求中 HTTP头文件有一个叫 User-Agent 的字段,这个字段记录了请求设备信息 像这样
1 | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 |
目前大部分检测系统就是通过这个特征值检测的。对于部分锐捷来说,只检测这一个特征值。

TTL 时间序
TTL(Time To Live)就像它名字所说的一样,是一个用来记录存活时间的值 这个值会通过路由次数的增加而改变。如果我们接入了路由器等设备 我们的值就会减一变成 127 或 63

IPID 字段
IP Identification (IPID) 是 IP 协议头部中的一个16位字段, 用来记录网络中切分过的数据信息。检测机可以用过数据值的跳动来侦察出多设备

DPI(Deep Packet Inspection)检测
相对于上文的一些系列Http头检测方法,DPI是一种基于应用层的流量检测和控制技术,他会读你的传输数据,通过你数据细微的差异判断设备。这一种检测方式已经确认出现在了锐捷的验证体系,但是对设备的性能开销成本也很大,大部分会选择关闭。

何为“破解”—— ua3f + Openclash
于其说是“破解”,不如说是一场你追我赶的“猫鼠游戏”。我们的核心目的就是通过伪装上诉的检测信息,来绕过系统。当然,伪装的基础也需要程序或者说设备来驱动。现在比较成熟的方案是通过 open wrt 也就是软路由 安装组件来实现伪装。
我选用的方案是 ua3f + Openclash 这个方案能够与clash共存,实现国内走伪装,国际走代理的效果。下文我会带领大家,从固件的编译 到 软件 设置逐步实现这个”伪装“系统。

OpenWrt固件编译
在固件编译之前,请一定要准备好 科学环境,大部分错误都出现在网络环境上的问题。并且,固件的编译还需要运行在Linux系统上, Linux系统至少有100G的剩余空间。最方便的方案就是通过国外的Linux服务器进行编译,读者也可以通过WSL进行编译。
*注意:由于Openwrt编译过程中的安全策略,请全程使用非root用户进行操作;
有英文阅读能力的同学额可以查看官方文档
https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem
STEP1
登录Linux主机,clone openwrt 仓库
1 | git clone https://github.com/openwrt/openwrt.git |
检查能够使用的 OpenWrt版本 并选择你想构建的版本
1 | git branch -a |
这里,最新版本为 openwrt-24.10.2 可以根据实际情况自行选择

更新系统组件
1 | ./scripts/feeds update -a |
STEP2
到这一步之后,我们的 Openwrt 系统基本构建完成了,现在,需要我们将 ”破解程序“注入 Openwrt 系统内
先安装UA3F
1 | git clone https://github.com/SunBK201/UA3F.git package/UA3F # |
再安装Openclash
1 | git clone https://github.com/vernesong/OpenClash package/luci-app-openclash |
注意 这个Openclash的包特别大 需要预留至少30G的空间

安装完成之后,需要在编译配置选项中加入这两个软件
1 | make menuconfig #打开配置菜单的命令 |
先下拉之 LuCI -> 1.Collections -> 勾选 LuCI (按两下空格将其变成 *号)



返回到 LuCI界面 -> 2. Modules 勾选 luci-compat 并且在该页面的 Translations子菜单中拉到最下面选 中文

返回到 LuCI界面 -> 3. Application 勾选 luci-app-openclash

回到主菜单 进入 Network->Web Servers/Proxies->ua3f



回到主菜单 进入 Base system-> 取消这个 dnsmasq


现在 ua3f 与 Openclash就会自动编译进我们的OpenWrt系统内了,我们还需要根据自己 软路由/路由 的硬件架构/型号 选择对应的编译设置,这里 以CR6608为例子:

配置完这些指令过后就可以进行固件的编译了
- 注意:默认编译设置/root分区只有104M的大小,可以进入 Target Images -> Adjust the Root Filesystem Partition Size 选项调整
1 | make -j$(nproc) || make -j$(nproc) V=s |
编译可能需要4,50分钟 ;完成后可以在 openwrt/bin/targets 目录下找到编译出来的固件

OpenWrt固件刷入
由于每一款设备的刷入方式不一致,可以去 恩山论坛 找自己对应的刷入方式。
UA3F 配置
1080端口在我的设备上出现问题,把端口改成了1081
User-Agent填入任意字符 或者填写一个固定的ua即可

Openclash配置
先下载好meta内核,配置并导入clash配置文件
1 | #--------------------------------------------------------------------------------------# |
设置运行模式

然后就可以啦

验证登录
校园网的访问需要登录验证,由于本校采用的是sso账号登录 无法使用常规的锐捷脚本 顾采用虚拟mac的方式验证权限。
具体步骤是 先连接电脑 使用电脑认证 记录mac地址 修改软路由wan口的mac地址

如果你是常规的账号密码验证,也可添加编译 锐捷自动认证脚本
9.9
CR6608性能太差了,购入了 j4105软路由。

非常流畅

9.12
用了几天基本上稳定了 说说在折腾的过程中遇到的坑吧。
编译 openwrt 的时候,是用arm64机器编译的 原生的环境无法编译go,需要 自行下载 并且填入文件路径
make menuconfig -> language ->go ->Configuration -> External bootstrap Go root directory
然后就是root分区大小问题,默认只会设置102M的大小 导致无法安装Meta内核 需要手动增大
make menuconfig -> Target Images -> Root filesystem partition size (in MB)
然后就是clash config文件配置的问题,这个没什么好说的 自己研究下吧 唯一需要注意的是,UDP只能走 DIRECT
9.16
这几天网络出现了风控的情况,校园群内也是遍地“哀声狼嚎”。不过也是正常,本来就是一场“猫鼠游戏” ,一场 你追我赶的 “技术博弈”。
第一版方案中,只修改了 UA 头,稳定运行了10余天。 结合近期出现大量封禁情况,怀疑学校开启了DPI检测。对于DPI检测 需要购买国内中转服务器,成本开销巨大。因此,采用贪心的逻辑 先修复 TTL 、时钟偏移、Flash Cookie、Identification 字段、等 低成本 可软修复的检测方案,再通过全局加密代理 确定是否为 DPI检测,结合测试结果 权衡中转服务器的购买。
TTL固定
在openwrt内,可以通过修改 iptables 的方法固定TTL的值
1 | #TTL固定 64 |
时钟统一
通过iptable统一所有设备的时间
1 | iptables -t nat -N ntp_force_local |
注意*: 勾选 系统 -> 时间同步 -> 作为 NTP 服务器提供服务
IPv4 数据包包头内的 Identification 字段
设置所有发出的数据包的 IPID 为递增
1 | iptables -t mangle -N IPID_MOD |
注意* : 将这些配置写入 /etc/rc.local 当中,以免重启失效
9.18
今早连续封禁2次,基本能够确认学校开启了DPI检测

故 购入阿里国内服务器 实行中转加密

9.20
流量Vmess加秘方案 基本稳定
