提示:
原理是使用电脑浏览器替代软路由打开 Web 认证,而上述链接是由软路由请求获得的,携带的是软路由的 MAC 地址,因此如果校园网支持无感认证(即绑定 MAC),使用此方法认证后软路由即可作为路由器,给子网中的设备提供网络。
原理是使用电脑浏览器替代软路由打开 Web 认证,而上述链接是由软路由请求获得的,携带的是软路由的 MAC 地址,因此如果校园网支持无感认证(即绑定 MAC),使用此方法认证后软路由即可作为路由器,给子网中的设备提供网络。
众所周知,校园网在大多数学校都是又贵又烂。我们学校允许拉运营商宽带,但是千兆网(在没有活动的情况下)价格不菲,学校提供的无线网已经能有无线 300Mbps、有线 100Mbps(问就是我们这栋楼设备老旧)的速度;再加上如果拉运营商宽带,访问校内资源就需要连接 VPN,因此我选择忍气吞声使用校园网,在现有网络设施的基础上尽量让自己用得舒服点。
采购分了两三次,因为之前也没折腾过类似的东西,需求也是在折腾过程中逐渐明确。下表列出了大致开销:
共 540 元。
如果复刻方案且不踩坑,需要花费:
共 415 元。
其他硬件如插座等不计入其中。
首先用网线按照如下方法连接:
1 | 电脑 <-> 软路由 <-> 有线网口 |
部署过程中不需要把路由器塞到规划好的位置,先放在外面会比较方便,毕竟后面可能还需要改变接线。
如果卖家已经刷好系统,直接登录即可,否则需要自行安装软路由系统。这里使用基于 OpenWRT 的 iStoreOS。
在终端中 curl
任意网址,会显示一个重定向页面,复制其中:
1 | http://<IP>:<PORT>/eportal/index.jsp?wlanuserip=aaaa&wlanacname=bbbb&ssid=cccc&nasip=dddd&snmpagentip=eeee&mac=ffff&t=wireless-v2&url=gggg&apmac=&nasid=hhhh&vid=iiii&port=jjjj&nasportid=kkkk |
类似的链接并打开,登录校园网账号,即可上网。
然后正常配置 Docker、OpenClash 等即可。
软路由一般没有无线网卡,这里不推荐购买 MT7921,这块网卡存在散热问题。可以使用 MT7925 等无重大缺陷的网卡。
在购买网卡后,我发现主板上的 MiniPCIe 接口是全高的,而网卡是半高的,然后什么都不懂的我尝试用钳子将螺丝柱拧下再拧至半高位置的孔上(后面才知道不能这样做),不但没有成功,还把一个小电阻磕下来了,再次通电时发现无法正常启动。
于是我重新换了一块主板,新的主板正好是半高 MiniPCIe 插槽,于是顺利装上。
此时内网测速:980Mbps。
插上无线网卡后如果有对应驱动,iStoreOS 可以自动识别并在菜单栏中显示“无线”选项。
我本打算使用这块无线网卡提供 WiFi,结果:
综上,忍受了数天后我决定买一个无线路由器提供无线网。
我的软路由只有 2 个网口,一个 LAN 一个 WAN,而无线路由是 4 个网口,三个 LAN 一个 WAN,因此我是这样接线的:
1 | 电脑 <-> 无线路由 <-> 软路由 <-> 有线网口 |
这样实际只需要 3 根网线。多的一根就当备用了,一起买的也不好退。
启动无线路由后进入配置向导,选择“有线中继”模式即可将无线路由作为 AP 使用。
此时内网测速:950Mbps。可见中间多了一台无线路由,并没有显著影响内网速度。
软路由上使用 AdGuard 提供 DNS 服务,查看日志发现有大量 api.miwifi.com
的请求,屏蔽了之后还是感觉怪怪的,遂刷机。
使用脚本:
GitHub - acecilia/OpenWRTInvasion
https://github.com/acecilia/OpenWRTInvasion
输入路由器后台地址和密码,等待片刻即可开启 SSH 和 Telnet。
参考:
小米路由器 4A 千兆版(R4A)刷 OpenWRT 官方固件(附 Telnet 连接失败解决方案)
https://www.right.com.cn/forum/thread-6074185-1-1.html)
成功刷入 Breed 后,进入 192.168.1.1 刷入固件。此后长按机身 Reset 键恢复出厂设置,也是回到刷完新固件之后的状态。
这次我打开了无线路由的 DHCP,这样可以在无线路由的后台管理设备,而不是在软路由。
无线路由器就支持同时开启 2.4Ghz 和 5Ghz,我将 SSID 分开设置,以免物联网设备被自动切换到 5Ghz WiFi。
在无线页面点击扫描:
选择校园网 WiFi 加入:
学校无线网一般是双频分开,建议选择 5Ghz,并填写对应的 BSSID,以免切换到更远的 AP:
如果有已认证的、空余的 MAC 地址,可以直接填入,无需再次用上述方法认证:
然后就可以保存提交了。
MT7921 太烂了,连上无线网后一开始能跑接近 300M,然后协议速度开始慢慢降,最后降到只有 6Mbps,我现在老老实实用有线网了。
学校的有线网 IPv6 有的时候会离奇消失,重启 WAN6 就能解决,于是找到一个脚本:
1 | #!/bin/sh FLAG_FILE="/tmp/ipv6_prefix_change_flag" FLAG_VALUE=$(cat $FLAG_FILE 2>/dev/null) if [ "$FLAG_VALUE" = "1" ]; then logger -t prefix_change "Script is already running. Skipping execution." exit 0 fi echo "1" > $FLAG_FILE IPV6_DEFAULT_ROUTE=$(ip -6 route | grep default 2>/dev/null) if [ -z "$IPV6_DEFAULT_ROUTE" ] ; then logger -t prefix_change "IPv6 route missing detected. Reconnecting wan6 interface." ifdown wan6 ifup wan6 fi echo "0" > $FLAG_FILE |
丢到一个目录下,设置计划任务每分钟检测一次即可。
效果(日志):
1 | # IPv6 正常,脚本无输出 Xxx Xxx xx xx:xx:xx xxxx cron.err crond[xxxxx]: USER root pid xxxx cmd /path/to/ipv6_monitor.sh # IPv6 异常,重启接口 Xxx Xxx xx xx:xx:xx xxxx user.notice prefix_change: IPv6 route missing detected. Reconnecting wan6 interface. Xxx Xxx xx xx:xx:xx xxxx daemon.notice netifd: Interface 'wan6' is now down Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Withdrawing address record for xxxx:xxxx:xxxx:xxxx::a on eth0. Xxx Xxx xx xx:xx:xx xxxx daemon.notice netifd: Interface 'wan6' is setting up now Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Withdrawing address record for xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx on eth0. Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Registering new address record for xxxx:xxxx:xxxx:xxxx::a on eth0.*. Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Registering new address record for xxxx::xxxx:xxxx:xxxx:xxxx on eth0.*. Xxx Xxx xx xx:xx:xx xxxx daemon.notice ttyd[18127]: rops_handle_POLLIN_netlink: DELADDR Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: read /etc/hosts - 12 names Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 4 names Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq-dhcp[1]: read /etc/ethers - 0 addresses Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Registering new address record for xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx on eth0.*. Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Withdrawing address record for xxxx:xxxx:xxxx:xxxx::a on eth0. Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Withdrawing address record for xxxx::xxxx:xxxx:xxxx:xxxx on eth0. Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Registering new address record for xxxx:xxxx:xxxx:xxxx::a on eth0.*. Xxx Xxx xx xx:xx:xx xxxx daemon.notice netifd: Interface 'wan6' is now up Xxx Xxx xx xx:xx:xx xxxx user.notice firewall: Reloading firewall due to ifup of wan6 (eth0) Xxx Xxx xx xx:xx:xx xxxx daemon.notice ttyd[18127]: rops_handle_POLLIN_netlink: DELADDR Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Withdrawing address record for xxxx::xxxx:xxxx::1 on utun. Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Leaving mDNS multicast group on interface utun.IPv6 with address xxxx::xxxx:xxxx::1. Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Joining mDNS multicast group on interface utun.IPv6 with address xxxx::xxxx:xxxx:xxxx:xxxx. Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Registering new address record for xxxx::xxxx:xxxx:xxxx:xxxx on utun.*. Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: read /etc/hosts - 12 names Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 4 names Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq-dhcp[1]: read /etc/ethers - 0 addresses Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Leaving mDNS multicast group on interface utun.IPv6 with address xxxx::xxxx:xxxx:xxxx:xxxx. Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Joining mDNS multicast group on interface utun.IPv6 with address xxxx::xxxx:xxxx::1. Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Registering new address record for xxxx::xxxx:xxxx::1 on utun.*. Xxx Xxx xx xx:xx:xx xxxx daemon.info avahi-daemon[xxxx]: Withdrawing address record for xxxx::xxxx:xxxx:xxxx:xxxx on utun. Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: exiting on receipt of SIGTERM Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: started, version 2.89 cache disabled Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: DNS service limited to local subnets Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset no-nftset auth cryptohash DNSSEC no-ID loop-detect inotify dumpfile Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: UBus support enabled: connected to system bus Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq-dhcp[1]: DHCP, IP range 192.168.100.100 -- 192.168.100.249, lease time 12h Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: using nameserver 127.0.0.1#1145 Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: using only locally-known addresses for test Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: using only locally-known addresses for onion Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: using only locally-known addresses for localhost Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: using only locally-known addresses for local Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: using only locally-known addresses for invalid Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: using only locally-known addresses for bind Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: using only locally-known addresses for lan Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: read /etc/hosts - 12 names Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 4 names Xxx Xxx xx xx:xx:xx xxxx daemon.info dnsmasq-dhcp[1]: read /etc/ethers - 0 addresses Xxx Xxx xx xx:xx:xx xxxx user.notice nlbwmon: Reloading nlbwmon due to ifup of wan6 (eth0) Xxx Xxx xx xx:xx:xx xxxx user.notice cifs-mount: Reloading cifs-mount due to ifup of wan6 (eth0) |
评论