Pages

Thursday, 25 February 2016

Mac下的VPN连接的创建



不得不说Mac下VPN连接的创建和管理非常方便、简单。记得之前在Fedora下为了配置一个能够使用PPTP的VPN连接,费了九牛二虎之力,Mac下,很轻松的就搞定了。言归正传,首先进入Mac的“网络配置” Network Preferences。可以通过状态栏的网络图表进入,也可以从系统配置中选择网络 Network进入。

进入网络后,看到列表下方有个加减号,用来添加和删除网络连接。

点击加号后可以创建一个新的连接,选择VPN,VPN下有三种类型,分别是:PPTP、Cisco IPSec、L2TP Over IPSec。可以根据自己的情况选择适用的类型,并且可以为每一个连接起一个名字,方便记忆。


使用Cisco IPSec方式

适用Cisco IPSec的方式创建过程和PPTP大同小异,也是在网络配置面板中点击加号进行创建。在配置的时候与PPTP有些不同:
在服务器地址 Server Address中填写公司VPN的地址;
在用户名 Account Name 中填写用户名;
在密码 Password 这一栏中留空,因为每次需要输入SecurID的动态密码;
然后点击授权设置 Authentication Settings 
在 共享密钥 Shared Secret 中填入从公司网管那里得到的共享密钥();
在 组名 Group Name 中填写 自己VPN所属的组名;

关于共享密钥,有些公司会以明文的形式告知,有的会用PGP的方式发送一个加密的密码,需要使用自己的私钥解密后使用。这个过程大多数都会有文档说明,这里就不过多阐述了。流程也可以参考之前的一篇文章:

SecurID卡小贴士:SecurID卡坚固小巧,用起来也很方便,只是千万要小心别丢失了,因为可以是要花大洋的。
----------
Mac下配置基于SecurID的Cisco IPSec VPN全攻略
Mac里面,可以设置VPN, 方法是在网络偏好配置中,点+号,添加一个VPN。 由于Xilinx公司用的是CISCO的IPSec,因此选这一项。有图有真相:
账户名填你的用户名。 密码不需要填, 因为要在连接试时候根据SecureID上的数字实时填写。
然后,填写组帐户名。 点击鉴定设置,会让你填写群组名称和共享密钥。

这两个信息,一般在IT给你提供的一个pcf文件里,打开这个文件,里面有服务器ip地址,以及群组名和密码,在关键字GroupName=, GroupPwd=.后面,  运气好的话,群组名称和密码都在那里。 运气不好,密码是用加密方式存的,一长串加过密的数字。
长得象这个样子:
enc_GroupPwd=54594DA6120312D2606E5734A17F0061100F77D19C6AB5685582B668A2
本文最具技术含量的部分来了,我们需要破解这个加密的数字,才能找到密钥,然后填到Mac的共享密钥里面。当然,也可以直接问IT。 我问过,他也不知道,因为在Windows底下不需要知道,只需要导入pcf文件就可以了。  当然上面我列的我们公司的数字是假的,大家就不要试了。
在这个网站,可以提供破译, 只需要等号后面把这一串数拷贝进去,点Decode就可以了,
https://coreygilmore.com/projects/decrypt-cisco-vpn-password/
在Plaintext password后面,就是破译了的密码。
设置好以后会在Mac系统最上面的状态条中,出现一个小小的图标,象搓衣板。点击连接,就有提示输入密码,输入你的密码+SecurID上动态改变的数字,就可以了。

这件事情,我去年刚买Mac air的时候,就搞定了,但是没有记笔记。 上个月升级到OSX Lion版,VPN的设置丢掉了。结果,经过痛苦的回忆,耗费N个多小时,才重现搞定。
好记性不如烂笔头。。。。
from http://kerneltravel.eefocus.com/Kevin/blog/11-09/230878_53c71.html
------------
MacOS 使用vpnc连接Cisco VPN

