如何在连接关闭时自动连接 OpenConnect VPN?

如何在连接关闭时自动连接 OpenConnect VPN?

我需要使用第三方 Web 服务,该服务只能通过 Cisco AnyConnect VPN 访问。我在 Ubuntu 上使用 OpenConnect 使用主机、用户名和密码连接到此 VPN。

但是,我们不必每次需要连接服务时都手动连接(因为该服务被每天运行的脚本使用),我只想设置一次,并在隧道断开时重新连接。

有没有办法让我们连接openconnect客户端(或任何其他类似的 Cisco AnyConnect 客户端),以便在连接中断时自动重新连接。

或者,有没有一种方法可以不使用用户名和密码登录并将该配置存储在某处,以便我们可以在进程停止时自动重新启动该进程。

请注意,这一切都在服务器上,因此没有 GUI。

答案1

查看其具有的选项。openconnect --help

-u,--user=NAME

Set login username to NAME

--passwd-on-stdin

Read password from standard input

--reconnect-timeout

Keep reconnect attempts until so many seconds have elapsed. 
The default timeout is 300 seconds, which means that openconnect 
can recover VPN connection after a temporary network 
downtime of 300 seconds.

它还支持

--config=CONFIGFILE

网上有几个脚本适应你的情况。

答案2

我创建了一个脚本来执行此操作,您必须将DEVICE_NAMESERVER_ADDRESS和更改USERNAMEPASSWORD_FILE_PATH包含密码的文件

您可以使用 找到您的 VPN 设备的名称/sbin/ifconfig

#!/bin/bash
if ! /sbin/ifconfig | grep -q 'DEVICE_NAME'; then
  sudo openconnect -b -q SERVER_ADDRESS -u 'USERNAME' --passwd-on-stdin < PASSWORD_FILE_PATH
fi

答案3

我使用服务文件

/etc/systemd/system/myVpn.service

[Unit]
Description=My Vpn Connection
After=network.target

[Service]
Type=simple
Environment=password=correcthorsebatterystaple
 ExecStart=/bin/sh -c 'echo YourPasswordHere | sudo openconnect --protocol=nc YourServerHere --user=YourUserHere --passwd-on-stdin'

Restart=always

然后我就用它运行

systemctl start myVpn

答案4

我的解决方案是:

  1. 进入 ~/.bashrc 文件并滚动到底部
  2. 创建一个别名,例如: vpn-up='openconnect --your options'
  3. 保存然后关闭终端并重新打开终端

不幸的是,它不会自行重新连接,但我使用--reconnect-timeout = 60,所以至少当与服务器的连接失败时,我根本不会失去连接,而且它比不断寻找整个命令更容易。

相关内容