路由器方案日志 – 重理工校园网

内容纲要

反馈 如果使用固件中,有遇到“检测到代理上网”。可以向我留言,邮箱:iyatt@iyatt.com。请注明使用的路由器、固件日期、联网保持时长、断网时连接路由器的用户正在使用什么网站、应用。如果可以的话,在断网后,马上登录路由器管理页面 http://openwrt.lan,点开状态->系统日志,复制所有内容保存在文本文件作为附件一起发给我。

刷 Breed 恢复控制台:

适配的路由器:

  • 红米 AC2100(2022.10.6)
  • 极路由 4 增强版(2022.10.6)
  • Phicomm K2(2022.10.5)
  • Newifi R6830(2022.10.5)
  • Phicomm K2p(2022.10.1)
  • Newifi3 (2022.10.1)
  • 小米路由器 3 Pro(2022.10.1)
  • 大麦 DW22D(2022.9.25)

编译主体步骤(实际调整看本篇日志):https://blog.iyatt.com/?p=6906

固件下载地址:

User-Agent 检测网站:

在此感谢使用到的开源项目:

学校宽带登录地址:http://202.202.145.132/

2022.8.30

时隔多年,学校的校园网系统更新了。花溪校区全面更换光纤,移动和电信一起合资布设了宽带设备,宿舍有 WiFi6 覆盖。电信旧有宽带系统“创翼”将于 9 月末弃用,新登录系统使用锐捷(如下图)。

采用的是 WEB 页面认证,按照通知所说,支持一台电脑和一部移动设备同时在线,一般来说校园网都会限制多设备使用,比如开热点。

今天是新宽带试运行的第二天,我先测试了下电脑开热点。直接使用系统的热点功能虽然可以开启,但是连上WiFi却没网。我换用的 360 免费 WiFi 校园专版测试,可以开 WiFi 给多台设备使用。但是考虑到360 WiFi可能有技术应对校园网,还不能判断是否会检测多设备。

我又尝试了用树莓派(Linux 小电脑)登录校园网,然后开热点,连上的多台设备也都能使用,那就意味着可能是没有多设备检测。

然后我准备尝试编译 OpenWrt 添加锐捷登录协议,在和一个朋友交流时,给我提出了一种方式让我尝试:路由器克隆电脑的 MAC,电脑跳出登录页面后正常登录操作。结果真的可以工作,能不能长时间保持连接还待观察。

大致原理就是路由器 WAN 口直连接入学校校园网,校园网给路由器分配了一个 IP,然后电脑(用手机也可以操作)连接在路由器上间接接入校园网。此时校园网识别到的接入的设备就是路由器,然后因为登录要在电脑上进行,猜想可能会记录登录设备的 MAC 地址绑定登录状态,所以就先把电脑的 MAC 地址给路由器使用。然后在电脑上进行正常登录操作,数据经由路由器发送出去,校园网那边就会认为是路由器登录的(把路由器当作登录的电脑或手机)。路由器访问互联网后,连接在上面的设备也能间接访问互联网,绕过一个账号只能登录两台设备的限制,实现多设备上网。(后面测试发现不用克隆 MAC 也行)

所以操作的话,就是把路由器外网连接类型设成动态IP(截图为老毛子固件)

在电脑连上路由器的时候应该会跳出校园网的登录界面,如果关了,可以打开地址 202.202.145.132 ,正常登录就可以了,登录后可以关闭页面

然后所有连接到路由器上的设备都能上网了。

————————————————————————————————————————————————————

2022.9.1

锐捷限制一个账号登录两台设备,今天我测试了两个路由器使用一个账号,同时测速发现两台路由器都能达到办理套餐的带宽。意味着限速不是针对账号的,而是对每台设备的。

2022.9.3

今天下午开始,第一次出现路由器掉线的情况,掉线后尝试重新登录时提醒如下图:

后面频繁出现了很多次,每次被限制时间不定。

2022.9.4