大名鼎鼎的vpnc我就不用介绍了,虽然cisco有提供mac版本的客户端,但是在Linux下我就没装成功过。
现在分享一下我在Mac下使用vpnc连接CsicoVPN的心得,希望能对各个Mac用户的工作有所帮助。

操作系统的版本是:Mac OS X 10.6.2
需要安装的软件:
1.安装mac ports
2.使用mac ports安装vpnc,命令:port install vpnc
3.安装tuntaposx

现在你就可以使用vpnc连接VPN了,具体的vpnc配置参数可以参考这篇博文http://blog.chinaunix.net/u/14220/showart_340223.html

现在说说如何解决连接上了vpn之后会断网的问题。其实网络并没有真正断开,只是默认网关指向了tun0,也就是所有的网络全部指向了vpn所在的虚拟网卡上了,所以造成了我们无法一边登陆生产系统一边Google查资料解决问题。解决方法也很简单,只需重设这个路由:将默认网关还原为公网网关,再将生产网段的路由指定到vpnc得到网关,这样即可同时vpn和上公网了。下边贴下为Mac写的脚本,可以解决这个问题:
Ksh代码  收藏代码
  1. #!/bin/ksh  
  2.   
  3. #  
  4. # MacOS使用VPNC脚本同时连接生产和互联网  
  5. #  
  6. # 作者:vlinux  
  7. # 邮箱:oldmanpushcart@gmail.com  
  8. # 参数:  
  9. #   $1 : 配置文件  
  10. #  
  11. # 例子:  
  12. #   sh vpnmac.sh home.properties  
  13. #   sh vpnmac.sh office 10.0.0.0/24,10.0.1.0/24,10.0.2.0/24  
  14. #   sh vpnmac.sh  
  15.   
  16.   
  17.   
  18. #  
  19. # 打印错误信息函数  
  20. # 参数描述  
  21. #   $1 : msg错误信息  
  22. function errmsg  
  23. #  
  24. {  
  25.     local msg=$1  
  26.     echo "错误信息:$1"  
  27. }  
  28.   
  29. #  
  30. # 连接函数  
  31. function connect  
  32. # 参数描述  
  33. #   $1 : conf_file 配置文件  
  34. #   $2 : internet_gw 公网网关地址  
  35. #   $3 : vpn_ip VPN内部地址  
  36. {  
  37.     local conf_file=$1  
  38.     local internet_gw=$2  
  39.     local vpn_ip=$3  
  40.       
  41.     #这里检查参数是否齐全  
  42.     #检查是否装有vpnc  
  43.     if [ -x vpnc ]; then  
  44.         errmsg "尚未安装vpnc"  
  45.         exit -3  
  46.     fi  
  47.     #检查是否装有tuntaposx  
  48.     ls /dev/tun* > /dev/null 2>&1  
  49.     if [ ! $? -eq 0 ]; then  
  50.         errmsg "在/dev下找不到虚拟网卡tun    ,尚未安装tuntaposx"  
  51.         exit -3  
  52.     fi  
  53.       
  54.     #执行连接命令  
  55.     echo "正在进行VPN连接,请稍后..."  
  56.     local tmp_vpnmac="/tmp/vpnmac.$$"  
  57.     sudo vpnc $conf_file > $tmp_vpnmac  
  58.     if [ ! $? -eq 0 ]; then  
  59.         errmsg "执行vpnc命令失败"  
  60.         exit -3  
  61.     fi  
  62.   
  63.     #得到VPN连接后的网关地址  
  64.     local vpn_gw=`grep "add net default: gateway" $tmp_vpnmac | sed 's/.*gateway *//g'`  
  65.     rm $tmp_vpnmac  
  66.       
  67.     #连接完成  
  68.     echo "成功建立VPN连接,准备配置路由..."  
  69.     #删除默认路由  
  70.     sudo route delete default  
  71.     #添加公网路由  
  72.     sudo route add default $internet_gw  
  73.     #添加VPN路由  
  74.     for p in `echo $vpn_ip | sed 's/,/ /g'`  
  75.     do  
  76.         sudo route add $p $vpn_gw  
  77.     done  
  78.     echo "路由配置完毕"  
  79.       
  80. }  
  81.   
  82.   
  83. #  
  84. # 取得参数配置  
  85. global_getProRetVal=""  
  86. function getPro  
  87. # 参数描述  
  88. #   $1 : pro_file 参数配置文件  
  89. #   $2 : pro_name 参数名称  
  90. {  
  91.     local pro_file=$1  
  92.     local pro_name=$2  
  93.     if [ ! -e $pro_file ]; then  
  94.         errmsg "配置文件 $pro_file 无法找到!"  
  95.         exit -4  
  96.     fi  
  97.     #取得配置值  
  98.     local pro_val=`grep -E "^$pro_name=" $pro_file | awk -F '=' '{print $2}' | tail -1`  
  99.     #echo "\t$pro_name=$pro_val"  
  100.     global_getProRetVal=$pro_val  
  101. }  
  102.   
  103.   
  104.   
  105.   
  106.   
  107. #  
  108. # 主函数  
  109. function main  
  110. {  
  111.     if [ $# -eq 0 ]; then  
  112.         #关闭VPNC  
  113.         sudo vpnc-disconnect  
  114.     else  
  115.         #连接VPN  
  116.         #得到默认网关,默认网关地址将会被设置为VPN之后得公网出口地址  
  117.         echo "正在取得当前默认网关地址..."  
  118.         local internet_gw=`netstat -r | grep default | awk -F ' ' '{print $2}'`  
  119.         if [ -z $internet_gw ]; then  
  120.             errmsg "无法找到默认网关"  
  121.             exit -1  
  122.         fi  
  123.         echo "当前默认网关为:$internet_gw"  
  124.         if [ $# -eq 1 ]; then  
  125.             #打开VPNC 采用配置文件方式  
  126.             getPro $1 "vpnc_conf"  
  127.             local conf_file=$global_getProRetVal  
  128.             getPro $1 "vpn_ip"  
  129.             local vpn_ip=$global_getProRetVal  
  130.             connect $conf_file $internet_gw $vpn_ip  
  131.         else  
  132.             #打开VPNC 采用参数方式  
  133.             connect $1 $internet_gw $2  
  134.         fi    
  135.     fi  
  136. }  
  137.   
  138. main $@  


如果选用的是调用配置文件的方式,则你需要一个配置文件
Properties代码  收藏代码
  1. #vpnmac.sh配置文件模板  
  2. #vpnc_conf=vpnc配置文件名  
  3. #vpn_ip=需要路由的ip地址,你也可以在这里强行指定能访问的主机,例如:  
  4. #   为了避免误操作,我只允许自己拨上vpn之后只能访问172.16.0.5,6,7这三台主机,此时可以这样配置  
  5. #       vpn_ip=172.16.0.5/32,172.16.0.6/32,172.16.0.7/32  
  6. #   又比如拨号到vpn之后有多个网段:10.8.0.0/24172.16.0.0/24,也可以这样配置  
  7. #       vpn_ip=10.8.0.0/24,172.16.0.0/24  
  8. #   总之用逗号隔开就是了  
  9.   
  10. vpnc_conf=gxmcc  
  11. vpn_ip=172.16.0.0/24  

配置文件的说明:
vpnc_conf是vpnc的配置文件,default对应的是default.conf
vpn_ip则是需要指定路由的生产ip地址
配置文件保存为default.properties
脚本文件保存为vpnmac.sh

你也可以采用命令参数方式:
$1 vpnc的配置文件名称,说明同vpn_conf
$2 生产的ip地址,说明同vpn_ip

脚本命令说明
连接VPN(配置文件方式):sh vpnmac.sh default.properties
连接VPN(命令参数方式):sh vpnmac.sh default 10.0.0.0/24,10.0.1.0/24
断开VPN:sh vpnmac.sh

sh vpnmac

from http://www.iteye.com/topic/593613