利用openVPN实现udp53,67,68端口绕过校园网认证上网
正如标题所言,这种绕过校园网的办法其实很早之前就有。但可能知道的同学并不多,我是在去年的大一上的寒假的时候弄出来的。我的印象很深刻,当时我大一上期刚来学校,发现CDTU(移动校园网)还没有修复这个漏洞,就一直想搭建一台服务器来实现免流。折腾了很长时间,最终成功了。过来一年,把我当初倒腾的整个经历分享给大家。
原理分析:
这里先重点介绍一下原理,以及使用的这几个端口。毕竟知其然不如知其所以然。
在连接到某个需要 Web 认证的网络之前(就比如连接CDTU),我们已经获得了一个内网 IP,此时,如果我们访问某个 HTTP 网站,网关会对这个 HTTP 响应报文劫持并篡改,302 重定向给我们一个 web 认证界面(所以点 HTTPS 的网站是不可能跳转到 web 认证页面的)。
这里我做个简单的试验给大家演示一下。就以我的校园网CDTU为例。
在连接校园网,没有认证的情况下,分别发起一个http和https的请求。
https请求,脚本会报错,我加了异常处理。
而网关(或者说交换机)都默认放行 DHCP 和 DNS 报文,也就是 UDP53 与 UDP 67。有些网关甚至不会报文进行检查,这也就意味着任何形式的数据包都可以顺畅通过。
来自百度上的解释:
53端口:端口说明:53端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,DNS服务在NT系统中使用的最为广泛。通过DNS服务器可以实现域名与IP地址之间的转换,只要记住域名就可以快速访问网站。
67和68端口:67是用来接收下级客户请求分配IP 68是向客户发请求成功或失败回应。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口。
使用这三个端口原理都是相同的。我们就可以在公网搞一台服务器,然后借此来免费上网。
SoftEther VPN Server 安装(官网已被墙)
这是我大一上的时候,刚搭建好的时候,确实能绕过校园网认证达到免流,当时的我别提有多激动了。
需要的做的准备:一台具有公网IP的云服务器(哪家云厂商的都行,个人比较推荐阿里云)
系统选用linux和windows都行,下载对应的服务端即可。
http://www.softether-download.com/cn.aspx
这是softether的下载页面,但是也被墙了,可以自行百度下载。
这里我先演示Linux服务器上的安装方法,我用的是centos7。
用ssh连接到自己的vps,先更新下并安装 gcc 等工具。
如果是Ubuntu系统,就将下面的yum换成apt即可。
yum update && yum upgrade
安装 make gcc g++ 编译软件
yum install -y make gcc gcc-c++
因为我用的是香港的vps,所以可以直接下载成功。若用国内的可自行上传到vps即可。
wget http://www.softether-download.com/files/softether/v4.24-9651-beta-2017.10.23-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.24-9651-beta-2017.10.23-linux-x64-64bit.tar.gz
怕大家甚至不会上传文件到vps,教大家一个简单的命令。
yum install -y lrzsz
rz #上传本地文件
sz [filename] #下载指定文件到本地
通常大家都是用的root用户的根目录,即/root
到这一步默认SoftEther_VPN_Server的压缩文件已经在vps上了。
tar -zxvf soft(按住tab键自动补全)
接下来命令如图
cd vpnserver/
make
连续输入三个 1
接下来 设置 SoftEther VPN 服务
./vpnserver start
./vpncmd
依次 1,回车,回车(不要都按成1了)
在提示符下输入 ServerPasswordSet
输入管理服务器的密码。两次确定之后,按 ctrl+D退出管理。
最好将vpnsever加入到开机启动项中,这样vps重启了就不用每次都手动开启。
vi /etc/rc.local
在 exit 0 之前写入 /root/vpnserver/vpnserver start
保存退出即可(别告诉我你不会用vi ,如果真的不会那就用nano)
vi 使用方法:按 Esc 回到 command 模式,i 进入插入模式,command 下: wq! 为保存并退出。
linux服务器端的安装就基本完成了。
windows上管理 SoftEther VPN Server 服务
接下来就是在自己电脑上用图形化界面操作了
先下载 SoftEner VPN Management 安装
点击新设置,设置名称、主机名,ip,管理密码等。
然后选择刚刚新建的设置,点击连接按钮。关闭两个窗口来到主要的管理界面。
点击管理虚拟 Hub – 管理用户,左下角的新建。输入用户名,可以使用匿名的方式认证、也可以使用账号密码、甚至是证书认证也可以。安全策略那里可以设置此用户的最大下载速度、最大上传速度。
注意SecureNAT 和 Local Bridge(本地桥)不可以同时开启!否则会造成链路层死循环占用大量 CPU。
OpenVPN 的搭建
OpenVPN 的配置涉及到证书的生成,但是 SoftEther 同样提供了比较方便的服务器、客户端配置方法。为我们节省了大量的时间和精力。
服务器配置方法:
53/67/68,一般都可以。我这里选的68端口。
管理主界面点击右下角的 OpenVPN/MS-SSTP,设置一个 UDP 端口,然后点击 “为 OpenVPN 生成配置文件”,之后将弹出的 zip 文档保存,确定。
客户端配置方法:
下载并安装 OpenVPN 客户端,将下载的 zip 文档中 l3 结尾的文件复制到安装目录下的 config 文件夹下。
打开 openVPN,右下角右键选择 Connect。
然后输入虚拟 Hub 里设置的一对账号密码即可。
不过很多云服务器厂商还需要在服务器上修改对应的安全组策略放行端口流量,比如阿里云。
这样就可以顺利绕过校园网实现免流了。
不过,
CDTU(我们学校的校园网)已经把该方法给修复了。而且还是我和学校网管中心的老师一起修复的。哈哈,没想到吧!不过写这篇文章是为了把整个过程总结下来,供大家参考,如果大家在免流这方面有什么更骚的思路,欢迎和我交流。
11月6日更新
最近有很多小伙伴加我,询问我搭建中出现的一些问题。我在这里补充一下。
目前大家下载的SoftEther可能都是最新版本,好像是4.30。经测试这个版本搭建出来有问题,最后生成的ovpn文件没有ca信息,大小为5kb,而正常的为9kb左右。
建议大家还是用我文中提供的4.24版本。可直接从我博客中下载。
vps可直接使用wget命令下载即可
wget https://zgao.top/download/softether-vpnserver-v4.24-9651-beta-2017.10.23-linux-x64-64bit.tar.gz
另外搭建过程中还有一个步骤容易出现问题。
命令行模式下 SoftEther 默认使用 443 端口与连接到管理端,而如果你的vps的443端口已经被占用了,就会出现如下报错。
解决办法就是在Hostname of IP Address of destination 时直接输入
localhost:5555
然后回车就可以了。
赞赏微信赞赏支付宝赞赏
32条评论