如何检查我的 Debian OpenVPN 客户端是否已连接?我必须运行特定命令吗?或者我可以从日志文件中读取它吗?
谢谢。
编辑:以下答案在调试中提供了很大的价值。我在两个不同的系统上使用相同的开放 VPN 凭据,导致出现问题。
答案1
我不清楚您是从客户端还是服务器的角度提问。无论如何,您应该重点考虑的一件事是启用管理界面在您的 OpenVPN 守护进程上使用此配置选项。
management 127.0.0.1 6001
启用管理接口后,您可以使用 netcat/telnet 连接到为此目的设置的任何端口。然后,您可以发出命令status
或许多其他命令,以从守护进程的角度准确确定正在发生的事情。
答案2
有几种方法,具体取决于您要实现的目标。如果您想检查客户端是否正在运行并且您正在使用 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
答案3
虽然我认为@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
可用于脚本“隧道准备就绪”事件。
对于台式机来说,另一种方法可能是使用类似吞吞管理 OpenVPN 隧道。
答案4
ping -c 1 whoami.ultradns.net
编辑:
curl https://ipapi.co/json
返回您的 IP 地址(您的客户端)。这样可以很容易地查看您的 VPN 是否已连接/您通过哪个 VPN 服务器(例如外国)进行连接。
无需配置。