CQU校园网的折腾记录:路由器、ipv6与自动登录

NitroFire2023/11/1日常openwrt 网络

24-03-22 更新:又把相关内容整理了下,写了篇更具体的,专门方便 CQU 的同学配置路由器:CQU校园网的折腾指南:ipv6、多设备与自动登录 | NitroFire / Blogopen in new window


用过校园网的同学都知道,校园网的使用体验那是相当恼火。限制设备数量,每次连接都要登录,相当麻烦。这让我不得不改造一下了。

为了方便弄各种东西,我买了CR6609路由器,刷了 openwrt 系统。刷机教程参考这个open in new window

设备数量限制

默认情况下限制2个设备同时登录。我不知道别的学校如何,但在 CQU 绕过这个限制很简单,接个路由器就行了,在一个设备上登录,其他连接同一个路由器的设备就都能上网了。不过当设备太多时还是会掉线。要更多设备更稳定的话,ua2f + 防 ttl 检测应该能应付大部分校园网了。

ipv6

我这是 30M 的网速,300一年。当时看到这速度还是把我惊讶到了,家家户户200M的时代了,居然还有30M的宽带。提速降费不包括学校是吧。不过还好ipv6不限速,能跑到200多M,必须得好好利用。其实默认状态下是能获取到ipv6的,steam下载、百度网盘、bt下载都能用上ipv6。但是当用上路由器之后,就不行了。原因是校园网只给了一个 /64 的ipv6地址,没有 Prefix Delegation,需要将DHCP设置为中继模式才会向下分配公网ip。这就需要手动配置一下。参考这个教程open in new window的后面部分。不过如果你的 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博客open in new window

多拨

多拨可以使(多线程)网速翻倍。在 CQU,我实测是可行的。能够单线双拨同一个账号,网速也能叠加。但最终我还是放弃了,原因竟是我找不到合适的固件!多拨需要 mwan3 负载均匀插件,我还有可分流的代理插件的刚需。同时有这两样插件的固件很少,并且我找到的都基于比较旧的版本,其 mwan3 的分流好像不支持ipv6 (我没实际测试,当时实在是心累,直接换别的固件了)。我也尝试过手动安装插件,但都因为固件缺少 kmod 依赖而失败了。我还尝试自己编译固件,编译的 x-wrt。但是 make 的时候 Error 2,最后也没找到错误原因。我就放弃了。如果有朋友知道有合适的 CR660X 的固件还望分享给我。

不过还是分享一下多拨的经验。接口和负载均衡的设置参考了这篇文章open in new window

  1. 点击网络-接口,查看 WAN 对应的网卡名称,如 eth0。然后删除WAN。

  2. 点击设备选项卡,根据想要多拨的次数添加 MacVLAN 设备。例如,想要双拨,则添加两个 MacVLAN 设备。 添加设备时,设备类型选 MAC VLAN,基设备填 WAN 对应的设备(本例中为 eth0),模式 VEPA,MAC 地址填写一个不与原设备重复的 MAC 地址(可以简单地修改最后一位)。其他不填即可。 全部添加完成后,点击保存并应用。确保原设备 eth0 与新添加的所有 MacVLAN 设备的 MAC 地址互不重复。

  3. 回到接口选项卡,添加新接口,个数与刚刚添加的 MacVLAN 数相同。 名称可填 WAN22/WAN33/WAN44 等等,确保不重复即可。协议选择 DHCP 客户端,设备选择刚刚添加的 MacVLAN 设备。 注意:每个接口都需要填写跃点数。在编辑-高级设备-使用网关跃点中填写。这个值无所谓,互不重复即可。可以填名称中的数字:22/33/44。 所有接口创建完成后,点击保存并应用。之后检查每个接口的状态。每个接口都应获取到互不重复的 IPv4 地址。

  4. 点击网络-MultiWAN 管理器-接口。首先删除所有原有的接口。然后在下方输入刚刚添加的 MacVLAN 接口的名称,点击添加。在弹出的窗口中勾选已启用,跟踪的主机或 IP 地址填百度的 IP 地址 110.242.68.66,其他默认既可。点击保存。重复此过程,直到所有的 MacVLAN 接口都已添加。

  5. 点击成员选项卡。首先删除所有原有的成员,然后在下方输入 web1/web2/web3 之类的名称,点击添加。接口选择上一步中的接口,跃点数和 Weight 都填 1(除非每个接口的带宽不同,此时按比例填写 Weight)。点击保存。重复此过程,直到所有的口都已添加。

  6. 点击策略选项卡,删除原有策略,只保留 balanced 策略。将 balanced 策略的成员选择为上一步中添加的成员。点击保存。

  7. 点击规则选项卡,删除原有规则,只保留 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客户端open in new window,适用于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 登录是一样的,或许用这个方法登录多拨就可以相同账号登两次了?算了懒得试了(

Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.5