最近,公司的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
没有评论:
发表评论