Total Pageviews

Wednesday, 19 July 2017

Mac使用VPN的小技巧——国内外访问分流


自从Mac用上了VPN,科学的上网让我的小Mac充满了活力。巴特,也带来了一个大问题,开启VPN的时候访问国内网站有时候特别慢。难道要我每次访问国内都要断开,访问国外再连上,接受无能啊!!!实际上,大部分windows的VPN客户端软件,都集成国内外分流的功能,非常便捷,而Mac上目前还没有类似的软件有此功能,好吧,只能自己动手,丰衣足食了。

Mac下国内外访问分流有啥好处?

  1. 连上VPN以后,不会影响访问国内网站的速度
  2. 有些VPN提供的是流量套餐,如果不分流,一个月流量伤不起啊

如何实现Mac下VPN的国内外分流?

Mac下的分流方法来源于chnroute这个项目,对作者表示衷心的感谢
项目地址:https://github.com/jimmyxu/chnroutes
此项目不仅仅是针对Mac,而且同时支持windows/linux,以及基于linux的路由器。
下面就说下Mac下的使用步骤:
1. 首先,你要弄一个VPN并且设置好PPTP,免费VPN之前我介绍过一个合集,可以看这里;
2. 下载chnroutes.py这个文件,比如保存到下载里面,下载地址
3. 打开终端进入下载文件所在的目录,执行python chnroutes.py -p mac,在该目录下会生成2个文件,ip-up和ip-down;
macbookair:~ Peter$ cd Downloads
macbookair:Downloads Peter$ python chnroutes.py -p mac

Fetching data from apnic.net, it might take a few minutes, please wait...
For pptp on mac only, please copy ip-up and ip-down to the /etc/ppp folder,don't forget to make them executable with the chmod command.
4. 打开Finder进入下载,可以找到刚刚生成的2个文件,选中并复制这2个文件;按下快捷键command+shift+g,弹出的地方输入/etc/ppp,进入此目录,粘贴;
5. 回到终端,进入目录(/etc/ppp)执行:sudo chmod a+x ip-up ip-down
macbookair:Downloads Peter$ cd /etc/ppp
macbookair:ppp Peter$ sudo chmod a+x ip-up ip-down
(这一步可能会提示输入系统密码)
好了,Done!连上VPN测试一下吧。

如何测试是否成功?

比较简单的测试方法是打开2个ip地址查询网站。如果一切正常,连上vpn以后,打开ip138,会显示你本来的ip地址(你还在国内),打开这个网站,会显示vpn服务器的ip地址(你到国外了)。
高端一点的,可以在终端输入traceroute www.baidu.com以及traceroute www.youtube.com,看看访问国内网站和国外网站的路由情况。

如果我不想要分流了,怎么破?

直接把/etc/ppp下面那2个文件删了就行了。
-----------

chnroutes

Forked from https://chnroutes.googlecode.com/

利用来自APNIC的数据生成路由命令脚本,让VPN客户端在连接时自动执行。通过这些路由脚本,可以让用户在使用VPN作为默认网关时,不使用VPN访问中国国内IP,从而减轻VPN负担,并提高访问国内网站的速度。

基本约定

在使用这些脚本之前,请确保你在自己的电脑上已经成功配置好一个VPN(PPTP或OpenVPN),并且让之以默认网关的方式运行(通常是默认配置),即VPN连接之后所有网络流量都通过VPN。

注意事项

  • 因为这些IP数据不是固定不变的,建议每隔一个月更新一次;
  • 使用此法之后,可能导致Google Music等服务无法访问,因为连上VPN之后,使用的DNS也是国外的,因此google.cn解析出的是国外的IP。

OpenVPN

如安装有iproute2软件包,请尽量使用此方式。自带方式在路由表条目较多时执行极慢。

iproute2

  1. 执行python chnroutes.py,这将生成vpn-up.shvpn-down.sh两个文件;
  2. 将这两个文件移入/etc/openvpn/
  3. 在OpenVPN配置文件中加入:
    script-security 2
    up vpn-up.sh
    down vpn-down.sh
    
  4. 重新连接VPN,观察日志测试。

自带方式

  1. 执行python chnroutes.py -p old, 这将生成routes.txt文本文件;
  2. 将该文件内容加在OpenVPN配置文件的尾部;
  3. 重新连接VPN,观察日志测试。

PPTP

Mac OS X

  1. 在终端中执行python chnroutes.py -p mac,这将生成ip-upip-down两个文件;
  2. 将这两个文件移入/etc/ppp/
  3. 重新连接VPN,观察测试。

Linux

  1. 执行python chnroutes.py -p linux,这将生成ip-pre-upip-down两个文件;
  2. ip-pre-up移入/etc/ppp/ip-down移入/etc/ppp/ip-down.d/
  3. 重新连接VPN,观察测试。

Windows

  1. 在命令提示符中执行python chnroutes.py -p win,这将生成vpnup.batvpndown.bat两个文件;
  2. 在拨号前手动执行vpnup.bat文件设置路由表;在断开VPN后,可运行vpndown.bat清理路由表。

基于Linux的第三方系统的路由器

一些基于Linux系统的第三方路由器系统如OpenWRT、DD-WRT、Tomato都带有VPN(PPTP/OpenVPN)客户端的,也就是说,我们只需要在路由器进行VPN拨号,并利用本项目提供的路由表脚本就可以把VPN针对性翻墙扩展到整个局域网。当然,使用这个方式也是会带来副作用,即局域网的任何机器都不适合使用Emule或者BT等P2P下载软件。但对于那些不使用P2P,希望在路由器上设置针对性翻墙的用户,这方法十分有用,因为只需要一个VPN帐号,局域网内的所有机器,包括使用Wi-Fi的手机都能自动翻墙。详细配置方式请参考Autoddvpn项目。

信息反馈

本项目的脚本都是在使用路由器进行拨号的情况下测试通过的,如果在其它拨号方式下,脚本不能运作,请添加新的Issue。另外,在配合OpenVPN使用的时候,可能会出现因为网络质量不好,OpenVPN非主动断开,这时候vpn-down.sh脚本也会被自动调用,但重新连上之后,可能会找不到默认路由而添加失败,这时候你可以通过停止OpenVPN,并手动设置好原来的默认路由再重新进行OpenVPN拨号。

from  https://github.com/jimmyxu/chnroutes

 

No comments:

Post a Comment

Note: only a member of this blog may post a comment.