CQU校园网的折腾记录:路由器、ipv6与自动登录
24-03-22 更新:又把相关内容整理了下,写了篇更具体的,专门方便 CQU 的同学配置路由器:CQU校园网的折腾指南:ipv6、多设备与自动登录 | NitroFire / Blog
用过校园网的同学都知道,校园网的使用体验那是相当恼火。限制设备数量,每次连接都要登录,相当麻烦。这让我不得不改造一下了。
为了方便弄各种东西,我买了CR6609路由器,刷了 openwrt 系统。刷机教程参考这个。
设备数量限制
默认情况下限制2个设备同时登录。我不知道别的学校如何,但在 CQU 绕过这个限制很简单,接个路由器就行了,在一个设备上登录,其他连接同一个路由器的设备就都能上网了。不过当设备太多时还是会掉线。要更多设备更稳定的话,ua2f + 防 ttl 检测应该能应付大部分校园网了。
ipv6
我这是 30M 的网速,300一年。当时看到这速度还是把我惊讶到了,家家户户200M的时代了,居然还有30M的宽带。提速降费不包括学校是吧。不过还好ipv6不限速,能跑到200多M,必须得好好利用。其实默认状态下是能获取到ipv6的,steam下载、百度网盘、bt下载都能用上ipv6。但是当用上路由器之后,就不行了。原因是校园网只给了一个 /64 的ipv6地址,没有 Prefix Delegation,需要将DHCP设置为中继模式才会向下分配公网ip。这就需要手动配置一下。参考这个教程的后面部分。不过如果你的 openwrt 版本比较老的话,你会发现 wan6 里面没有 ipv6 设置。这时可以手动编辑dhcp配置文件来改设置:
备份 /etc/config/dhcp
cp /etc/config/dhcp /etc/config/dhcp.bak
编辑 /etc/config/dhcp
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
# 添加以下设置
option ra 'relay'
option dhcpv6 'relay'
option ndp 'relay'
# 添加 wan6 设置
config dhcp 'wan6'
option interface 'wan6'
option ra 'relay'
option dhcpv6 'relay'
option ndp 'relay'
option master '1'
重启 odhcp
/etc/init.d/odhcpd restart
(参考简单干净的Openwrt ipv6配置,局域网WAN6中继模式获取原生ipv6地址,无需PD-CSDN博客)
多拨
多拨可以使(多线程)网速翻倍。在 CQU,我实测是可行的。能够单线双拨同一个账号,网速也能叠加。但最终我还是放弃了,原因竟是我找不到合适的固件!多拨需要 mwan3 负载均匀插件,我还有可分流的代理插件的刚需。同时有这两样插件的固件很少,并且我找到的都基于比较旧的版本,其 mwan3 的分流好像不支持ipv6 (我没实际测试,当时实在是心累,直接换别的固件了)。我也尝试过手动安装插件,但都因为固件缺少 kmod 依赖而失败了。我还尝试自己编译固件,编译的 x-wrt。但是 make 的时候 Error 2,最后也没找到错误原因。我就放弃了。如果有朋友知道有合适的 CR660X 的固件还望分享给我。
不过还是分享一下多拨的经验。接口和负载均衡的设置参考了这篇文章。
点击网络-接口,查看 WAN 对应的网卡名称,如 eth0。然后删除WAN。
点击设备选项卡,根据想要多拨的次数添加 MacVLAN 设备。例如,想要双拨,则添加两个 MacVLAN 设备。 添加设备时,设备类型选 MAC VLAN,基设备填 WAN 对应的设备(本例中为 eth0),模式 VEPA,MAC 地址填写一个不与原设备重复的 MAC 地址(可以简单地修改最后一位)。其他不填即可。 全部添加完成后,点击保存并应用。确保原设备 eth0 与新添加的所有 MacVLAN 设备的 MAC 地址互不重复。
回到接口选项卡,添加新接口,个数与刚刚添加的 MacVLAN 数相同。 名称可填 WAN22/WAN33/WAN44 等等,确保不重复即可。协议选择 DHCP 客户端,设备选择刚刚添加的 MacVLAN 设备。 注意:每个接口都需要填写跃点数。在编辑-高级设备-使用网关跃点中填写。这个值无所谓,互不重复即可。可以填名称中的数字:22/33/44。 所有接口创建完成后,点击保存并应用。之后检查每个接口的状态。每个接口都应获取到互不重复的 IPv4 地址。
点击网络-MultiWAN 管理器-接口。首先删除所有原有的接口。然后在下方输入刚刚添加的 MacVLAN 接口的名称,点击添加。在弹出的窗口中勾选已启用,跟踪的主机或 IP 地址填百度的 IP 地址
110.242.68.66
,其他默认既可。点击保存。重复此过程,直到所有的 MacVLAN 接口都已添加。点击成员选项卡。首先删除所有原有的成员,然后在下方输入 web1/web2/web3 之类的名称,点击添加。接口选择上一步中的接口,跃点数和 Weight 都填 1(除非每个接口的带宽不同,此时按比例填写 Weight)。点击保存。重复此过程,直到所有的口都已添加。
点击策略选项卡,删除原有策略,只保留 balanced 策略。将 balanced 策略的成员选择为上一步中添加的成员。点击保存。
点击规则选项卡,删除原有规则,只保留 https, default_rule_v4 和 default_rule_v6。将 https 和 default_rule_v4 的策略选择为 balanced,default_rule_v6 的策略选择为 default。点击保存并应用。
关于多拨如何登录校园网,有一个简单的办法,就是在 mwan 中为校园网登录页面单独设置分流规则,手动将其分配到 wan1 wan2 分别登录。不过更好的方法,应该还是使用脚本自动登录。我是找到了一个项目:GitHub - cyyself/drcom-http-multidial: 基于curl且支持绑定网卡多拨的Dr.COM客户端,适用于Dr.COM的HTTP登录方式。因为放弃了,我还没用过这个,不过看起来似乎有用。
12-16 更新
编译 x-wrt 成功了,之前编译失败是因为 WSL 的 PATH 环境变量的问题,用 WSL 编译 openwrt,make 的时候要这样:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make
之后又尝试了多拨,但还是没能成功,似乎是因为 Dr.COM 脚本的登录方式与 web 登录不同,用脚本单线同时登两个相同的账号会把另一个挤下线。
一行搞定自动登录
再次放弃多拨之后,我就尝试搞自动登录了。很多学校应该都可以用 Dr.COM 的脚本,我这也是。不过我选择了更简单的方式:浏览器打开开发者工具然后登录校园网,截取登录请求来分析。发现登录就是一个单一请求,URL 参数里面需要注意的只有账号、密码和 wan ip。
这不就简单了,直接 crontab + curl,像这样的,就一行:
* * * * * curl https://baidu.com || curl <登录请求>
每分钟运行,如果curl https://baidu.com
失败就请求登录。参数中的 wan ip 可以这样获取:ifconfig <网卡> | grep 'inet addr:' | grep -oE '([0-9]{1,3}.){3}.[0-9]{1,3}' | head -n 1
下面是我的配置,适用于重庆大学虎溪校区:
* * * * * curl https://baidu.com || curl "http://10.254.7.4:801/eportal/portal/login?callback=dr1004&login_method=1&user_account=%2C0%2C<用户名>&user_password=<密码>&wlan_ac_ip=&wlan_ac_name=&jsVersion=4.2&terminal_type=1&lang=zh-cn&v=8002&lang=zh"
(我发现,不要 wan ip 和 mac 的参数也可以正常登录,因此去掉了)
目前运行稳定,我已经几周都没有手动登录过了。
这样登录的接口和 web 登录是一样的,或许用这个方法登录多拨就可以相同账号登两次了?算了懒得试了(