起因
校园网为了便于管理,也因为各种规定要求,一人一校园网登录账号,实名上网。一开始学校使用的锐捷设备,不对设备数限制太多要求。直至学校对网络设备进行了更新升级,换上了华为的路由设备,并限制了三台设备数,甚至在一个学期后从三个设备限制到两个设备。除了手机电脑之外,不少同学还有各种联网设备,每次上网设备数量限制在了两台,其他的被挤下线,或是直接账号封禁半小时。
对于博主来说除了电脑还有两台手机,加上一堆智能家居联动等需要联网的需求,两台设备完全不够用,且每张卡月费对于大学生来说并不便宜,加之本身就是学习网络相关知识方向的,打算折腾一下自己的网络使用。
使用设备与校园网情况
目前网络情况
- 多台设备——(WiFi传输 | 网线传输)——小米路由器(用作AP | 不做配置)——R2S(OpenWrt | 部署操作与管理)——宿舍光猫
- OpenWrt系统路由器必备,基于Linux指令且插件极多,容易理解操作
- 学校为华为三层交换机,深蓝软件认证(已知)
网络管理与应用必须用到OpenWrt系统,关于硬件选择与OpenWrt系统安装配置自行学习
理解与分析
最开始校园网仅通过分析Mac地址来判断设备数量,基本上为没有限制,买一个路由器,配置固定的Mac地址,其他设备连接至路由器,直接就可以绕开设备数量限制。后边升级了网络设备,超过三台设备就会被挤下线,或是账号被禁用半个小时,连接到学校网络后台发现从锐捷换到了华为设备,弹出的校园网认证也换用了深蓝软件。如何绕开校园网检测首先了解校园网检测机制
在阅读了众多知识库与博客,也对自己网络实操抓包分析,校园网检测方法可以参考以下博客,解释比较清晰:https://blog.sunbk201.site/posts/crack-campus-network | 学校用的是完全IPv4网络,实行检测就几种方法:
- IPv4头部的TTL字段
- HTTP数据包的UA字段
- IPv4头部的Identification字段
- 网络协议时钟偏移检测
- Flash Cookie检测
- 深度检测(DPI)
TTL检测仅需在路由器上统一TTL值即可(不同系统的默认TTL值不一样,Windows为128,Linux为64)
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64#或128
# 在OpenWrt防火墙加上规则即可,统一TTL值
对于Identification字段检测,可以参考:https://github.com/CHN-beta/rkp-ipid | 很少有学校检测代理
网络时钟检测仅需在路由器上启用NTP时间服务器即可,使用路由器为客户端统一提供时间同步
Flash Cookie检测使用没有意义,Adobe Flash已经被HTML5取代了
深度检测(DPI)也不至于,检测消耗大量设备资源,学校没有马内也没有必要为了设备数就深度检测
在以上分析与尝试过后,可以知道学校校园网设备使用的是HTTP数据包的UA字段检测
避免限制对应操作 | 修改HTTP数据包UA字段
HTTP数据包中都有UA字段(User-Agent)随便抓包可看到,不同设备不同浏览器不同系统均可以看得到

