MENU

全宿舍绕过校园网认证,网上冲浪的简单方法

• March 27, 2023 • Read: 9793 • 技术学习

前言

终于得闲填个两年前的远古巨坑,也属于是老方法了。介绍一下本科时在宿舍使用UDP代理绕过校园网认证的方式。
本打算一年多前就准备发布的文章,在提及这一话题的第一篇文章中就已有想法,自发布后不断摸索重构思路,却是咕到了这个时间···

该方法其实已经在多年前就广泛被利用,也催生了众多平台专门提供校园网破解服务,在这里为愿意折腾的各位提供一个自己搭建的简单教程。

提醒:本方法仅适用于部分UDP端口防范不严格的防火墙环境,存在部分网络使用此方式不可行

目前部分高校使用的校园网认证机制是在网关拦截和管理数据包,当用户接入校园网且未登录时,进行上网发出的请求数据包就会被网关拦截。此时如果我们访问某个HTTP网站,网关会对这个HTTP响应报文劫持并纂改,302重定向给我们一个Web认证界面。

但是用于域名解析(DNS)的UDP53端口发出的数据包就不会被拦截,我们可以用nslookup命令进行测试,使用kali或nmap扫描端口同理。

nslookup baidu.com

若返回正确IP地址,则此方法可行。但请注意,本命令不能决定方法的可行性,即使不返回也是可以尝试的。

但在这之前需要注意你的校园网是否会自动分配IP。笔者本人当时的情况是有线网络不会自动分配,需要手动设置IP和子网掩码。有意思的是,尽管明面说必须去指定地点申请自己的IP,但实际上只要不冲突就可以自行随意选择,在使用锐捷认证一次后会自动绑定IP、MAC和账号,这也让很多学生白白浪费了很多时间。

此外,UDP 53、67、68甚至69端口都是存在可能性的。

端口服务一览
UDP 53: DNS协议,域名解析协议
UDP 67: DHCP协议-Server,向67端口(bootpc)广播回应请求
UDP 68: DHCP协议-Client,向68端口(bootps)广播请求配置
UDP 69: TFTP简单文件传输协议

原理简介

利用网络防火墙对于UDP 53/67/68等端口的不严格限制,访问代理服务器的对应协议端口以实现绕过认证上网。
以下是初期的逻辑图,包含了一些初始的想法,存在一些问题,仅作为存档,无参考价值。创作于2020.8.22
初期逻辑图
简单来说,我们将Kcptun运行在代理软件的外层,就可以将代理流量转为UDP协议发送和接收。

相关仓库:
代理
Xrayhttps://github.com/XTLS/Xray-core
X-ui(GUI)https://github.com/vaxilu/x-ui
V2Rayhttps://github.com/v2fly/v2ray-core

Kcptun
Kcptunhttps://github.com/xtaci/kcptun
kcptun_gclient(GUI)https://github.com/dfdragon/kcptun_gclient

UDP加速
UDPspeederhttps://github.com/wangyu-/UDPspeeder
udp2rawhttps://github.com/wangyu-/udp2raw

功能简介
Kcptun:远程端口转发。是一款服务器双边加速工具,可以将服务器的TCP流量,比如纸飞机的流量,转化为KCP协议的UDP流量发出。

UDPspeeder:UDP双边加速工具,降低丢包率,配合vpn可以加速任何协议,尤其适用于加速游戏和网页打开速度;同时也是一个UDP连接的调试和统计工具。
跟 kcptun/finalspeed/BBR 等现有方案比,主要优势是可以加速 UDP 和 ICMP
【目前看来只能加速UDP,不能直接加速TCP】

udp2raw tunnel:通过raw socket给UDP包加上TCP或ICMP header,进而绕过UDP屏蔽或QoS,或在UDP不稳定的环境下提升稳定性。可以有效防止在使用Kcptun或者Finalspeed的情况下UDP端口被运营商限速。

笔者使用了Xray、Kcptun和kcptun_gclient。


