前言
学校在上个学期升级了校园网,之前允许一个设备登录,然后分享网络,可以实现多台设备使用一个账号,但升级后的网络会检测网络共享,发现后直接强制下线账号。至于检测原理,我也不清楚,一开始猜测是根据流量来检测,使用$$来加密流量,但仅存活了一天便挂掉了。实验室的网络是不用认证,可以直接使用的,并且宿舍和实验室在内网是互通的,于是便有了将实验室的网络引入宿舍的想法。
解决方案
使用一台服务器/电脑搭建PPTP,然后在宿舍使用智能路由器(看来当初没买普通路由器的想法是对的)通过PPTP来连接到实验室的网络,从而实现免认证多人同时上网。宿舍晚上11点断电,路由器设置开机自动PPTP连接,然后就可以实现无痛上网了。
搭建方法
- 首先我找到了一台破主机,让他从当PPTP服务器角色,放在实验室24小时不关机,为了搭建方便(主要还是因为配置垃圾),给它装了Linux系统,我选择的是Ubuntu 16.04。
- 然后当然是连接好网络,先保证服务端可以正常上网,然后更改一下镜像源,确保后续安装的速度。
- 接着更新一下系统。
sudo apt-get -y update
sudo apt-get -y upgrade
- 然后安装pptpd、iptables、vim。
sudo apt-get install -y pptpd iptables vim
- 修改配置文件,配置本机和远程ip。
sudo vim /etc/pptpd.conf
# 取消如下两行的注释
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
- 配置DNS,这一步要注意,一般学校、企业等单位的网络环境比较特殊,有自己的DNS服务器,这里的DNS一定要使用学校的,不要填写公共DNS服务器(如114.114.114.114)。
sudo vim /etc/ppp/pptpd-options
# 把xxx.xxx.xxx.xxx换成自己所处网络环境的DNS地址
ms-dns xxx.xxx.xxx.xxx
- 设置PPTP服务的连接用户名和密码。
sudo vim /etc/ppp/chap-secrets
#在配置文件末尾输入以下内容,注意用空格隔开
oxygen pptpd 123456 *
#上面设置用户名为oxygen,密码为123456,可以根据自己的喜好修改
- 开启内核 IP 转发。
sudo vim /etc/sysctl.conf
# 取消掉IPV4 转发注释
net.ipv4.ip_forward=1
# 使配置生效
sudo sysctl -p
- 重启PPTP服务。
service pptpd restart
- 建立 NAT,这里的ens33是网络配置的名称,不同设备名称不同,我这里是ens33,注意修改,可以使用ifconfig命令查看网络配置名称。
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens33 -j MASQUERADE
- 设置 MTU,防止单个数据包过大
sudo iptables -A FORWARD -s 192.168.0.0/24 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400
至此,我们基本上就已经完成搭建啦,现在可以用其他设备通过PPTP连接服务器,测试是否可以上网,如果上不了网,极大可能性是网卡信息设置错了(比如我自己,卡在这很久)。
如果一切正常,那么可以使用了,但谁能保证24小时不间断开机,每次开机重新启动服务,设置NAT和MTU难免有些麻烦,再加个开机自启基本就完美了。
- 加入开机自启,这样即使关机了,开机不用执行任何操作,即可直接使用。
sudo vim /etc/rc.local
# 在exit 0 之前加入如下代码,注意第二行那里的网络配置名(ens33)改为你自己的
/etc/init.d/pptpd restart
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens33 -j MASQUERADE
sudo iptables -A FORWARD -s 192.168.0.0/24 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400
到这里算完全搭建完了,但我并信不过我使用的这台主机,所以设置了一下定时重启,如果配置足够的话,这步完全可以忽略,但没办法,为了防止它因为7*24小时工作而宕机,还是配置一下比较好。
- 配置定时重启。
sudo vim /etc/crontab
# 在文档末尾添加如下信息,注意空格隔开
55 23 * * * root /sbin/reboot
#以上意思是每天23使55分重启,可以根据自己的情况修改时间
大佬
@逗比 : 只是喜欢瞎折腾罢了
牛皮