可以使用以下方法避免检测
- 配置OpenWrt全局网络代理或VPN [流量加密]
- 使用OpenWrt代理软件Privoxy修改网络出口HTTP流量UA字段 [修改UA]
- 编译OpenWrt使用Xmurp-ua或UA2F、UA3F等方法 [修改UA]
配置代理或VPN从价格成本、稳定性等各方面不太可靠,租用代理服务器需要花钱,节点的稳定性和带宽也会影响整体网络性能,安全性最强,但成本最高。流量加密加上流量混淆,还可以避免深度检测网络审查。有条件可以查询V2Ray、Clash、helloworld或众多代理和VPN教程
编译OpenWrt使用Xmurp-ua或UA2F、UA3F性能最好,但是需要动手能力强也不宜操作理解,配置参考以下文章:
- Xmurp-ua:https://github.com/CHN-beta/xmurp-ua
- UA2F:https://github.com/Zxilly/UA2F;https://learningman.top/archives/304
- UA3F:https://github.com/SunBK201/UA3F;https://blog.sunbk201.site/posts/ua3f/
使用OpenWrt代理软件Privoxy修改网络出口HTTP流量字段,安装软件配置直接使用,简单易操作,性能消耗中等,博主设备为R2S,可以在使用此软件跑满校园网下行速度(600Mbps),性能可依此为参照。
以下教程均为在OpenWrt下配置Privoxy代理实现修改HTTP数据包UA字段
进入Web页面并登录
边栏选择:系统——软件包,选择更新列表,等待列表更新后,搜索luci-app-privoxy和luci-i18n-privoxy-zh-cn,安装
或使用ssh连接至OpenWrt安装Privoxy
opkg update
#更新软件列表
opkg install privoxy luci-app-privoxy luci-i18n-privoxy-zh-cn
#安装插件
安装之后在Web页面选择:服务——Privoxy 网络代理进入页面,如下图

选择文件和目录选项
将Action Files只保留match-all.action;将Filter files只保留default.filter。如下图

选择访问控制选项
将Listen addresses只保留0.0.0.0:8118;将Permit access只保留192.168.0.0/16;往下翻找至倒数第二行,将Enable action file editor选项勾上


选择转发选项
将允许转发代理认证选项勾上

选择杂项选项
将Accept intercepted requests选项勾上

选择日志选项
将该页面除了Debug 4096和Debug 8192选项之外的所有选项取消勾选

完成以上配置后选择保存并应用
在边栏选择网络——防火墙
选择自定义规则选项,将以下规则添加至防火墙
iptables -t nat -N http_ua_drop
iptables -t nat -I PREROUTING -p tcp --dport 80 -j http_ua_drop
iptables -t nat -A http_ua_drop -m mark --mark 1/1 -j RETURN
iptables -t nat -A http_ua_drop -d 0.0.0.0/8 -j RETURN
iptables -t nat -A http_ua_drop -d 127.0.0.0/8 -j RETURN
iptables -t nat -A http_ua_drop -d 192.168.0.0/16 -j RETURN
iptables -t nat -A http_ua_drop -p tcp -j REDIRECT --to-port 8118
#局域网HTTP请求均转发至Privoxy代理端口
配置完成以上选项后,在浏览器打开以下网站http://config.privoxy.org/edit-actions-list?f=0 | 注意访问时不要在设备上使用代理或VPN,否则可能无法正确加载至该网址
进入以下页面,并选择Edit选项

下滑直至找到hide-user-agent选项,将圆圈选项选择至Enable(绿色区域),User Agent String to send方框内可任意修改为自己想要展示的名称

上滑页面至顶部,选择Submit选项提交
配置完成
此时可以在以下网站中查看自己UA是否成功变化:http://ua.233996.xyz/ | 注意网址为http而不是https,浏览器自动跳转为https自行修改为http再访问,访问时不要在设备上使用代理或VPN,否则加载显示不正确

此时所有网络出口流量的HTTP数据包中UA字段已被修改,校园网检测“判断为一台设备”,避免设备数限制
总结
这个方法从我大一用到现在即将快大四了,也将用不上校园网了,不过也挺好的,让我在折腾中学习研究了很多,加之本身也是网络工程专业。从大一下学校开始有了校园网检测和限制,是我对网络最开始研究和感兴趣的起点,也借鉴和参考了很多前辈、博主和同学们的经验探索
这是我第一次在自己网站上写一篇文章,对其中的理解可能尚有欠缺或文章存在错误,还请多多包涵。如有朋友翻阅到此微不足道的文章或对你提供了帮助,或文章存在问题,都可以评论留言交流。有网络技术交流、网站问题也可以加我QQ1059077940并备注来意。博主已考取软考中级网络工程师,目前正在备考HCIE,QQ会闲时回复
Comments NOTHING