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
---------

用chnroutes替vpn流量分流

 VPN 是好用,挂上之后国外的网站是能访问了,但原来国内正常访问嘻唰唰的网站立刻变得慢吞吞了,怎么破?这是个问题。如果连了 VPN 没做任何设置的话,会导致所有网络都是通过 VPN 访问,缺点有二:
1、VPN 的流量问题,严重的话还可能导致被 VPN 提供商封杀(比如没事就去下载动作片)。
2、嘻唰唰变慢吞吞的问题。
我当时的回复是设置一下路由表即可。估计很多朋友没明白是肿么回事,这事就过去了。
今天小道君在朋友圈碎碎念:「使用 VPN 翻越长城的问题在于,启用 VPN 的时候国内网站速度巨慢,而绝大多数人要同时访问国内和国外的服务,这个时候很纠结啊,就好比一个人一会儿脱裤衩,一会儿再穿上,这能舒服么?」
我看到之后,陷入了深深的思考,这个 VPN 已经上升到了裤衩的高度,问题似乎变得有些严重了,所以我决定今天写点什么……
下面就给大家介绍一下如何通过修改路由的方式,让用户在使用 VPN 作为默认网关时,不用 VPN 访问国内网站,减少 VPN 的网络流量消耗,增加国内网站的访问速度,促进人民群众的安定团结,推动社会的长治久安。
为了简单起见,我只讲步骤不讲原理,并只针对 Mac 用户(Windows 用户请找 WinTalk,谢谢)。
1、自行搭建 VPN 服务器或购买 VPN 提供商的服务。
2、打开系统偏好设置—>网络,增加 VPN 设置,VPN 类型选择PPTP,根据提示设置用户名密码等信息即可。
3、下载 chnroutes.py,相关网址:https://code.google.com/p/chnroutes/downloads/list
4、打开终端进入下载文件的目录,执行:python chnroutes.py -p mac,该目录下会生成两个文件「ip-up」和「ip-down」。
5、把这两个文件复制到 /etc/ppp 下,然后进入该目录执行:sudo chmod a+x ip-up ip-down
6、没有5了,已经全搞定了。
测试一下,在终端执行:netstat -nr,检查路由表的输出信息。连接 VPN,然后再次执行:netstat -nr,你会发现路由表已经发生了变化。这时再去访问国内的网站,你发现他们又变得嘻唰唰了,同时还能访问 Twitter 和 Facebook!