查阅了网上很多资料,结合测试,推测这个“代理上网”识别是基于 UA 检测的,UA 中带有操作系统名,如果同时出现多个,那么就能判断出一个设备联网共享给多个设备使用。

经过通宵的折腾(编译红米 AC2100 的 OpenWrt 固件),一直搞到中午,终于弄出一个没掉线的固件了,主要通过替换 UA 避免检测。

详情:https://blog.iyatt.com/?p=6906

2022.9.5

今天我用别人的号测试电脑和手机同时间访问 http 网页,结果没出现掉线的情况,结合昨天有人给我说他在比我更早之前就被检测到代理上网然后禁止登录。我做了一个推测:

校园网是随机抽查部分用户检测,只要检测到一次,那么后面就会专门盯着你的账号。毕竟要分析你的上网特征也是要消耗服务器资源的,对全部上网用户同时检测服务器压力山大。

我也了解到一些用户在使用虚拟机和安卓模拟器时也会被检测到代理上网,这个其实很好理解。你登录的电脑把网络共享给虚拟机和安卓模拟器使用,两边的网络服务通信时,UA 可能不一样,特征和使用路由器很像,校园网就一棒子打死。

————————————————————————————————————

https://blog.iyatt.com/?p=6906 (初版)编译固件

红米 AC2100 固件(2022-9-5_lede20220716):

初版固件是基于原版 OpenWrt 编译,可扩展的功能较少,当然固件文件也较小,是考虑到实验性以及为了适配 PHICOMM K2 路由器(只有 8M 闪存)(以前我卖过很多“校园网”路由器,都是 K2 的,可提供升级服务)。所以只需要保证校园网基本的支持就行,K2 路由器闪存勉强够用,也就暂时不再考虑更新 K2 的固件了。

从这里开始采用 lede,这个版本是基于 OpenWrt 开发的,含有更丰富的功能模块,体验比原版更好,采用的分支为 20220716。

  • 修改了 lede/package/base-files/files/etc/rc.local,将防 UA2F、TTL、NTP、FLASH 检测相关的防火墙配置预写入系统,不再需要刷机后手动设置,做到开箱即用
  • 修改了 lede/package/lean/default-settings/files/zzz-default-settings(lede 的默认设置文件),去除了 lede 的默认密码(留空),将 UA2F 首次启用相关命令写入,不再需要刷机后手动执行,做到开箱即用
  • 去掉了部分默认勾选编译的应用(我认为用不上的),另外添加了应用,最终编译的应用如图:

网络 -> Turbo ACC 网络加速

2022.9.8

所以又有一种新的方案,通 DNS 53 端口把数据代理出去。在校外公网 IP 搭建一台服务器,通过 53 端口传输数据。理论上这种方法甚至能绕过认证登录,也就是说不办理宽带都能上网。不过估计违法了。

——————————————————————————————————————————

晚上的时候,提出这个方案的学弟联系我测试(因疫情还没返校,我是暑假留校的)。他搭建了一个 VPN 服务端,然后我电脑连接网线不登陆宽带认证,直接使用 OpenVPN 客户端通过 53 端口连接服务器,成功上网。

——————————————————————————————————————

针对 2022.9.5 版固件发现问题(仅红米 AC2100 的固件),路由器断电后开机或重启,WiFI 不会自启动。

打开系统->启动项,翻到下面本地启动脚本

在最后一行的 exit 0 前面行添加下面内容,点击提交。

# 2.4GHz
ip link set ra0 up
brctl addif br-lan ra0
# 5GHz
ip link set rai0 up
brctl addif br-lan rai0

2022.9.10

固件下载地址(2022-9-10_lede20220716):

  • 去除了上一版的部分功能,主要保留的功能有 UPNP 、KMS 和 Turbo ACC。
  • 解决 2022.9.8 发现的 WiFI 不自启动的问题,修改后默认只启动 5GHz,如果要设置 2.4GHz 自启动,请自行修改 系统–>启动项–>本地启动脚本,解开对应部分的注释。

