近期用来科学上网的VPS连续被封端口,多次莫名其妙上不了Google后催生了想法。

Python检测端口连通脚本

如何检测端口状态

  • 在命令行检测一个端口的状态可以使用curl指令,虽然无法直接返回端口的连通状态,但是可以根据返回的代码来确定端口是否被封锁
  • 如果端口未开放,curl会输出代码7,并且提示连接失败;如果端口开放但是不返回curl的请求,curl会输出代码52,并提示主机没有回复;如果端口被封,会返回代码28(设置超时时间后)。所以可以根据返回代码是否为“52”来判断端口状态。

如何在python执行命令

  • python3后取消了commands模块,取而代之的是subprocess。而subprocess执行系统命令的方法也有很多,这里选择subprocess.call()方法。
  • call()支持以字符串或者序列的方式传入指令,如果指令有额外参数,则需要传入一个序列
  • 对于curl指令,需要建立一个四个元素的序列——“curl“、”–connect-timeout“参数、”[超时时间]“和”[IP地址]:[Port]“

代码实现

Continue reading “Python检测服务器端口状态+ServerChan推送”

18.08.23更新

关于apt-get update无法解析源域名的问题,原因是预制的服务商镜像源并不对外开放(阿里、京东、腾讯均无法解析),不是DNS服务无法解析。更换为清华大学源(等开放镜像源)即可解决问题:

结果并不完美,不建议用VPN来科学上网。

实验的VPS配置:

  • 两台国内VPS,一台京东VPS(作为服务端),一台腾讯VPS(作为客户端)
  • 操作系统均为Ubuntu16.04

安装WireGuard

使用指令安装:

add-apt-repository ppa:wireguard/wireguard
apt-get update
apt-get install wireguard

生成密钥

Continue reading “使用WireGuard搭建VPN服务”