1. 缘由
事情是这样的,我们学校的校园网平主要都是以WiFi的提供服务的,平是我会再电脑上将文件夹共享,这样我就躺在床上访问电脑上的文件。有一天我就想,那学校的内网是不是再各个地方都是互通的,只是我平时都在宿舍连接电脑,没有发现。
于是我就跑到学校的其他地方看了实验能否在校园网下访问放在宿舍的电脑上共享的文件,结果不出所料,只要连接并且认证校园网以后就可以自由的访问,不管是认证内网还是外网服务。
后来我让我在另一个校区的同学试了一下访问我内网服务器上的网站也是通的,但是不在一个网段。于是我推测了一下我们学校的网络结构可能类似于下面的样子,不过实际可能不一样。
因为内网是免费的,于是我们就可以用校园网做许多有趣的事情。于是我找到了尘封许久的树莓派,树莓派上已经刷好了ubuntu18系统。这里我先介绍我使用树莓派在校园网内网搭建的服务,后面我会单独写文章详细解析我是如何实现这些功能的。
2. 校园网的自动认证
我们学校的校园网分为Auto和WEB两个,WEB是网页认证,可以选择自己需要的服务,Auto是账号密码认证,默认连接外网,因为校园网有设备数量限制和网速限制,所以不能让树莓派默认连接Auto,不然就不够用了。
于是我们就需要找到一种方法让树莓派能够自动认证校园网,这个使用Fiddler 抓包抓取WEB认证过程中POST的内容,然后自己再使用Python发送相同的POST就可以实现。如下图可以得到校园网认证需要的POST地址和参数,有些参数是不必要的,可以乱填。
这样就实现了校园网的自动认证,并且使用同样的方法就可以实现校园网的内网外网切换。后期使用通过使用Socket在服务器端构建一个专门用于控制校园网服务切换的服务端程序,然后在其他设备上发送自己编制的指令,这样就可以实现在其他设备上控制树莓派连接的校园网服务。
这里为了防止有时候DHCP分配的IP发生变化,我修改树莓派上ubuntu系统的/etc/network/interfaces
如下,这样就可以保证每次重启IP都不会发送变化。
#Lcal loopback
auto lo
iface lo inet loopback
#Wlan 0
auto wlan0
allow-hotplug wlan0
#iface wlan0 inet dhcp
iface wlan0 inet static
address 10.36.70.29
netmask 255.254.0.0
dns-nameserver 222.197.198.33 222.172.200.68 8.8.8.8 8.8.8.4
3. 树莓派安装宝塔服务
Ubuntu/Deepin安装命令:
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
使用宝塔服务可以很快的部署需要的服务,安装需要的环境。