如何断开与 OpenVPN 的连接?

Ada*_*dam 53 vpn openvpn

我正在使用 VPNBook 服务器进行连接,并且使用以下命令可以正常工作:

 sudo openvpn --config /etc/openvpn/vpnbook-udp-53.ovpn --auth-user-pass /etc/openvpn/password.txt
Run Code Online (Sandbox Code Playgroud)

但我似乎无法弄清楚如何在不重新启动的情况下停止它。

我试过service openvpn stopand /etc/init.d/vpnbook stop,但这似乎不会影响它。

All*_*mer 62

这个命令绝对适用于我,它也适用于你。

sudo killall openvpn
Run Code Online (Sandbox Code Playgroud)

  • @johannes_lalala,你可能已经明白了这一点,但这对我来说很有效:`openvpn3 session-manage --config "$CONFIGURATION_PROFILE_NAME" --disconnect` 希望这能帮助别人。顺便说一句,我从这个维基页面得到了命令:https://community.openvpn.net/openvpn/wiki/OpenVPN3Linux (4认同)

Nat*_*ova 15

在我的案例中,成功的步骤是:

# stop the service    
$ sudo /etc/init.d/openvpn stop

# find the process if it is still running for some reason
$ lsof -i | grep openvpn

# kill the proccess(s) by its PID
$ kill -9 <PID>

# if necessary restart the service again
$ sudo /etc/init.d/openvpn start
Run Code Online (Sandbox Code Playgroud)
出于某种原因,`killall -SIGINT openvpn` 对我不起作用,但上面的步骤确实有效。


小智 12

我偶然发现有 2 个具有相同配置路径的打开会话。所以我无法使用

openvpn3 session-manage --disconect --config <config_path>

会话管理:** 错误 ** 找到多个具有给定配置文件名称的会话。

所以我制作了一个脚本来循环会话(会话 ID 并不总是与配置路径相同)

ACTIVE_SESSIONS=$(openvpn3 sessions-list | grep -i 'path' | awk '{p=index($0, ":");print $2}')
echo $ACTIVE_SESSIONS
for instance in $ACTIVE_SESSIONS; do
    openvpn3 session-manage --disconnect --session-path ${instance}
done 
Run Code Online (Sandbox Code Playgroud)


小智 10

如果sudo killall openvpn没有完成工作(我经历过几次),那么一个尖锐而致命的解决方案将是:

pgrep openvpn | xargs sudo kill -9
Run Code Online (Sandbox Code Playgroud)

  • `sudo pkill openvpn` 也可以完成这项工作。 (3认同)

小智 9

我在与 openvpn3 断开连接时遇到了同样的问题

我最终创建了这个小仓库https://github.com/shmalex/openvpn3_manager来帮助管理 openvpn3 会话

要断开会话,您必须知道会话的路径

openvpn3 session-manage --session-path $OPENVPN3_SESSION_PATH --disconnect
Run Code Online (Sandbox Code Playgroud)

会话路径可以通过

openvpn3 sessions-list

> -----------------------------------------------------------------------------
>         Path: /net/openvpn/v3/sessions/7a42f37asc8d9s424c8b534sd331d6dd56e8
>      Created: Tue Dec  8 10:44:57 2020                  PID: 9495
>        Owner: shmalex                                Device: tun0
>  Config name: client.ovpn  (Config not available)
> Session name: ***.***.***.***
>       Status: Connection, Client connected
> -----------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
OPENVPN3_SESSION_PATH=/net/openvpn/v3/sessions/7a42f37asc8d9s424c8b534sd331d6dd56e8
openvpn3 session-manage --session-path $OPENVPN3_SESSION_PATH --disconnect
Run Code Online (Sandbox Code Playgroud)

您可以使用我的 repo 在 bash 文件的帮助下执行相同的操作。

  • 这是正确的答案,也应该被接受。然而,我明白为什么杀死命令的答案如此受欢迎,我不会责怪他们或选民,我希望断开连接命令实际上是“a”命令。 (8认同)
  • 这确实是正确的答案,感谢您编写这些 bash 文件 - 让生活变得更轻松! (2认同)

小智 6

sudo openvpn3 session-manage --disconnect --config $'client'.ovpn

将 client 替换为相应的名称。
这将关闭会话。


小智 5

尝试这个

killall -SIGINT openvpn

您可以获得有关可以在此处发送的不同信号的更多信息:http : //openvpn.net/index.php/open-source/documentation/howto.html#control


小智 5

只需在您刚刚启动 OpenVPN 的终端中点击CTRL+ C

  • 如果它是使用 -daemon(后台)标志启动的怎么办?在这种情况下是不可能的。 (2认同)

小智 5

运行后sudo killall openvpn,或者service openvpn stop虚拟接口“tun0”将保持打开状态并在路由表中引用,因此由于 openvpn 服务被终止,实际相关连接将丢失。

解决方案是在终止 openvpn 服务后删除此虚拟连接,因为每次 openvpn 服务连接时都会创建它。

所以你需要运行以下命令来断开 openvpn 的连接:

$ sudo killall openvpn
$ sudo ip link delete tun0
Run Code Online (Sandbox Code Playgroud)