春衣少年当酒歌,起舞四顾以笑和。这篇文章主要讲述Linux (MacOS) 使用openconnect连接GlobalProtect SSL VPN网络相关的知识,希望能为你提供帮助。
GlobalProtect提供的客户端有windows版本和macOS版本,但没有linux版本。本文以debian 10为例通过安装openconnect实现命令行连接(debian 10对应 ubuntu 18.04)。
1、安装openconnect
(8.0+的版本才支持gp协议)
??
? ???sudo apt install openconnect? ? |
macos需要先安装Homebrew,然后通过brew安装openconnect
2、创建配置文件
cat /etc/openconnect/gp.conf
??cat /etc/openconnect/gp.conf? ?? ?background? ?? ?os=linux-? ???64? ?? ?protocol=gp? ?? ?useragent=? ???OpenConnect VPN Agent for Debian Linux-64? ?? ?script=/usr/share/vpnc-scripts/vpnc-script? ?? ?passwd-on-stdin? ?? ?pid-file=/? ???var? ???/run/gp.pid? ?? ?syslog? ?? ?verbose? ?? ?user=$<
VPN_USER>
#自行替换? ? |
??sudo openconnect --config=/etc/openconnect/gp.conf
vpn.domain.io
#自行替换接入域名,输入PASSWORD后即可连接。? ? |
4、完善
由于公司VPN连接成功后会更改默认路由,所有流量都会经过VPN,出口IP会变成办公网络的出口IP。如果linux机器是公有云服务器,比如阿里云ECS,由于默认路由的变更,会导致无法通过ssh连接。
针对默认路由的变更做如下操作:再连接前记录默认路由网关和网卡设备,连接后再改回来。连接脚本及相关配置如下:
连接脚本
??cat vpn-gp.sh? ?? ?#!/bin/bash? ?? ?export GET_STAT_NET_GW=$(ip route list|grep
? ???default? ???|head -n
? ???1? ???|awk
? ???print $3? ???)? ?? ?export GET_STAT_NET_DEV=$(ip route list|grep
? ???default? ???|head -n
? ???1? ???|awk
? ???print $NF? ???)? ?? ?USERNAME=$<
vpn_user_name>
#自行替换? ?? ?PASSWORD=$<
vpn_user_password>
#自行替换? ?? ?CFGPATH=/etc/openconnect? ?? ?sudo openconnect \\? ?? ?--config=$CFGPATH/gp.conf \\? ?? ?--user=$USERNAME \\? ?? ?--passwd-on-stdin <
<
<
? ???"$PASSWORD"? ??
??\\? ?? ?vpn.domain.io
#自行替换VPN接入域名? ?
? ?sudo bash $CGPATH/change_route.sh
#如果不需要更改默认路由,可将此行注释? ? |
配置文件
??cat /etc/openconnect/gp.conf? ?? ?background? ?? ?os=linux-? ???64? ?? ?protocol=gp? ?? ?useragent=? ???OpenConnect VPN Agent for Debian Linux-64? ?? ?script=/usr/share/vpnc-scripts/vpnc-script? ?? ?pid-file=/? ???var? ???/run/gp.pid? ?? ?syslog? ?? ?verbose? ? |
? ?cat /etc/openconnect/change_route.sh? ?? ?#!/bin/bash? ?? ?for? ??
??C in ? ???1? ???..? ???60? ???? ?? ?do? ?? ?
if? ??
??[ -z
? ???"$(ip route list|grep 100.100.|awk print $1)"? ??
??] ;
then
#根据VPN实际IP替换100.100.? ?? ?
sleep
? ???1? ?? ?
continue? ?? ?
else? ?? ?
break? ?? ?
fi? ?? ?done? ?? ?sleep
? ???1? ?? ?TUNDEV=$(ip route list|grep
? ???100.100? ???|head -n
? ???1? ???|awk
? ???print $3? ???)? ?? ?route del
? ???default? ??
??dev $TUNDEV? ?? ?sudo ip route add
? ???default? ??
??gw $GET_STAT_NET_GW dev $GET_STAT_NET_DEV? ?? ?#改完默认路由后,需要手动添加办公网络可访问的内部服务和办公网络路由:? ?? ?route add -host
? ???10.20.30.40? ??
??dev $TUNDEV? ?? ?route add -host
? ???10.20.40.0/24? ??
??dev $TUNDEV? ? |
以下连接脚本和配置适用于MacOS(已在macOS Big Sur 11.6.2验证):
连接脚本:
??cat ~/bin/vpn-gp.sh? ?? ?#!/bin/bash? ?? ?export GET_STAT_NET_GW=$(ip route list|grep
? ???default? ???|head -n
? ???1? ???|awk
? ???print $3? ???)? ?? ?export GET_STAT_NET_DEV=$(ip route list|grep
? ???default? ???|head -n
? ???1? ???|awk
? ???print $NF? ???)? ?? ?USERNAME=$<
vpn_user_name>
#自行替换? ?? ?PASSWORD=$<
vpn_user_password>
#自行替换? ?? ?CFGPATH=/usr/local/etc/openconnect? ?? ?sudo openconnect \\? ?? ?--config=$CFGPATH/gp.conf \\? ?? ?--printcookie \\? ?? ?-vvvv \\ ? ?? ?--user=$USERNAME? ?? ?--passwd-on-stdin <
<
<
? ???"$PASSWORD"? ?? ?vpn.domain.io
#自行替换vpn接入域名? ?? ?sleep
? ???1? ?? ?sudo bash /usr/local/etc/openconnect/change_route.sh
? ? |
openconnect for mac 配置文件
??cat
/usr/local/etc/openconnect/gp.conf? ?? ?background? ?? ?os=mac-intel? ?? ?protocol=gp? ?? ?useragent=? ???OpenConnect VPN Agent for MacOS? ?
? ?script=/usr/local/etc/vpnc-script? ?? ?#passwd-on-stdin? ?? ?pid-file=/usr/local/? ???var? ???/run/gp.pid
? ?? ?syslog? ?? ?verbose? ? |
路由更新脚本
??cat
/usr/local/etc/openconnect/change_route.sh
? ?? ?#!/bin/bash? ?? ?for? ??
??C in ? ???1? ???..? ???60? ???? ?? ?do
? ?? ?
if? ??
??[ -z
? ???"$(ip route list|grep 100.100.|awk print $1)"? ??
??] ;
then
#根据VPN实际IP网段替换100.100.
? ?? ?
sleep
? ???1? ?? ?
continue? ?? ?
else? ?
? ?
break? ?? ?
fi? ?? ?done? ?? ?sleep
? ???1? ?? ?TUNDEV=$(ip route list|grep
? ???100.100? ???|grep -v
? ???default? ???|head -n
? ???1? ???|awk
? ???print $3? ???)? ?? ?sudo ip route del
? ???0.0.0.0? ???/? ???0? ??
??dev $TUNDEV? ?? ?sudo ip route add
? ???default? ??
??gw $GET_STAT_NET_GW? ?? ?#添加办公网络可访问的服务路由? ?? ?sudo ip route add
? ???10.20.30.40? ??
??dev $TUNDEV? ?? ?sudo ip route add
? ???10.20.40.0/24? ??
??dev $TUNDEV? ? |
【Linux (MacOS) 使用openconnect连接GlobalProtect SSL VPN网络】
推荐阅读
- kms激活测试环境搭建
- tcp连接是如何建立的
- 安装MySQL&mariadb
- 简述OSI七层模型和TCP/IP五层模型
- XP系统无法打开word提示此文件是由较高版本的microsoft word创建的处理办法
- 如何查看tbi文件?Xp系统打开tbi文件的办法!
- 如何用xp截图快捷键?winxp截图工具在啥地方
- xp英文版开机提示windows producl activation 该怎样办?
- xp电脑插入耳机没声音该怎样办?