`
vlinux
  • 浏览: 53284 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

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写的脚本,可以解决这个问题:

#!/bin/ksh

#
# MacOS使用VPNC脚本同时连接生产和互联网
#
# 作者:vlinux
# 邮箱:oldmanpushcart@gmail.com
# 参数:
# 	$1 : 配置文件
#
# 例子:
# 	sh vpnmac.sh home.properties
#	sh vpnmac.sh office 10.0.0.0/24,10.0.1.0/24,10.0.2.0/24
#	sh vpnmac.sh



#
# 打印错误信息函数
# 参数描述
#	$1 : msg错误信息
function errmsg
#
{
	local msg=$1
	echo "错误信息:$1"
}

#
# 连接函数
function connect
# 参数描述
#	$1 : conf_file 配置文件
#	$2 : internet_gw 公网网关地址
#	$3 : vpn_ip VPN内部地址
{
	local conf_file=$1
	local internet_gw=$2
	local vpn_ip=$3
	
	#这里检查参数是否齐全
	#检查是否装有vpnc
	if [ -x vpnc ]; then
		errmsg "尚未安装vpnc"
		exit -3
	fi
	#检查是否装有tuntaposx
	ls /dev/tun* > /dev/null 2>&1
	if [ ! $? -eq 0 ]; then
		errmsg "在/dev下找不到虚拟网卡tun	,尚未安装tuntaposx"
		exit -3
	fi
	
	#执行连接命令
	echo "正在进行VPN连接,请稍后..."
	local tmp_vpnmac="/tmp/vpnmac.$$"
	sudo vpnc $conf_file > $tmp_vpnmac
	if [ ! $? -eq 0 ]; then
		errmsg "执行vpnc命令失败"
		exit -3
	fi

	#得到VPN连接后的网关地址
	local vpn_gw=`grep "add net default: gateway" $tmp_vpnmac | sed 's/.*gateway *//g'`
	rm $tmp_vpnmac
	
	#连接完成
	echo "成功建立VPN连接,准备配置路由..."
	#删除默认路由
	sudo route delete default
	#添加公网路由
	sudo route add default $internet_gw
	#添加VPN路由
	for p in `echo $vpn_ip | sed 's/,/ /g'`
	do
		sudo route add $p $vpn_gw
	done
	echo "路由配置完毕"
	
}


#
# 取得参数配置
global_getProRetVal=""
function getPro
# 参数描述
#	$1 : pro_file 参数配置文件
#	$2 : pro_name 参数名称
{
	local pro_file=$1
	local pro_name=$2
	if [ ! -e $pro_file ]; then
		errmsg "配置文件 $pro_file 无法找到!"
		exit -4
	fi
	#取得配置值
	local pro_val=`grep -E "^$pro_name=" $pro_file | awk -F '=' '{print $2}' | tail -1`
	#echo "\t$pro_name=$pro_val"
	global_getProRetVal=$pro_val
}





#
# 主函数
function main
{
	if [ $# -eq 0 ]; then
		#关闭VPNC
		sudo vpnc-disconnect
	else
		#连接VPN
		#得到默认网关,默认网关地址将会被设置为VPN之后得公网出口地址
		echo "正在取得当前默认网关地址..."
		local internet_gw=`netstat -r | grep default | awk -F ' ' '{print $2}'`
		if [ -z $internet_gw ]; then
			errmsg "无法找到默认网关"
			exit -1
		fi
		echo "当前默认网关为:$internet_gw"
		if [ $# -eq 1 ]; then
			#打开VPNC 采用配置文件方式
			getPro $1 "vpnc_conf"
			local conf_file=$global_getProRetVal
			getPro $1 "vpn_ip"
			local vpn_ip=$global_getProRetVal
			connect $conf_file $internet_gw $vpn_ip
		else
			#打开VPNC 采用参数方式
			connect $1 $internet_gw $2
		fi	
	fi
}

main $@




如果选用的是调用配置文件的方式,则你需要一个配置文件

#vpnmac.sh配置文件模板
#vpnc_conf=vpnc配置文件名
#vpn_ip=需要路由的ip地址,你也可以在这里强行指定能访问的主机,例如:
#	为了避免误操作,我只允许自己拨上vpn之后只能访问172.16.0.5,6,7这三台主机,此时可以这样配置
#		vpn_ip=172.16.0.5/32,172.16.0.6/32,172.16.0.7/32
#	又比如拨号到vpn之后有多个网段:10.8.0.0/24和172.16.0.0/24,也可以这样配置
#		vpn_ip=10.8.0.0/24,172.16.0.0/24
#	总之用逗号隔开就是了

vpnc_conf=gxmcc
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

 

分享到:
评论

相关推荐

    Windows远程桌面连接工具 for MacOS

    标题中的“Windows远程桌面连接工具 for MacOS”是指的在苹果Mac操作系统上使用的应用程序,它允许用户从Mac设备上远程访问Windows计算机。这个工具是解决跨平台操作需求的一个关键方案,尤其是对于那些工作环境混用...

    MacOS使用的中文字体

    总的来说,MacOS为用户提供了丰富的中文字体资源和便捷的管理工具,无论是日常使用还是专业设计,都能找到合适的字体方案。通过对字体的深入理解和有效利用,我们可以提升工作和生活的视觉体验,让文字更好地服务于...

    cisco secure client 5.0.01242(macos)

    This maintenance release includes the following features and support updates and resolves the defects described in Cisco Secure Client 5.0.01242: Basic Posture CLI for ISE Posture (CSCwc98263)—For ...

    macos连接cx_oracle instantclient-basiclite-macos.x64-19.3.0.0.0dbru.zip

    本文将详细介绍如何在MacOS上使用Python的cx_Oracle库通过这个客户端连接到Oracle数据库。 首先,Oracle Instant Client是Oracle公司提供的一个小型客户端,它包含了与Oracle数据库通信所需的关键组件,如oci.dll、...

    cisco anyconnect macos 版本

    可以用来企业之间建立通讯

    华为 ssl 安全客户端 macos版本

    macos使用,seco client macosx-7.0.2.26

    macOS Catalina 以上版本使用不了 PPTP协议的(shimo 无法正常使用)

    macos 10.15+ 版本以后系统就删除了对PPTP的支持,10.14系统还是有PPTP的支持,只不过需要用借助shimo 来连接。 笔者在升级到10.15后,发现shimo也不能使用PPTP协议连接了,查看日志后,分析出系统彻底删除PPTP。...

    iNode智能客户端MacOS版 iNodeClient for MacOS 7.3(E0538)支持Portal认证方式,内附安装指导手册

    2019年7月最新iNode智能客户端MacOS版iNodeClient for MacOS_7.3(E0538)支持Portal认证方式,支持Mac OS 10.9至10.14。内附安装指导手册,iNodeClient_MacOS_7.3 (E0538)Portal.zip

    iNodeClient_MacOS_7.3 (E0548).pkg.zip

    iNodeClient是一款专为MacOS操作系统设计的应用程序,主要用于提供特定的服务或功能。在这个特定的版本"7.3 (E0548)"中,我们可以推测这可能是一个更新或者优化后的版本,旨在增强软件的性能、稳定性和安全性。通常...

    macOS.Catalina.Patcher1.4.7

    描述中提到的“如果你的电脑支持High Sierra,要先在线升级到10.13”,这表明在使用该补丁前,用户需要确保自己的Mac电脑当前运行的是macOS High Sierra 10.13系统。这是必要的前提条件,因为不是所有Mac设备都能...

    macOs10.11.cdr macOs10.12.cdr macOs10.13.cdr macOs10.14.cdr四个版本

    此资源包括macOs 10.11.cdr,macOs 10.12.cdr,macOs 10.13.cdr,macOs 10.14.cdr 懒人安装

    Cisco Packet Tracer 8.2.2 mac版

    MacOS 10.14以上版本支持。

    Python-tcpkiller用于在Linux或macOS上关闭一个TCP连接

    【Python-tcpkiller用于在Linux或macOS上关闭一个TCP连接】 Python-tcpkiller是一个实用的工具,专门设计用于在Linux或macOS操作系统上中断特定的TCP连接。它利用了低级别的socket接口和操作系统的网络控制功能,...

    MACOS苹果电脑系统新手入门指南教程1.pdf

    MACOS 苹果电脑系统新手入门指南教程 本教程旨在帮助新入门的 Mac 用户快速了解和掌握 MAC OS 苹果电脑系统的使用方法和技巧。通过本教程,您将了解 MAC OS 的基本操作、硬件配置、系统设置、软件安装等方面的知识...

    macOS Catalina Patcher 2022最新版

    macOS Catalina Patcher 是一个工具,可以帮助用户将其旧版 macOS 系统升级到 macOS Catalina 操作系统。...需要注意的是,使用这样的工具可能会涉及到一些风险,所以在使用前建议用户充分了解相关信息并谨慎操作。

    unlocker3.02 + MacOS10.14 + MacOS10.13

    描述中提到的“走了点弯路,终于成功”暗示了解锁工具在MacOS上的安装或使用可能并不直截了当,需要一些技巧或步骤。作者还提供了配套教程,旨在帮助用户避免遇到同样的困扰,加快理解和操作进程。教程链接指向了一...

    macos14镜像下载

    macos14镜像下载

    H3C iNode(SSL) for macOS

    H3C iNode(SSL) 实现了这一功能,使得苹果用户能够方便地在macOS系统上接入公司的SSL虚拟私有网络(SSL VPN)。 该安装包特别指出“非Windows”,这意味着它不是为微软的Windows操作系统设计的,而是专门为macOS...

    MacOS 安装连接MySQL的库mysqlclient出现的问题

    MacOS 安装连接MySQL的库mysqlclient出现的问题

Global site tag (gtag.js) - Google Analytics