Total Pageviews

Monday 6 June 2016

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

研究了几天后,终于找到对策: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的才能顺利连接。
上面是简单的介绍,如果还有疑问可以在微博私信我。
from http://yes2.me/archives/1577