关于实现校园网防断网的可行方案
文章目录
前言
我们学校校园网采用的是Web网页认证的方式来上网的,或者使用锐捷客户端认证上网,都可以,上网有两种模式,一种是教育网,另一种是宽带网,都属于校园网,所以我们在校园网内搭建的网站都是可以相互访问的,但外网访问不到。以前学校是不断网的,但后来的话变成了节假日不断网,工作日11点断网,周末12点断网,现在流量套餐很便宜,有很多无限流量,所以对于大多数人来讲,防断网技术可有可无,可是断网意味着连接不上校园网,对于没有使用反代理技术的我们想要访问实验室的服务器就比较麻烦了,所以才想出了防断网的方法,这个方法是我网络专业的一个同学教我的(他好像也是学弟教的),但以前防断网是绕到了日本的服务器去了,并不属于校园网内,所以以前没想那么多,现在想要在断网后访问到实验室的服务器,我就想,假如我不绕到日本的服务器,相反我绕到实验室的服务器,那这样子不就还是处于校园网的状态,同样可以连接服务器,所以我就去实践了一下,但是学长说实验室的服务器不要搭建各种东西,所以我用的是树莓派,我将小小的树莓派放在实验室,以实现防断网的功能。
http://note.cfyqy.com/posts/390158a6.html
这个是我网络专业的一个同学的博客,他写得非常详细,看了他解释的原理我当时恍然大悟,原来还可以这样。
实现原理
校园网的web认证,我们电脑连接这个wifi或者插上网线实现认证之前,电脑就已经被分配到了一个ip地址,当我们想要上网的时候,网关会修改我们的http数据包,让我们重定向到一个提示要打开网络认证或直接到网络认证的页面。如果没有认证成功,无法得知网关的arp信息,也就无法发送跨网段的tcp连接和http请求,当然无法上网。但是,开启web认证交换机设备默认是放行DHCP和DNS报文,也是就udp53和udp67。当然,这就是我们实现防断网要利用的重点。如果没有对udp53和udp67发送的任何数据包进行拦截,我们可以利用udp53和udp67发送任何形式的数据包,实现不用锐捷认证,就可以上网。
实践流程
- 设备:树莓派3B
- 系统:Ubuntu mate 16.04
最初,我将我树莓派的ssh信息发给了我同学,想麻烦他搭建一下,但是他在编译SoftEther的时候没有编译通过,所以我想可能是树莓派的架构是armhf的,而官网提供的好像没有armhf这个架构的,所以我采用了直接从GitHub上面下载源码下来直接编译的方法。
因为我怕漏掉了某些东西,所以我一般git clone下来的时候都会加递归参数,防止我漏掉了某些组件。
git clone --recursive https://github.com/SoftEtherv*n/SoftEtherv*n.git
然后我下载下来的源码有500多兆,很大,但是没关系,能编译通过达到我的想法就好。
接下来要安装一下依赖项,所以执行:
sudo apt-get install cmake gcc g++ libncurses5-dev libreadline-dev libssl-dev make zlib1g-dev
但是在编译Soft Ether的时候它提示CMake的版本要3.7以上,Ubuntu默认更新的CMake版本是没有3.7的,所以我源码编译了一下CMake,将它更新到了3.12的版本,接下来我就configure成功,之后我就进入到tmp文件夹下面make一下,OK,build出现了各种可执行文件,也就是说我的Soft Ether已经编译好了,可以开始搭建我们的v*n Sever了。
经验总结
对这个方法,实现的方法很简单,我觉得有几个需要注意的地方。
- 需要有一台服务器,它可以是国内外的VPS,也可以是你自己搭建的小设备,也可以是一台能上网的电脑。
- 要能够互相访问,如果是国内外的VPS,它们默认是公网IP的,所以能够访问得到,如果是学校的话是内网,所以你搭建在内外的服务器也OK,也能够相互访问。
- 因为我们学校的需要认证上网的,所以我在实验室那台树莓派上是认证了我的校园网账号的,所以我在防断网过程中使用的仍然是我自己的校园网,但如果我不用我实验室的这台,相反是连到国内外的VPS上,那么就不需要认证,可以直接上网,上网的IP就是我们的VPS的所在地。
- 具体的流程请看我同学的博客,在前面,可行,就是他的界面未免太花了点,不过爱动手的同学可以试一下。