2022.9.11

  • 红米 AC2100(2022-9-11_lede20220716):去除预置配置中关于 rkp-ipid 的部分:编译时并没有添加 rkp-ipid 模块,防火墙无需配置。
  • Lenovo Y1 Newifi R6830(2022-9-11-openwrt22.03):新增固件,刷 Breed 参考:https://blog.iyatt.com/?p=7038。固件基于 OpenWrt 编译(lede 上测试 UA2F 功能失败,最终在 OpenWrt 上成功)。刷机启动后,进入管理后台,打开服务->终端,登录后执行 ./enable_ua2f,启用 UA2F 模块。
  • Phicomm K2(2022-9-11-openwrt22.03):更新固件,本来不打算更新的了。但是第一版用于测试的要刷机后手动输入代码配置太麻烦,还是要预置配置更方便使用。这里采用的和上面 Lenovo Y1 一样的源码和配置编译的,操作完全一样。

2022.9.13

  • Newifi R6830(2022-9-13_lede20220716_Newifi-R6830)(废弃,不要用): 这次成功测试了 lede,添加了 Turbo ACC,但是发现如果启用了软件流量分载,UA 替换模块就不会工作。还不只有这个问题,我测速发现严重掉速,可能 1Mbps 都达不到。后面我编译了不含 Turbo ACC 的固件,测试还是有严重的掉速问题,并且负载依然也比较高,因此决定放弃在 Newifi R6830 上使用 lede 版本。(上传的是含 Turbo ACC 的固件,有兴趣的可以自己测试)

2022.9.14

双网叠加测试,详情:https://blog.iyatt.com/?p=7154

2022.9.15

单线多拨测试,详情:https://blog.iyatt.com/?p=7213

2022.9.16

有计划研究一下 Web 认证进行过程,然后应该可以使用 cURL 进行 POST 实现登录,即可以做到路由器自动尝试登录,不再需要打开浏览器手动操作。

进展见:https://blog.iyatt.com/?p=7288

因为是 Web 认证,登录相关的实现完全可以在网页代码里看到,但是我不会 Javascript,暂时也没有时间去慢慢分析,所以暂且搁置。

2022.9.17

下午测试的时候开始出现两个路由器不能同时在线的情况(双网叠加用一个账号不行了,单线多拨估计也一样),然后我又试验了手机和电脑(可以),手机和平板电脑(不可以),电脑和平板电脑(不可以),这nm啥情况,我有点迷。

我也没太多时间,所以目前的情况暂时要搁置一下了。

2022.9.19 – 2022.9.20

根据 17 号测试的情况,判断应该是根据登录时浏览器的 UA 进行区分的,19号下午测试,发现 Linux 系统的电脑也无法与手机同时在线。我就专门整理了一下我测试使用的设备浏览器的 UA,然后准备重新编译固件修改 UA2F 模块的代码,不再全部改为 FFFFF….,而是全部换成手机的 UA,那么应该可以解决两个路由器无法同时在线的问题。

不过我想得太天真了,从下午一直折腾到凌晨都没达到我预期的效果,或者说到最后什么都没搞出来。一方面是很久没写 C 语言了,改 UA2F 的时候,还犯了几次基础语法错误。另一方面关于 UA 替换实现的部分使用的第三方库,以前没了解过,改的时候很懵逼,不断尝试修改-编译-刷路由器-登录测试 UA,到后面逐渐意识到如果要改成我所想的全部替换成一样的指定 UA(UA2F 本身是将 UA 改为浏览器 UA 等长度的 FFFFF…..),那就必须得大改,结构框架修改。最后还是放弃了,没那个时间去慢慢研究。

Ubuntu 20.04 – 谷歌浏览器

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

Windows 11 – Edge 浏览器

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.42

Windows 11 – 谷歌浏览器

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

小米平板 5 Pro – 谷歌浏览器

Mozilla/5.0 (Linux; Android 11; M2105K81AC) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36

小米平板 5 Pro – 内置浏览器

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/89.0.4389.116 Safari/534.24 Device/elish Model/M2105K81AC XiaoMi/MiuiBrowser/14.6.74

