在mac下设置vpn以及连接外网(pptp & l2tp)

2015年01月18日

最近换了mac,今天在家里连公司vpn的时候,费了些功夫,这里作一些整理。

一、mac连接vpn

这个比较简单,网上一大把,简单流程就是

network => 添加一个vpn连接,我选择的是pptp协议,只需要输入公司vpn地址,用户名、密码就可以了。

note:在windows下,如果连接了vpn,自动会使用vpn的网关,但是mac下这是非默认的。所以在以上步骤完成之后,你看到vpn那个连接是通的,也设置好了dns地址,但是无法访问到公司的内网,这是因为没有使用vpn的dns来处理数据的关系。在windows下,这个选项叫做“在远程网络上使用默认网关”,是默认勾选的,在mac上对应的地方是:vpn连接 =》 advanced => options => send all traffic over vpn connection。勾选上,就可以访问到公司内网数据了。

二、连接到外网

总算连接到vpn了,这时候却发现本机连接外网不通了!工作的时候,很多资料需要在网上进行查询,不能连接外网比较头痛。在网上看了些文章,说明该问题的起因是路由表混乱。但是作者并没有找到比较好的解决方式。

我vpn到公司主要是ssh到自己的台机上处理东西,而台机是可以正常联网的。于是我想到只要在台机上装个代理服务就好了。

很容易就在网上搜到“ubuntu安装代理服务器”的结果。

sudo apt-get install squid   
# 给本地的机子打开访问权限
sudo vim /etc/squid3/squid.conf

放开 ‘http_access allow localnet’ 的权限 , 找到 ‘acl localnet src’ 里对应的网段,放开。

在本机上试一试

# squid 的默认端口是 3128,可以在conf里面自行修改
curl -x host:3128 www.baidu.com

如此,就可以使用该代理访问到外网了

三、修改路由表连接外网

今天大致了解了下路由表的作用。当我们使用到vpn,并勾选了“使用vpn处理所有traffic”的时候,系统会默认将vpn地址设置未default网关,这个可以用 “netstat -nr” 命令看到。

没有连接vpn的时候路由表是这样的

Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.0.0.1           UGSc           39       44     en0

使用了vpn之后,并勾选“使用vpn处理所有traffic”是这样的

Destination        Gateway            Flags        Refs      Use   Netif Expire
default            180.166.126.91     UGSc           66        0    ppp0
default            10.0.0.1           UGScI           5        0     en0

我们公司只需要访问192.0.0.0下的资源,所以可以不将vpn设置为defualt路由

# 指定网段配置到 ppp0
sudo route add 192.0.0.0 -interface ppp0
# 删除默认路由
sudo route delete default
# 添加默认路由
sudo route add default 10.0.0.1

这样子,就可以成功访问vpn和外网了。

ps:

如果觉得这样子比较麻烦,可以取消”send all traffic over vpn connection”勾选,新建文件

#!/bin/sh
/sbin/route add -net 192.0.0.0 -interface ppp0
放到 "/etc/ppp/ip-up",修改权限到755,每次连接vpn,都会自动设置了。

四、使用l2tp

l2tp 和 pptp 都是vpn协议,都使用ppp协议传输数据。具体区别可以自行google。

l2tp 的配置唯一区别于 pptp 的地方在于:它默认需要一个认证码。具体的设定,只有详见公司文档了。

reference:

http://www.h3c.com.cn/MiniSite/Technology_Circle/Technology_Column/ICG/ICG_Technology/201009/693510_97665_0.htm http://technet.microsoft.com/en-us/library/bb878117.aspx