书接上回
【折腾心得】小米R4A路由器刷固件做软路由。校园网每次都需要认证、还有设备限制拉完了。刚好自己也有一些其他的需求(远程唤醒、NAS、科学上网、广告过滤、多播等),这次直接花重金(260)在海鲜市场赎回一个伊拉克成色魔改京东云AX6600,这东西性能也是相当的攒劲。4+256魔改,可以跑Docker了,可玩性非常强。

折腾过程
如何开启SSH?
网上大牛已经发现了漏洞,漏洞原理就不分析了,看了下b站的教程,晦涩难懂。AI辅助简单说下原理吧,具体的可以直接用AI写脚本一把嗦(也能抄人家现成的)/usr/sbin/dropbear 是这个路由器负责启动SSH服务的进程,需要开启SSH服务就启动一下这个就行了。现在我们只需要一个命令注入,能执行命令启动dropbear,正好ipv6的DHCP服务有个漏洞,可以执行命令。利用流程:篡改/etc/config/dhcp,更新odhcpd配置,设置leasetrigger为我们要启动的dropbear提交配置生效开启ipv6的NAT6服务,触发命令执行,启动SSH。剩下的就是刷uboot(救命用的)和gpt分区表(要刷2G魔改版),然后刷固件。
这个已经预装了QWRT固件,包含了很多比较基础的,但是版本有点老,是24年10月的,内核架构是5.x,不太满意,而且我之前没用过QWRT系列的固件,感觉好小众支持的第三方包还少,系统很反人类。言归正传,先搞定无线中继。
每个宿舍里面都有一个路由器(SSID: Hainanu_WLAN这个都一样,BSSID: 9A:CD:55:2F:49:FA每个宿舍不一样,现在这个参数是我宿舍的),物理接口被关闭了,只能无线连接,设备在连接上路由器后会跳转到学校的认证页面(网页的深澜v1.18),输入学号和密码后就可以自由上网了。
1.网络-DHCP/DNS-重绑定保护-关闭(不用关了,下面Q8解决了)
2.网络-无线-关闭2.4G和5G_1的频射(用不上)
3.5G_1信道连接宿舍WIFI(SSID: Hainanu_WLAN,BSSID: 9A:CD:55:2F:49:FA)
4.新网络的名称:命名为 wwan,防火墙区域 (Firewall Zone):选择 wan(红色区域)
5.接口-WWAN-物理设置-接口-选择→无线网络: Client “Hainanu_WLAN” (wwan)
6.另选一个设备连接我的路由器5G_2,然后设备自动弹出学校的网页认证,输入学号和密码,认证成功连上网络(这时候查看路由器脸上的接口的MAC是否和认证页面识别到的MAC一样,直接把这个MAC写入到接口,保证他重启后仍然是这个MAC)
7.现在任意设备连接5G_2都可以访问互联网
8.在校园网自助设置里面的无感知认证添加WWAN的MAC地址,这样就不用写脚本,非常方便的断线自动连接了
此时最基本的配置就完成了。。。。。。。
本以为后面水到渠成,软件包拉第三方库,简单点几下DIY完需求,然后美美发个朋友圈装X,结果在我写下这段文字的时候已经是拿到这个设备的第三天了,这三天给我研究烂了,简直是废寝忘食,坐到电脑前查了无数的网页,和AI进行了无数的沟通(gpt5、gpt5.2、Gemini-3-pro、Gemini-3-pro-think、grok综合下来确实Gemini-3-pro-think回答的更权威一点)

不知不觉已经用了200W Tokens了

没人能够懂上面这个代码ping通的救赎感,当我调好所有的配置后,以为万事大吉了之后,惊恐的发现我学校的一些内网地址又连不上了
然后就是垃圾openclash真的难用,各种各样的问题,虽然确实很好看,三层分流,覆写,精致的后端页面等,但是真的设置跟套娃一样dns覆盖一层套一层,折腾半天总是有各种奇怪的bug,mtu分片问题,内核文件版本不匹配,写了策略却没有应用,杂七杂八,因为这个东西,我重新编译了两版固件,第二版直接把openclash写进固件中。一下解决了很多问题,但是搞笑的来了,这个无法访问学校内网资源。修了一下午都修不好,各种尝试都试了,想着放弃算了,学校内网资源也不怎么用(谁没事天天看学校官网)。结果,openclash配置文件突然丢失了,再也启动不了服务了,重启整个系统都不行。
没时间为死去的openclash而哀嚎,随即而来的是第四版的编译,这次我大道至简,不使用花里胡哨的炫技第三方包,回归质朴。不用openclash了,也许我根本用不上三层分流。直接老牌passwall,然后Web服务器也不用Nginx了,还是用uhttpd,求稳。对了,编译固件的时候也出现问题了,错误了一版,刷不进路由器(麻了)。最后,我在刷入第四版固件后,配置完所有的配置后,似乎这次真的好了。