红米 Note11 Pro – 谷歌浏览器

Mozilla/5.0 (Linux; Android 12; 21091116C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Mobile Safari/537.36

红米 Note11 Pro – 内置浏览器

Mozilla/5.0 (Linux; U; Android 12; zh-cn; 21091116C Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.116 Mobile Safari/537.36 XiaoMi/MiuiBrowser/16.0.26 swan-mibrowser

2022.9.20

在放弃之后的凌晨,我决定进一步优化一下固件。有些设置直接在编译前的源文件上修改,刷好固件就不用再手动修改了。

  • Newifi R6830(2022-9-20_openwrt22.03_newifi-r6830):时区改为中国,NTP 服务器换为国内的,启用“作为 NTP 服务器”。开启 WiFi,名字为 OpenWrt,加密方式 WPA2-PSK,密码为 12345678。管理页面主题修改,去掉之前添加的主题,只保留默认的。删掉我之前添加的关于 UA2F 防火墙相关的配置,使用的新版 UA2F 本身就会自动配置。
  • Phicomm K2(2022-9-20_openwrt22.03_k2):同上
  • Redmi AC2100(2022-9-20_lede20220716_redmi-ac2100):启用作为 NTP 服务器。UA2F 同上。

2022.9.21

  • 极路由 4 增强版 HC5962(2022-9-21_lede20220716_hiwifi-hc5962):新增固件,刷 Breed 参考:https://blog.iyatt.com/?p=7377。固件编译配置大致同 2022.9.20 红米 AC2100 固件。

2022.9.22

目前所有路由器前一版固件均存在问题,由于我的失误,错误地以为 UA2F 已经包含了所有的防火墙配置(TTL、时钟偏移…)。刚才无意间翻看 UA2F 的源码,在启动项配置部分发现里面应该只含有了 UA2F 的部分。另外为了以防万一,还是准备加入 rkp-ipid 模块。趁着睡觉之前争取编译完。

  • 启动项预置,在 package/base-files/files/etc/rc.local 添加
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53

# 防 IPID 检测
iptables -t mangle -N IPID_MOD
iptables -t mangle -A FORWARD -j IPID_MOD
iptables -t mangle -A OUTPUT -j IPID_MOD
iptables -t mangle -A IPID_MOD -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 127.0.0.0/8 -j RETURN
# 由于本校局域网是 A 类网,所以我将这一条注释掉了,具体要不要注释结合你所在的校园网内网类型
# iptables -t mangle -A IPID_MOD -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A IPID_MOD -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A IPID_MOD -d 255.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -j MARK --set-xmark 0x10/0x10

# 防时钟偏移检测
iptables -t nat -N ntp_force_local
iptables -t nat -I PREROUTING -p udp --dport 123 -j ntp_force_local
iptables -t nat -A ntp_force_local -d 0.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 127.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 192.168.0.0/16 -j RETURN
iptables -t nat -A ntp_force_local -s 192.168.0.0/16 -j DNAT --to-destination 192.168.1.1

# 通过 iptables 修改 TTL 值
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
  • 源码添加 rkp-ipid

Kernel modules–>Other modules–>kmod-rkp-ipid

git clone https://github.com/CHN-beta/rkp-ipid.git package/rkp-ipid --depth=1

更新固件:

  • 红米 AC2100:2022-9-22_lede20220716_redmi-ac2100
  • 极路由 4 增强版:2022-9-22_lede20220716_hiwifi-hc5962
  • Newifi R6830:2022-9-22_openwrt22.03_newifi-r6830
  • Phichom K2:2022-9-22_openwrt22.03_newifi-k2

红米 AC2100 添加 MentoHUST 插件测试

# MentoHUST
git clone https://github.com/KyleRicardo/MentoHUST-OpenWrt-ipk.git package/mentohust --depth=1

# luci-app-mentohust
git clone https://github.com/BoringCat/luci-app-mentohust.git package/luci-app-mentohust --depth=1

编辑 package/mentohust/Makefile,删除这两行(两个插件有同样的文件会冲突,这里放弃 MentHUST 的文件,使用 luci-app-MentHUST 的)

测试的情况是 ping 网站没问题,也没丢包,QQ 可以收发消息,但是就网页打不开。一般这种情况都会考虑 DNS 的问题吧,但是 ping 都能获取 IP,而且还有数据了,应该就不是这个问题了。我也尝试修改过 DNS,依然没用。

我暂时没有时间测试了,有兴趣的可以自己试一试。

红米 AC2100 固件: 2022-9-22_lede20220716_redmi-ac2100_MentoHUST


为了后面方便测试,这里新编译的固件同时包含了 UA2F、MentoHUST、macvlan、mwan3。

红米 AC2100 :2022-9-22_lede20220716_redmi-ac2100_all

极路由 4 增强版:2022-9-22_lede20220716_hiwifi-hc5962_all

2022.9.23

  • 有够奇怪的,今天测试又可以两台路由器同时在线了。
  • 目前测试的情况都还好,不过注意,使用路由器的时候,手机/电脑就不要直连校园网登录了,特别是在路由器和校园网直连之间切换的时候有可能触发“检测到代理上网行为,已被禁止上网”

针对 lede 编译的固件:

  • 不再添加 Turbo ACC 及包含的模块(影响 UA2F 模块)
  • 不再将防检测相关的防火墙配置预置到启动项,而是预置到防火墙自定义规则对应的配置文件中。编辑 package/lean/default-settings/files/zzz-default-settings,找到下面内容所在位置
echo 'iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports     53' >> /etc/firewall.user
echo 'iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports     53' >> /etc/firewall.user
echo '[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p     udp --dport 53 -j REDIRECT --to-ports 53' >> /etc/firewall.user
echo '[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p     tcp --dport 53 -j REDIRECT --to-ports 53' >> /etc/firewall.user

接着下一行开始添加

echo '# 防 IPID 检测' >> /etc/firewall.user
echo 'iptables -t mangle -N IPID_MOD' >> /etc/firewall.user
echo 'iptables -t mangle -A FORWARD -j IPID_MOD' >> /etc/firewall.user
echo 'iptables -t mangle -A OUTPUT -j IPID_MOD' >> /etc/firewall.user
echo 'iptables -t mangle -A IPID_MOD -d 0.0.0.0/8 -j RETURN' >> /etc/firewall.user
echo 'iptables -t mangle -A IPID_MOD -d 127.0.0.0/8 -j RETURN' >> /etc/firewall.user
echo '# 由于本校局域网是 A 类网,所以我将这一条注释掉了,具体要不要注释结合你所在的校园网内网类型' >> /etc/firewall.user
echo '# iptables -t mangle -A IPID_MOD -d 10.0.0.0/8 -j RETURN' >> /etc/firewall.user
echo 'iptables -t mangle -A IPID_MOD -d 172.16.0.0/12 -j RETURN' >> /etc/firewall.user
echo 'iptables -t mangle -A IPID_MOD -d 192.168.0.0/16 -j RETURN' >> /etc/firewall.user
echo 'iptables -t mangle -A IPID_MOD -d 255.0.0.0/8 -j RETURN' >> /etc/firewall.user
echo 'iptables -t mangle -A IPID_MOD -j MARK --set-xmark 0x10/0x10' >> /etc/firewall.user
echo '# 防时钟偏移检测' >> /etc/firewall.user
echo 'iptables -t nat -N ntp_force_local' >> /etc/firewall.user
echo 'iptables -t nat -I PREROUTING -p udp --dport 123 -j ntp_force_local' >> /etc/firewall.user
echo 'iptables -t nat -A ntp_force_local -d 0.0.0.0/8 -j RETURN' >> /etc/firewall.user
echo 'iptables -t nat -A ntp_force_local -d 127.0.0.0/8 -j RETURN' >> /etc/firewall.user
echo 'iptables -t nat -A ntp_force_local -d 192.168.0.0/16 -j RETURN' >> /etc/firewall.user
echo 'iptables -t nat -A ntp_force_local -s 192.168.0.0/16 -j DNAT --to-destination 192.168.1.1' >> /etc/firewall.user
echo '# 通过 iptables 修改 TTL 值' >> /etc/firewall.user
echo 'iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64' >> /etc/firewall.user

红米 AC2100: 20220923_lede20220716_redmi-ac2100

极路由 4 增强版: 20220923_lede20220716_hiwifi-hc5962(该路由器偶尔存在死机重启的情况,不知道是我路由器硬件的问题,还是固件问题)

Newifi R6830: 20220923_lede20220716_newifi-r6830

Phicomm K2: 20220923_lede20220716_k2(又测试了一下使用 lede,效果惨不忍睹,废弃版本)

50M 宽带分别使用上面四种路由器固件的测速:

最后一个可以明显看出ji了

2022.9.24

计划全部从 lede 转为 openwrt。

基础共有配置:

  • 采用 openwrt 源码分支 v22.03.0
git clone https://github.com/openwrt/openwrt.git --depth=1 --branch=v22.03.0
  • 编辑 package/base-files/files/etc/rc.local,写入
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53

# 防 IPID 检测
iptables -t mangle -N IPID_MOD
iptables -t mangle -A FORWARD -j IPID_MOD
iptables -t mangle -A OUTPUT -j IPID_MOD
iptables -t mangle -A IPID_MOD -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 127.0.0.0/8 -j RETURN
# 由于本校局域网是 A 类网,所以我将这一条注释掉了,具体要不要注释结合你所在的校园网内网类型
# iptables -t mangle -A IPID_MOD -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A IPID_MOD -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A IPID_MOD -d 255.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -j MARK --set-xmark 0x10/0x10

# 防时钟偏移检测
iptables -t nat -N ntp_force_local
iptables -t nat -I PREROUTING -p udp --dport 123 -j ntp_force_local
iptables -t nat -A ntp_force_local -d 0.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 127.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 192.168.0.0/16 -j RETURN
iptables -t nat -A ntp_force_local -s 192.168.0.0/16 -j DNAT --to-destination 192.168.1.1

# 通过 iptables 修改 TTL 值
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
  • 创建文件 files/root/setups,并添加可执行权限,写入
#!/bin/ash

# 时区设置
uci set system.@system[0].timezone=CST-8
uci set system.@system[0].zonename=Asia/Shanghai
uci commit system

# WiFi 区域设置
uci set wireless.radio0.country='CN'
uci set wireless.radio1.country='CN'
uci commit wireless
wifi

# UA2F 配置
uci set ua2f.enabled.enabled=1
uci set ua2f.firewall.handle_fw=1
uci set ua2f.firewall.handle_tls=1
uci set ua2f.firewall.handle_mmtls=1
uci set ua2f.firewall.handle_intranet=1
uci commit ua2f
service ua2f enable
service ua2f start

echo "设置完成!"
  • 编辑 package/base-files/files/bin/config_generate
# 找到 set system.ntp.enable_server='0' 改为
set system.ntp.enable_server='1'

# 找到 add_list system.ntp.server='0.openwrt.pool.ntp.org'
#     add_list system.ntp.server='1.openwrt.pool.ntp.org'
#     add_list system.ntp.server='2.openwrt.pool.ntp.org'
#     add_list system.ntp.server='2.openwrt.pool.ntp.org' 改为

add_list system.ntp.server='ntp.aliyun.com'
add_list system.ntp.server='time1.cloud.tencent.com'
add_list system.ntp.server='time.ustc.edu.cn'
add_list system.ntp.server='cn.pool.ntp.org'
  • 编辑 package/kernel/mac80211/files/lib/wifi/mac80211.sh
# 找到 set wireless.radio${devidx}.disabled=1,改为
set wireless.radio${devidx}.disabled=0

# 找到 set wireless.default_radio${devidx}.encryption=none 改为
set wireless.default_radio${devidx}.encryption=psk2

# 接着下一行添加(设置初始 WiFi 密码)
set wireless.default_radio${devidx}.key=12345678

最终固件:

红米 AC2100: 20220924_openwrt22.03.0_redmi-ac2100

极路由 4 增强版: 20220924_openwrt22.03.0_hiwifi-hc5962

Newifi R6830: 20220924_openwrt22.03.0_newifi-r6830

Phicomm K2: 20220924_openwrt22.03.0_k2

刷入固件启动后,进入路由器管理 http://openwrt.lan,登录服务->终端,执行命令 ./setups 完成初始配置后即可使用。

2022.9.25

为一个校友适配的 DomyWifi DW22D(大麦),采用编译方案同 2022.9.24。

固件名:20220925-openwrt22.03.0-domiwifi-dw22d

2022.9.28

Phicomm K2p(20220928-openwrt-22.03.0-phicomm-k2p):新增固件,编译配置同 2022.9.24。

2022.9.29

新增 Newifi3 和 小米 3 Pro,编译配置同 2022.9.24,分别为:

  • 20220929-openwrt-22.03.0-newifi3
  • 20220929-openwrt-22.03.0-mi3pro

2022.10.1

  • 在 2022.9.24 基础上,修改 files/root/setups 写入的内容,添加修改软件源的指令
#!/bin/ash

# 时区设置
uci set system.@system[0].timezone=CST-8
uci set system.@system[0].zonename=Asia/Shanghai
uci commit system

# WiFi 区域设置
uci set wireless.radio0.country='CN'
uci set wireless.radio1.country='CN'
uci commit wireless
wifi

# UA2F 配置
uci set ua2f.enabled.enabled=1
uci set ua2f.firewall.handle_fw=1
uci set ua2f.firewall.handle_tls=1
uci set ua2f.firewall.handle_mmtls=1
uci set ua2f.firewall.handle_intranet=1
uci commit ua2f
service ua2f enable
service ua2f start

# 将软件源修改为国内的阿里云
sed -i 's_downloads.openwrt.org_mirrors.aliyun.com/openwrt_' /etc/opkg/distfeeds.conf

echo "设置完成!"
  • 红米 AC2100 和极路由 4 增强版去除带宽监控器

固件名:

  • 极路由 4 增强版: 20221001-openwrt-22.03.0-hiwifi-hc5962
  • 红米 AC2100: 20221001-openwrt-22.03.0-redmi-ac2100
  • 小米路由器 3 Pro: 20221001-openwrt-22.03.0-mi3pro
  • Newifi 3: 20221001-openwrt-22.03.0-newifi3
  • Phicomm K2p: 20221001-openwrt-22.03.0-k2p

2022.10.4

现在宽带似乎限制的是账号的总速度,而不是每个登录设备的速度。

刚才我电脑为了下载东西,切换了一个路由器连接,但是我室友使用的另外一个路由器,突然网络就变卡了。然后我用手机连接那个路由器测速,发现速度真的降了。然后这边我把下载限速之后,再测速,速度就上去了。

也不排除是因为我两个路由器网线连在同一个 AP 上,速度受到了影响。


另外前几天发现可以两个有线 + 一个无线登录同一个账号了

2022.10.5

突然意识到在 K2 上使用最新版的 OpenWrt 似乎不太合适,换下思路,改用旧版本,内核会更小,更为精简,或许就正常了。

这里采用 OpenWrt 19.07.10 版本

git clone https://github.com/openwrt/openwrt.git --depth=1 --branch=v19.07.10

因为这个版本的 OpenWrt 中 libnetfilter-queue 不符合 UA2F(20220902T135035)要求,编译会报错,需要进行一定的修改。所以我在安装 feeds 后,将原来的 package/libs/libnetfilter-queue 删除,然后从 OpenWrt 22.03.0 的 feeds/packages/libs/libnetfilter-queue 复制过来到 package/libs 目录下。

编辑 package/UA2F/files/ua2f.config,将 option enabled ‘0’ 改为 option enabled ‘1’,即默认启用 UA2F,刷好固件开机直接登录宽带使用就行。

Phicomm K2:20221005-openwrt-19.07.10-k2

Newifi R6830:20221005-openwrt-19.07.10-newifi-r6830(同上编译配置)


根据用户反馈,红米 AC2100 会出现死机的情况,在被检测出代理上网之前就会出现无法进入路由器管理页面的情况。

今天我测试的时候发现,在路由器一段时间内没有联入 Internet 时,也会发生死机。

然后我设置将系统日志保存到文件,以便死机再开机后能看到先前的日志内容,发现每次死机前都出现一堆下面箭头所指的内容。

后面推测是 mwan3 模块的问题,在软件包中搜索卸载掉 mwan3 和 macvlan 之后就没有出现死机的情况了。mwan3 和 macvlan 是之前测试多拨的时候添加的,macvlan 用来虚拟网卡,mwan3 用来负载均衡,主要问题应该就是 mwan3 的,不过 macvlan 留着也没啥用了,直接一起卸载了就是。

2022.10.6

针对红米 AC2100 和极路由 4 增强版进行调整,重新克隆源码进行配置编译。

不再添加 mwan3 和 macvlan,避免死机的问题。

大体编译配置同 2022.9.24,但将 /files/root/setups 改为 /files/root/start,编写内容如下:

#!/bin/ash

uci set system.@system[0].timezone=CST-8
uci set system.@system[0].zonename=Asia/Shanghai
uci commit system
echo "已将时区设置为 Asia/Shanghai"

uci set wireless.radio0.country='CN'
uci set wireless.radio1.country='CN'
uci commit wireless
wifi
echo "已将 WiFi 区域设置为中国"

sed -i 's_downloads.openwrt.org_mirrors.aliyun.com/openwrt_' /etc/opkg/distfeeds.conf
echo "已将软件源设置为阿里云镜像站"

修改 package/UA2F/files/ua2f.config,设置如下:

config ua2f 'enabled'
        option enabled '1'

config ua2f 'firewall'
        option handle_fw '1'
        option handle_tls '1'
        option handle_intranet '1'

即默认开启 UA2F,不再需要刷机后手动启用。后面三个选项分别对应的含义:

  • 自动为 UA2F 配置防火墙
  • 对 443(https)端口流量也进行处理
  • 对内网流量进行处理

再编辑 package/base-files/files/etc/banner,修改终端启动显示内容,添加提醒

执行 ./start 一键中国化配置(非必须)

红米 AC2100:20221006-openwrt-22.03.0-redmi-ac2100

极路由 4 增强版:20221006-openwrt-22.03.0-hiwfi-hc5962

2022.11.20

1.我测试的情况结合一位校友反馈的情况,目前 UDP 53 端口被关闭了,所以前面 2022.9.5 所说的“白嫖”方案行不通了

2.目前来说校园网在“严格度”上应该稳定下来了,刚开始启用的时候还在松紧上调整,比较严的时候可能每天都会被检测到一次,但是这系统本身也达不到预期的效果,本来说的是一个手机和一台电脑,结果有些用户出现不能同时在线的情况,又会给营业厅工作人员反馈,各种问题也很折腾工作人员。现在就比较宽松了,我这边差不多有一个月没有再出现被检测出的情况了,在此期间也没有用户反馈这个问题了。

3.在宽松的策略下,我测试可以三个设备同时登陆

4.网速方面,似乎会限制账号的总速度(宽带刚启用的时候没这种限制),最明显的现象就是我室友单独有线连接的电脑在下载东西的时候,我这边连接路由器使用的设备会严重掉速,或者我这边下载的时候他那边掉速。另一点就是关于实际速度的,不知道是不是学校限速系统有问题,我账号是 50M 的,有时候速度是正常的在这个点上,但有时候加加加,非常棒的速度。(这个是宽带一开始就有的现象)