Hendrik Asked: 2013-03-19 07:57:39 +0800 CST2013-03-19 07:57:39 +0800 CST 2013-03-19 07:57:39 +0800 CST 检查 openVPN 客户端连接的 Debian 772 如何检查我的 Debian OpenVPN 客户端是否已连接?是否有我必须运行的特定命令?或者我可以从日志文件中读取它吗? 谢谢。 编辑:下面的答案在调试中提供了很大的价值。我在两个不同的系统上使用了相同的开放式 vpn 凭据,导致出现问题。 debian 5 个回答 Voted Best Answer Zoredache 2013-03-19T10:57:37+08:002013-03-19T10:57:37+08:00 如果您是从客户端或服务器的角度询问,我不清楚。在任何情况下,您应该特别注意的一件事是使用此配置选项在您的 OpenVPN 守护程序上启用管理界面。 management 127.0.0.1 6001 启用管理界面后,您可以使用 netcat/telnet 连接到为此目的设置的任何端口。然后您可以发出该status命令或许多其他命令,以从守护进程的角度准确确定发生了什么。 mgorven 2013-03-19T09:10:43+08:002013-03-19T09:10:43+08:00 有几种方法,具体取决于您要实现的目标。如果你想检查客户端是否正在运行并且你正在使用 Debian 的 initscript,你可以使用service命令: % sudo service openvpn status mammon; echo $? * VPN 'mammon' is running 0 如果要检查客户端是否认为它已连接到服务器,可以检查 VPN 子网或本地接口是否存在的路由表: % ip route | grep -q 10.8.0.1; echo $? 0 % ip link show dev tun0 > /dev/null; echo $? 0 如果要检查客户端是否已连接并且服务器是否可联系,请 ping 服务器: % ping -c1 -w5 -q 10.8.0.1 > /dev/null; echo $? 0 kostix 2013-03-19T09:46:31+08:002013-03-19T09:46:31+08:00 虽然我认为@mgorven 得到了一个很好的答案,但我想提出另一个从不同角度看待问题的答案。 如果/etc/network/interfaces用于配置网络,则可以使用它来控制客户端 OpenVPN 隧道。它是这样的: 为 OpenVPN 的选项使用隧道设备的自定义dev名称,例如,有 dev mytun 在 OpenVPN 配置文件中。 假设配置文件是 /etc/openvpn/client.conf 在文件中为该设备设置一个条目/etc/network/interfaces,如下所示: iface mytun inet manual pre-up /etc/init.d/openvpn start client pre-down /etc/init.d/openvpn stop client 以这种方式设置后,您现在可以做 # /sbin/ifup mytun # /sbin/ifdown mytun 现在回到最初的问题——iface网络配置文件中的部分也支持post-up可用于编写“隧道已准备就绪”事件脚本的指令。 对于台式机,另一种方法可能是使用可视化工具(如TunTun)来管理 OpenVPN 隧道。 timurb 2013-12-06T08:44:41+08:002013-12-06T08:44:41+08:00 在 Ubuntu 中有一个文件保存当前的 OpenVPN 状态/var/run/openvpn.openvpn.status 它看起来与管理界面命令的输出相同,status但您不需要在 OpenVPN 中启用它。 您可以在脚本中对其进行一些处理,即检查计数器是否随时间增加。 social 2021-02-22T13:33:45+08:002021-02-22T13:33:45+08:00 ping -c 1 whoami.ultradns.net 编辑: curl https://ipapi.co/json 返回您的 IP 地址(您的客户端)。因此很容易查看您的 VPN 是否已连接/您通过外国等连接了哪个 VPN 服务器。 无需配置。
如果您是从客户端或服务器的角度询问,我不清楚。在任何情况下,您应该特别注意的一件事是使用此配置选项在您的 OpenVPN 守护程序上启用管理界面。
启用管理界面后,您可以使用 netcat/telnet 连接到为此目的设置的任何端口。然后您可以发出该
status
命令或许多其他命令,以从守护进程的角度准确确定发生了什么。有几种方法,具体取决于您要实现的目标。如果你想检查客户端是否正在运行并且你正在使用 Debian 的 initscript,你可以使用
service
命令:如果要检查客户端是否认为它已连接到服务器,可以检查 VPN 子网或本地接口是否存在的路由表:
如果要检查客户端是否已连接并且服务器是否可联系,请 ping 服务器:
虽然我认为@mgorven 得到了一个很好的答案,但我想提出另一个从不同角度看待问题的答案。
如果
/etc/network/interfaces
用于配置网络,则可以使用它来控制客户端 OpenVPN 隧道。它是这样的:为 OpenVPN 的选项使用隧道设备的自定义
dev
名称,例如,有在 OpenVPN 配置文件中。
假设配置文件是
在文件中为该设备设置一个条目
/etc/network/interfaces
,如下所示:以这种方式设置后,您现在可以做
现在回到最初的问题——
iface
网络配置文件中的部分也支持post-up
可用于编写“隧道已准备就绪”事件脚本的指令。对于台式机,另一种方法可能是使用可视化工具(如TunTun)来管理 OpenVPN 隧道。
在 Ubuntu 中有一个文件保存当前的 OpenVPN 状态
/var/run/openvpn.openvpn.status
它看起来与管理界面命令的输出相同,
status
但您不需要在 OpenVPN 中启用它。您可以在脚本中对其进行一些处理,即检查计数器是否随时间增加。
编辑:
curl https://ipapi.co/json
返回您的 IP 地址(您的客户端)。因此很容易查看您的 VPN 是否已连接/您通过外国等连接了哪个 VPN 服务器。
无需配置。