如何检查 openvpn 是否处于活动状态

如何检查 openvpn 是否处于活动状态

我正在运行多个 openvpn 实例,每个实例都连接到不同的服务器,我们假设有 3 个,我正在使用一个简单的 php 脚本和这个命令

system('openvpn config1');
system('openvpn config2');
system('openvpn config3');

配置文件包含守护进程和route-nopull,最后我将tun0 tun1 tun2启用,当我想使用tun0时我使用

curl_setopt($curlh, CURLOPT_INTERFACE, "tun0");

现在第一个问题是,如果界面有问题,curl 超时将不起作用!它会永远挂在那里,直到我手动中止它

第二个问题是,如果连接由于某种原因失败,即使 openvpn 也不会终止接口,我该如何检查连接是否一直处于活动状态(keepalive 10 60 没有起作用,我不知道为什么)

我不是 openvpn 专家,他们的手册中也没有很多信息,所以我如何才能始终确保特定接口上的连接正常工作,如果不是,我不想终止该 openvpn 实例,以及使用 CURLOPT_INTERFACE 时 curl 超时的解决方案是什么

答案1

我能想到的最简单的方法是检查链接状态。例如:

$ ip link show tun0
11: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 500
link/none

如果该接口处于活动状态,您将UP在这些 <> 中看到。您还可以检查是否有与该接口关联的活动路由。没有活动路由意味着该接口将处于未使用状态。

$ ip ro show dev tun0
default via x.x.x.x dev tun0  scope link  metric 1

最正确的方法是启用 openvpn 守护进程上的管理接口,并直接询问其链接状态并读取任何错误。管理界面的文档可以在 openvpn 网站上找到

至于 curl 超时,我不知道为什么会这样。如果最新版本可以重现此问题,您可能需要使用 PHP 为其打开一个缺陷。

答案2

ping -c  1 whoami.ultradns.net

返回您的 IP 地址(您的客户端)。这样可以非常轻松地查看您的 VPN 是否处于活动状态/您通过哪个 VPN 服务器进行连接(例如在国外)。

无需配置。

相关内容