最近换了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 和 pptp 都是vpn协议,都使用ppp协议传输数据。具体区别可以自行google。
l2tp 的配置唯一区别于 pptp 的地方在于:它默认需要一个认证码。具体的设定,只有详见公司文档了。
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