解决最近GFW升级导致VPN失效问题

最近,公司的VPN总是掉线,后来才看到,方校长的研究文章。「网络流量分类研究进展与展望 」。通过机器学习的方法封锁翻墙了。SSH隧道、IPSEC隧道、SSL, 以及P2P均被破解。无论如何换端口或者ip,只要流量稍大一点,就立刻掉线。

研究了几天后,终于找到对策:VPN通过SSH隧道映射穿越GFW。该方法可以绕过企业级的防火墙,同样,绕过GFW似乎也非常好使。下面简单说说配置的过程。

基本原理: 客户端 –> 本地映射端口 <-- SSH隧道 --> 远程VPN服务器

前期准备

1、可以翻墙的SSH账户(最好和VPN在一台主机上)

2、可以翻墙的VPN账户(openVPN、pptp 等)

配置方法

1、本地设置端口转发的脚本并运行

#! /usr/bin/env python  #coding=utf-8    import pexpect  import re  local_port = "本地转发端口"   #pptp默认是1723 openVPN默认是1194  username = "ssh用户名"       password = "ssh密码"                ssh_host = "ssh的地址"  vpn_host = "vpn的地址"     #如果ssh和vpn是一台机子,这里可以是127.0.0.1  vpn_port = "vpn端口"  cmd = "ssh  -C -f -N -g -o CompressionLevel=9 -o Cipher=none "  cmd += username + "@" + ssh_host + " -L "  cmd += local_port +":"+ vpn_host + ":" + vpn_port  pattern = re.compile("^.*assword:\s*")  child = pexpect.spawn(cmd)  child.expect(pattern)  child.sendline(password)  child.expect(pexpect.EOF)  

2、设置VPN的地址和端口到本地映射地址

按照上面脚本,如果是openVPN,那么连接的地址应该是127.0.0.1:1194。

3、特别注意

由于SSH端口转发不支持UDP,所以openVPN要把连接方式改成TCP的才能顺利连接。 上面是简单的介绍,如果还有疑问可以在微博私信我。


原文:Yes2Me
发表评论