Linux (MacOS) 使用openconnect连接GlobalProtect SSL VPN网络
Posted 天地一沙鸥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 |
centos7需要先安装epel源,再安装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> #自行替换
|
3、连接
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网络的主要内容,如果未能解决你的问题,请参考以下文章
放弃使用 15 年的 macOS,我决定换成 Linux!
Linux (MacOS) 使用openconnect连接GlobalProtect SSL VPN网络
强制 docker 在 macOS 上默认使用 linux/amd64 平台
markdown 使用nvm为Linux和macOS安装Node.js.
使用 nix-shell 或 nix shell 在 Linux 64 上运行 MacOS sed
Linux和MacOS都能用的Unix命令,你了解吗?