踩的坑
Q1:断线、断网、断电重连怎么办?
A1:一开始我也感觉会不会很麻烦,准备写个脚本整个计划任务让后台轮询,然后就去准备抓包看看学校的认证系统到底怎么个事,结果发现学校认证是用的深澜V1.18,全程加密还带时间戳等参数,老复杂了。感觉简单的脚本搞不定,都准备上docker或者用python之类的了(网上查的)。结果发现校园网自助设置里面有无感认证,绑定mac连接wifi上直接自动认证了。没绷住,还有这好事,直接把WWAN的mac地址输进去,丝滑完成,测试断电重启也能正常重连。
Q2:其实基于Q1之前还有个问题,就是路由器连不上学校的认证页面,显示DNS解析不到
A2:废话不多说,把QWRT里面自带的DNS绑定重定向关了,用学校的DNS解析就要可以了,认证页面是内网,外网访问不到,自然也就DNS解析不到
Q3:WWAN一定要连接你连接到上级路由器的接口(也就是校园网)
A3:折腾这个中继也是坑很多的,自定义固件是这样的,原厂固件直接点一下就全可以了。
Q4:刷固件的时候要看架构和具体的路由器型号
A4:这很神奇,理论上型号和架构不一样是刷不进去的,结果我刷进去了,但是发现wifi没信号,排查半天发现固件刷错了
Q5:接Q5,刷错固件后想回到uboot里面重新刷,死活进不去
A5:最后又是半天排查,网卡设置里面手动改网关和IP,网关是192.168.1.1/24,IP改成192.168.1.2/24,然后就秒进了,没绷住。之前好像遇到过,上一次就折腾了很久,忘记录下来了,这次记下来。
Q6:*FACTORY.BIN和*SYSUPGRADE.BIN固件的区别
A6:前一个从uboot刷(全格式化),后一个是升级固件(在wrt里面用),其实经历这么多次刷机我觉的还是直接使用FACTORY.BIN固件在uboot里面刷最彻底。
Q7:好玩的发现,我把passwall包卸载了,然后删的时候连着所有的依赖也删了,结果dns解析异常我直接断网了
A7:重新下回来以来的dns包又恢复了,但是很神奇,没有dns解析是怎么下载东西的?不过okpg真的方便啊!
Q8:DNS来来回回折腾死了,各种包都在争夺DNS的解析权,导致DNS无法正常工作,无法联网
A8:在dnsmasq里面手动添加解析,网络-DNS-转发-添加如下(/*hainanu.edu.cn/210.37.40.4 /*hainanu.edu.cn/210.37.40.5),这两个DNS是我解析出猜测的校园内网DNS服务器,这两个配置让所有校园的域名走校内的dns解析,解决了外部公共DNS解析不到校园内网域名(这里特指认证页面!),这样的话就不用关闭dns重定向保护了
Q9:linux上古遗留问题,包太多互相之间的以来可能有冲突,我每次安装openclash都会报错,说什么端口占用,然后就是后续其他一堆奇奇怪怪的问题,最后虽然安装好了,但是哪里都有问题
A:折腾了半天也修不好,我索性直接把openclash包编译到固件里面,然后重新刷固件,关于meta内核我直接手动下载安装然后移动到core目录,这次竟然完美解决了,后端数据面板也能正常打开,设置都正常了,终于整好了。
Q10:shadowsocks-libev 不支持2022加密
A10:Shadowsocks 组件已经停止维护多年,不支持2022 新协议,用Xray
Q11:关于web服务器我该选择Nginx、uhttpd、lighttpd?
A11:别折腾了,老老实实uhttpd吧,自用根本达不到工业级的 Web 服务器和反向代理服务器。真要当服务器使还是买小主机算了。
下班
