引言
使用 VPN 服务可以在某种程度上加快网络访问速度。默认情况下,在不使用 VPN 的时候,用户所发送的请求,将会由用户和服务器间的路由决定应该如何选择路径。有的时候,这并不是最好的选择。比如中间的某个路由或防火墙配置有误,可能会减缓甚至阻止用户的请求到达指定服务器。使用 VPN 可以让用户的请求先发送到一个 VPN 服务器,然后再由该服务器向目标发送请求,等于是改变了互联网ip包传送的路径。在某些情况下,可以避免防火墙配置中的错误,会起到加速的作用。
介绍
我这里说一下使用 VPN 的解决办法。VPN 有免费的,收费的。无论哪种都有很多种选择,具体哪个好,根据各地的网络环境差异不同。相对而言,免费的 VPN 比较慢,而且可能有连接时间和每日次数限制;收费的比较快,没有连接时间和次数限制。比较了一下看Youtube HD的速度后,我最终了选择了收费的 VPN。
需要声明的是,我只是阐述我所了解到的情况,所以不要认为我是在做广告。我所选择的是 StrongVPN。它支持 OpenVPN,目前解决了一些地方 ISP 把 PPTP 给禁掉的问题。我看到有每年 $85 的选择,可以用这个。需要注意的是,StrongVPN 中文网页上说错了,并不是只有每年 $155 的一种,而且也不必交什么 $25 的开户费。大家看英文网站(http://strongvpn.com/packages_china.shtml)就自然明白了。网站推荐给中国用户的有两个,一个是 $85 全年的VPN:"4 City Special Open 1 Year",另一个是每月 $10,最少3个月的VPN:"Lite Open 3 months"。后者可以作为尝试使用。协议上支持 OpenVPN, L2TP, PPTP等,国内推荐使用 OpenVPN 协议。
账户开通后,还可以添加第二个PPTP账户,给手机用,每月 $2。不过目前 Android 手机使用 VPN 上有不少问题。Google 上面的 Issue list 相关问题已经有一年多没有Google的开发人员理会了,不知道Google怎么搞的。Android 上目前我发现 L2TP/IPSec PSK 还是比较好用的。使用CyanogenMod的用户应该不用太担心,CM 好像支持 OpenVPN。
需要说明的是,一个 VPN 账户只能一个客户端用。要是有第二台电脑就只能错开时间登录,不能同时使用。我想这也是为什么它有一个第二个 PPTP 账户的选项,因为开通这个可以专门给手机一个账户。
申请
申请的时候也很简单。支付方式如果填写 Paypal,基本上可以立刻开通,而且Paypal比较安全,也不会泄露你的银行或者信用卡信息。电话号码需要填写真实的电话号码,因为 StrongVPN 很可能会电话联系你,以确认身份。默认的地址一般选择旧金山,物理上离亚洲近。
开通后,在首页右上角上登录,在左边选择VPN Accounts Summary。这会列出所有的开通的账户。对于 PC 而言,更多关注的是 "Your Open accounts"。如果 Status 是 active,就说明已经可以使用了。
点击view greeting,这会显示配置所需要的信息。在 "STEP 1. DOWNLOAD" 里面,有一个链接
"Your OpenVPN Configuration Files"。把它下载下来,解压缩并且保存到合适的位置。一会儿配置的时候需要用。
具体配置
Windows 7
配置可以参考 StrongVPN 的帮助:
http://strongvpn.com/openvpn_win7.shtml
首先下载 OpenVPN Windows 客户端:
http://openvpn.net/index.php/open-source/downloads.html
目前的版本是 2.1.4:
http://swupdate.openvpn.net/community/releases/openvpn-2.1.4-install.exe
安装就是一路下一步就行。
在执行 OpenVPN 前,我们需要先把 配置文件复制到位。将前面下载并解压缩的文件,全部复制到安装目录的 config 目录下,如:C:\Program Files\OpenVPN\config。
然后,设置 OpenVPN 的执行权限。由于 OpenVPN 执行需要修改一些系统配置,比如路由配置,所以必须以管理员身份执行程序。点击:开始->程序->OpenVPN->[注意]右键点击 “OpenVPN GUI”->属性->兼容性->选中“以管理员身份运行此程序”,确定退出。
设置好了就可以运行了,点击:开始->程序->OpenVPN->OpenVPN GUI
程序正确运行后会在右下角有一个图标,右键点击这个图片,会看到和你 StrongVPN 账户同名的配置名称,点击里面的 Connect,等待一些时间,如果一切正常,链接成功后,右下角的图标颜色就从红色变到了绿色。此时你的所有流量都是通过 VPN 访问的了。如果碰到了问题,你需要检查配置过程是否有错,比如是否是以管理员身份执行的 OpenVPN 等。
Linux / Ubuntu
1 | sudo apt-get install network-manager-openvpn-gnome |
安装完成后,建议重新启动,可能会避免一些错误。
方法一
设置可以参考:http://strongvpn.com/ubuntu_open.shtml
点击右上角的网络连接图标:VPN连接->配置 VPN(C)...
这会弹出一个配置窗口,点击“导入”,然后选择前面下载并解压缩好的配置文件中的ovpnXXX.ovpn文件。配置文件会被导入。点击“高级”->TLS 认证,注意“密钥方向”,确保其结果为 1。或者确保内部的值和 ovpnXXX.ovpn 的内容一致。之所以需要确认这个配置的原因,是因为 network-manager-openvpn 有一个 bug 可能会错误的忽略这个“密钥方向”,从而配成 0,导致 VPN 无法连接。还需要注意一点,不要勾选自动连接,毕竟我们只在需要的时候访问 VPN。确定无误后,点击确定、应用、关闭。
这个时候点击右上角网络连接图标->VPN连接,里面会显示出刚刚导入的ovpnXXX的连接,点击它就开始连接了。点击后,注意右上角的网络连接图标,如果 VPN 连接成功,会在图标的右下角出现一个锁头的标志,如果没有的话,可能哪里出了问题。
如果碰到错误,“VPN连接"ovpnxxx"失败,因为没有有效的VPN机密。”,那很可能是因为你忘记重启了。重启一下,再试试看。
方法二
将所有配置文件复制到 /etc/openvpn 目录下。并且执行:
1 | cd /etc/openvpn |
2 | sudo ln -s ovpnxxx.ovpn ovpnxxx.conf |
将 ovpnXXX 替换成你真实的文件名。
然后启动服务:
1 | sudo /etc/init.d/openvpn start |
如果一切正确,openvpn会连接配置好的 VPN。这么配置的好处是每次启动 openvpn 都会自动连接,不需要用户登录。对于服务器类的环境,可能需要这么配置。
Android 手机
如果开通了 2nd PPTP 账户,或者把服务器设定到 PPTP 服务器上了。那么Android 手机也可以使用VPN服务加速网络访问。
VPN服务器一般支持 PPTP 和 L2TP 两种协议,某些互联网提供商的设置有误,可能会导致PPTP协议无法使用,因此,推荐使用L2TP。而且,我感觉 Android 对 L2TP 的支持要比 PPTP 好些。
设置的办法可以参考:http://vpnblog.info/strongvpn-l2tp-android.html
首先是找到配置参数,在 StrongVPN 登录后,点击“VPN Accounts Summary”,点击“Your PPTP accounts”下面账户的“View greeting”。这里面是配置信息,记录下来。如果大家浏览器上装了FoxToPhone或者ChromeToPhone插件,可以复制相关信息到剪贴板,然后直接发送到手机上,省得在手机小键盘上打错了。
然后在 Android 手机上配置:
设置->无线和网络->虚拟专用网设置->添加虚拟专用网->添加VPN “L2TP/IPSec PSK”:
参考之前记录下来的信息配置。
名称自己随便定义;服务器填写配置中的”Server Address”的内容,也可以填写”Server IP”的内容;
然后,注意,点击“设置 IPSec 预共享密钥”,填入账户信息中的 “L2TP key (shared secret)”。下面的“启用L2TP密钥”一定不要选中。
配置好后,点击菜单按钮,然后选择“保存”。配置就结束了。
然后是连接,点击新建的VPN后,会询问你用户名、密码,这个填入账户信息中的”Login”和”Password”就没问题了。我一般选择记住用户名。其实要是密码也能记住,我还希望记住密码,毕竟手机打密码比较困难。可以没有。我是把密码保存到即时贴里,然后需要输入的时候,复制粘贴就行了。
验证
连接成功后,访问一下http://www.ip.cn,或者http://whatismyipaddress.com来确认你自己的 IP 地址是否已经变到了VPN服务器所在的地址。如果还是原始的地址,那说明 VPN 没有链接成功。
http://www.geektu.com/?p=548
PPTP VPN 使用国内路由表 + 自动触发 VPN 连接
因为一些原因,一直用的 SSH 不太够用,于是买了一个 PPTP VPN。PPTP VPN 的好处是在绝大多数平台上都无需任何客户端,适合各平台使用,同时价钱一般也不贵 XD。
不过,相比起 OpenVPN 来,PPTP 不用客户端也有一个坏处:不能够配置连接脚本,这样就不好使用国内路由表。(因为 VPN 默认发送全局流量,因此连接 VPN 后访问国内网站速度会慢很多。)
但是解决办法还是有的。
一、国内路由表
Google Project “chnroutes”提供了国内路由表。对 Windows 用户来说,可以下载“pre_created_for_win.zip”压缩包(Downloads 标签页中下载即可),解压后将得到四个文件:vpnup.bat, vpnup.vbs, vpndown.bat, vpndown.vbs。
两个 vbs 文件下载好后删掉就行(没什么用,部分杀软还会对 vbs 文件报毒)。
根据 chnroutes 的说明,使用 PPTP VPN 的 Windows 用户可以这样操作:
由于 Windows 上的 PPTP 不支持拨号脚本,所以也只能在进行拨号之前手动执行 vpnup.bat 文件以设置路由表。而在断开 VPN 之后,如果你觉得有必要,可以运行 vpndown.bat 把这些路由信息给清理掉。
这样毕竟还是不方便(要先双击这个 vpnup.bat,然后再双击 VPN 连接,麻烦!)。
同时,如果你有多网卡,还可能造成添加的路由信息不正确(因为该 bat 采用
for /F "tokens=3" %%* in (‘route print ^| findstr "\<0.0.0.0\>"’) do set "gw=%%*"
方式来获得以太网连接的网关地址,当你有多网卡时,有可能获取不到正确的出口网关)。
所以,我把这个 bat 稍稍修改了一下。修改了两个地方:
- 手动指定网关(如果你的网络环境相对稳定,并且觉得有必要的话);
- 路由信息添加完毕后,自动触发 rasdial.exe 进行 VPN 的拨号连接。
二、修改方法
0、提示
修改 vpnup.bat 时,请使用 EditPlus / Notepad++ 等编辑器,尽量不要使用 Windows 自带的记事本 / 写字板程序。
1、手动指定网关
vpnup.bat 文件中用 gw 变量代表以太网出口网关。所以,只要在该 bat 的 route add 语句前,用语句
set gw=”你的网关地址”
即可:
当然,前提是你的网关相对固定。
2、自动进行 VPN 拨号
只要在 vpnup.bat 文件的末尾添加语句
rasdial "你的 PPTP VPN 连接名称" "用户名" "密码"
即可:
经过这样两步修改后的 vpnup.bat 脚本就更好用了。这样,你可以把这个 bat 创建一个快捷方式放在桌面上 / 开始菜单里,以后每次开机后只要点击这个 bat 文件就可完成国内路由表的设置 + VPN 连接的触发: