分享一个VPN自动检测和断线重连

由于很多你懂得的原因,我们不得不通过一些技术手段来访问技术网站。由于线路不稳定或者很多其他的因素,会引起PPTP的假死和中断。所以我在服务器上写了一个PPTP Client的自动检测拉起脚本,来确保线路畅通。

不多说了,上代码。

将所有可用服务器的IP列表放置在/etc/ppp/peers/vpn-server这个文件中,一行一个,脚本会自动选择延迟最低的服务器进行连接,2016-04-26新增。

可以使用nohup来让它保持在后台运行:

脚本很简单,首先检查自己是否在运行,保证全局只有一个脚本在运行。检查PPTP进程是否存在,不存在就拉起,存在就进行通断检测。我用httping命令向谷歌发送请求,只要3次请求都没有成功返回,就关掉当前的PPTP连接。3秒后再重新拉起。

如果你没有httping,可以通过yum/apt进行安装。

这台服务器上还开启了包转发,允许网内的其他机器通过这台机器发送请求:

/etc/ppp/ip-up.local

这样可以在出口路由器上设置静态路由表,把一些想要通过VPN发送的包,转向到这台服务器。