CSUFT教务处爬虫项目 云服务器连接内网
说明
想要项目上线,我们必须将服务放在具有公网IP的服务器上,而具有公网IP的服务器往往不具备学校内网条件(当然你也可以在本机做内网穿透)这里我主要讲如何使用云服务器搭建访问学校内网的环境的方法。
本教程只适用于学校VPN提供服务商为深信服的EasyConnect,其它服务商本教程无参考价值!
准备
你需要以下条件
- 具备公网IP的云服务器,推荐腾讯云轻量服务器
- 安装Docker环境
开始
第一步😀
自行确定Docker是否安装并且运行正常,Docker安装参考
第二步😀
拉取docker-easyconnect镜像,并连接在docker容器连接学校vpn
docker run --device /dev/net/tun --name 'test' --cap-add NET_ADMIN -ti -p 127.0.0.1:1080:1080 -p 127.0.0.1:8887:8887 -e EC_VER=7.6.7 -e CLI_OPTS="-d https://vpn.csuft.edu.cn -u {学号} -p {密码}" hagb/docker-easyconnect:cli
自行更改{学号}、{密码},其它学校请修改 VPN 地址
-p 127.0.0.1:1080:1080 -p 127.0.0.1:8887:8887 表示分别开启容器内和宿主机 1080、8887端口映射用于socket 及 http代理
–name ‘test’ 表示取名容器为test
出现successfully即拉取并连接成功且可实现原登录信息失效时自动登录
此时容器内具备内网环境,但宿主机不具备内网环境。需要修改宿主机路由表,使服务器访问学校内网ip经过docker容器为网关.
第三步😀
#查询 docker容器 mtu ,如果之前是test这里把"$NAME"改成test,通常mtu是1400
MTU=$(docker exec "$NAME" cat /sys/class/net/tun0/mtu)
#更换第一个ip地址为你学校ip内网,通常格式是 xxx.xx.0.0/16 (16子网掩码),第二个ip为docker网关通常172.17.0.2
ip route add 172.10.0.0/16 via 172.17.0.2 mtu $MTU table 3
#添加ip路由表
ip rule add iif lo table 3
检查路由表添加是否成功可模拟检查
ip route get [ip]
若出现以下表示设置成功,此时代表任何去往你的学校内网的http请求都走docker代理,服务器具备内网环境
但这里需要注意,一旦云服务器关机,设置路由表就会失效就需要重新配置,你可以设置开机定时任务来设置路由表解决这个问题。这里就不展示了
至此云服务器拥有内网环境。
参考
如果你有其他问题,可以参考这里进行配置