前言

这里以我的学校为例,大多数学校也是一样的方案
我们学校 WIFI 采用 WebPortal 认证,有线网络也接入了 WebPortal 认证,不过主要采用的是 Drcom 的方案(通过客户端认证)

WebPortal 认证原理

1.PC 接入内网后,由 BAS 中继向 DHCP 服务器获取一个合法 ip
2.BAS 建立 ACL 策略,限制 PC 网络接入,仅可访问部分内网、portal server 和 DHCP server
3. 未认证前 PC 所有 http 请求都会被重定向到 portal server
4. 用户登录后 BAS 会向 AAA server 请求认证,合法后即更改 ACL 策略,PC 可接入公网
流程图

参考:马燕、范植华 (2004) Web/Portal 认证技术研究


# 破解思路

# 搭建 softether VPN

# 通过 DHCP server 入手,即 udp53 端口

优点:学校晚上断网后可用
缺点:传输效率低,仅 Windows 可绕过


我这里选择的是 AWS 的 ec2 白嫖机子,JP 节点

# 搭建 softether server

  • ssh 到 vps
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz && tar -zxvf *  
cd vpnserver  
make
  • 设置 server 端管理密码
sudo ./vpncmd

输入 1 ,一直回车
输入 ServerPasswordSet 设置服务端管理员密码

sudo ./vpnserver start
  • 下载服务端管理工具并安装
    示例
  • 新建,输入 vps 的 ip 和刚才设置的密码登录
    示例
  • 创建 HUB,设置 HUB 名和密码
    示例
  • 管理虚拟 HUB→管理用户→新建,设置用户名和密码
    示例
  • 启用 SecureNAT
    示例
  • 关键步骤:加密与网络→VPN over ICMP/DNS 设置→全部启用
    示例
    服务端的配置到这里结束了
  • 下载客户端 $ 连接
    输入主机名 (vps 的 ip), 刚才创建的虚拟 HUB 名,用户和密码,连接即可
    示例

# 路由器 curl 认证

优点:网速快,延迟低
缺点:连接不稳定,容易掉线原来是加了检测


  • 首先你需要一台可以刷固件的路由器
  • 我用的红米 AC2100, 刷的 ImmortalWrt
  • 编译固件

编译环境:Ubuntu20.04
这里推荐 ImmortalWrt 项目
编译流程不多赘述,详细请看 ImmortalWrt 的 README
需要注意的是有些设备需要手动勾选 curl, 位于 Network>File Transfer

  • 抓包
    1. 进入认证界面,F12,选择网络
    示例
    2. 登录,一个个翻,直到找到带有你账号密码的数据包
    示例
    3. 右击,以 cURL 格式复制,先暂存到记事本
    示例
    4. 利用计划任务每分钟检测一次网络,实现掉线自动重连
    创建文件 "netlogin.sh"
(粘贴刚才复制的代码)

创建文件 "netcheck.sh"

#!/bin/sh
PING=`ping -c 5 www.baidu.com|grep -v grep|grep '64 bytes' |wc -l`
if [ ${PING} -ne 0 ];then
    exit 0
else
    /bin/bash netlogin.sh
fi
sleep 10
PING2=`ping -c 5 www.baidu.com|grep -v grep|grep '64 bytes' |wc -l`
if [ ${PING2} -ne 0 ];then
    exit 0
else
    /bin/bash netlogin.sh
fi

5. 将两个文件上传到路由器,openwrt 的计划任务中填入 * * * * * sh <path>/netcheck.sh

如果你的学校有检测机制,请自行谷歌校园网多设备防检测
幸好咱学校没

# 路由器认证 Drcom(version5.2,D 版)(仅支持 Drcom 的方案)

项目:

drcom-generic
openwrt-dogcom
luci-app-dogcom

1. 将 dogcom 编译进 immortalwrt

git clone -b openwrt-18.06-k5.4 https://github.com/immortalwrt/immortalwrt.git && cd package  
git clone https://github.com/mchome/openwrt-dogcom.git && git clone https://github.com/mchome/luci-app-dogcom.git

然后 make menuconfig 时在 luci>Application 选中 dogcom 就行
dogcom 配置文件获取详见 wiki


暂时就写这么多了,开学以来一直在想办法折腾校园网,学校竟然一直没有告知可以用 drcom 的客户端认证,我也是无意中摸索出来。
如果你有什么疑问。。那我也没有办法,我也菜死了

# 最终解决方案

前面搭建 softether vpn 的方法虽然可以通过 53 端口绕过认证,但只能搭在墙外,且通过 udp53 传输数据,很不稳定。
我们都知道,校园网是个大内网,那我们把 softether server 搭在宿舍不就好啦,还能访问自己的内网资源,除了抖动高了些,上下行和宿舍的一样

具体方法参考 搭建 softetherVPN

感谢双霖天灵在我遇到困难时给予的帮助!!daisuki~