部署搭建

「一」搭建代理

首先,对于代理服务器,一般我们的需求是速率足够、延迟和价格可接受。而因为满足这些条件的VPS绝大部分都属于境外运营商,故可使用XrayV2Ray等主流项目作为代理的选择。笔者曾使用Xray:Vless+TLS+wss & Kcptun模式。

为什么不使用OpenVPN(softether-vpnserver):正如上述原因,境外VPS的大流量需要尽可能的保证安全以防止IP被ban,而OpenVPN做到这一点较为复杂不稳定。

关于代理的搭建教程,可自行搜索不再赘述。当然,如果你是一名Homelaber,家中有服务器,那么也可以用它来做代理。
此外,如果你拥有或选择购买国内的UDP特定端口节点,那么就可以直接使用了。

「二」部署Kcptun

可使用以下脚本部署安装:

wget --no-check-certificate -O kcptun.sh https://github.com/kuoruan/shell-scripts/raw/master/kcptun/kcptun.sh
sh kcptun.sh

配置时,选择加速目标为 127.0.0.1:443,即本机的443端口,这是基于TLS加密代理的常用端口,如果你的代理端口为其他则同步修改即可。

参考配置:
参考配置
参考配置

「三」运行使用(多情景)

·个人使用
可在你的本地运行 代理 + kcptun_gclient,后者为Kcptun的GUI可视化,如下图所示
kcptun_gclient
参考配置:
参考配置

·全宿舍使用
可将其部署在路由器上,比如OpenWrt系统就可以支持(需要插件),路由器wan口根据校园网要求使用固定IP或DHCP模式。
将代理配置填入后,更改代理远程地址为127.0.0.1,端口选择你的Kcptun客户端运行端口,那么此时再将代理模式改为全局,就会形成以下数据流:

从用户发出的请求通过路由器的代理客户端,传递到指定的端口,即本地Kcptun客户端。
本地Kcptun将其转换成UDP协议,发送到指定的远程代理服务器端口(如代理服务器的UDP53端口),那么从防火墙看来,就是向远程某个服务器的DNS端口发送和接收数据,允许通过。


这种方法历史悠久,也很好解决,比如限制DNS白名单或限制放行53端口内容等,但笔者通过各种考试等契机接触了不同校园网,亲测对于很多高校都是没问题的。

如果对于端口有一定限制,也许可以使用dns2tcp:https://github.com/alex-sector/dns2tcp 这种妥协方法,但速度可能就无法保证了。

这种方法的缺点也有一些,比如流量需求大,也许需要选择购买无限流量的VPS;境外服务器延迟较高,如果对低延迟游戏有要求则可能不太适合,以及一些国内平台对境外IP存在限制等。总之按需选择。

Created at 2021-03-19 18:55

Last Modified: June 25, 2023
Leave a Comment

13 Comments
  1. ryty ryty

    总之按需选择

  2. 动车 动车

    哈哈,可爱的小网站

    1. @动车@(哈哈)

  3. lveMonsi lveMonsi

    咕咕咕..博主该填坑啦

    1. @lveMonsi感谢提醒,最近太忙啦@(喷)

    2. lveMonsi lveMonsi

      @青空23年啦@(汗)

    3. @lveMonsi果咩,最近考试啥的一堆@(狂汗),其实是Kcptun的方法:https://github.com/xtaci/kcptun/,我当时是用它当最外侧,服务器内接的是基于TLS的代理,走的UDP53/67/68端口,适合UDP特定端口没有限制的环境。可以先看一看,挺简单粗暴的

    4. @lveMonsi更新啦\#(期待)

    5. lveMonsi lveMonsi

      @青空大大滴良民\#(击掌)

  4. Estron Estron

    建设中……?

    1. @Estron在写了.jpg

  5. 嘟嘟噜 嘟嘟噜

    这建设中就很有灵性

    1. @嘟嘟噜一开始怕有风险,其实也没啥,过段时间慢慢写