Monday, February 4, 2013

解决最近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








via 细节的力量 http://xijie.wordpress.com/2013/02/05/%e8%a7%a3%e5%86%b3%e6%9c%80%e8%bf%91gfw%e5%8d%87%e7%ba%a7%e5%af%bc%e8%87%b4vpn%e5%a4%b1%e6%95%88%e9%97%ae%e9%a2%98/

No comments:

Post a Comment