如何停止 vpnc IPSec VPN 并关闭隧道接口

问题:

vpnc_start.sh
$ sudo vpnc my-vpn.conf
VPNC started in background (pid: 21763)...

但你找不到关于如何停止 vpnc 即终止 VPN 连接的任何信息。

解决方案

首选方法:使用 vpnc-disconnect

Run

vpnc_disconnect.sh
sudo vpnc-disconnect

例如,这将打印

vpnc_terminating.txt
Terminating vpnc daemon (pid: 21763)

vpnc-disconnect 是停止 vpnc 的官方方法,将终止其 PID 写入 /var/run/vpnc.pidvpnc 实例。换句话说,如果你同时运行多个 vpnc 实例,或者如果你为 vpnc 指定了备用 PID 文件(例如使用 vpnc --pid-file /var/run/my-vpnc.pid my-vpn.conf),它将无法正常工作。

替代方法 1:停止当前机器上的所有 vpnc 实例

你可以使用以下命令 kill 当前机器上的所有 vpnc 实例

vpnc_killall.sh
sudo killall vpnc

vpnc 在启动时告诉你其进程 ID。在我们上面的示例中:

vpnc_start_example.txt
VPNC started in background (pid: 21763)...

PID 为 21763,因此我们可以使用以下命令终止进程

vpnc_kill_specific.sh
sudo kill 21763

这将干净地停止 vpnc 并移除隧道接口。

替代方法 3:终止特定 vpnc(如果你不知道其 PID)

使用以下命令显示所有正在运行的 vpnc 实例

pgrep_vpnc.sh
pgrep -a vpnc

例如,这将向你显示

pgrep_vpnc_example.txt
21763 vpnc my-vpn.conf
30792 vpnc other-vpn.conf

在该列表中,找到你要终止的 vpnc 实例所在行(你可以通过配置文件名识别它,例如 my-vpn.conf - 在此示例中,它将是第一行)。

行开头的数字是该 vpnc 进程的 PID。复制它并运行

pgrep_vpnc_example.txt
21763 vpnc my-vpn.conf
30792 vpnc other-vpn.conf

e.g.

vpnc_kill_example.sh
sudo kill 21763

就像替代方法 2中一样。这只会停止该特定 vpnc 实例并保留所有其他实例运行。


Check out similar posts by category: Networking