如何 ping OpenVpn 服务器以查看它是否已启动?

Jod*_*ari 2 vpn openvpn ping

我只想检查我的远程 openVpn 服务器是否正在运行。那是。我怎样才能做到这一点?使用“top”或“ps aux”会更安全,但也许我可以用某种方式ping它,也就是说,不必先通过ssh连接/验证?

MLu*_*MLu 7

如果你想知道主机是否存活,你可以只知道ping它的 IP 或主机名。确保防火墙对来自您尝试 ping 的任何地方的传入ICMP 回显数据包打开。

但是,如果您想知道它openvpn正在运行,则必须连接到主机。默认情况下,OpenVPN 在端口 1194 上使用 UDP,因此您必须将 UDP 数据包发送到该端口。

如果openvpn 正在运行,它将接受该数据包并丢弃它(因为它不是有效的 OpenVPN 握手)。netcat例如,您可以测试它并检查返回代码($?- 0=success, 1=error):

~ $ echo "abcd" | netcat -u -v -w2 192.168.130.1 1194
Connection to 192.168.130.1 1194 port [udp/openvpn] succeeded!
~ $ echo $?
0
~ $
Run Code Online (Sandbox Code Playgroud)

另一方面,如果openvpn服务没有运行,主机应该发回一个ICMP udp 端口​​ 1194 不可达数据包,这将netcat立即退出:

~ $ echo "abcd" | netcat -u -v 192.168.130.54 1194
~ $ echo $?
1
~ $ 
Run Code Online (Sandbox Code Playgroud)

请注意,netcat即使主机关闭也会报告成功因为使用 UDP 无法区分主机关闭和 openvpn 接收和丢弃数据包。在这两种情况下,它都不会收到任何响应。仅当主机已启动且 openvpn 已关闭时,它才会收到 ICMP 端口无法访问响应并以 1 退出。这意味着您必须运行ping -n -c2 ...fist 以验证主机实际上已启动。

希望有帮助:)

  • 或者像`nc -vz <ip> <port>` 用于tcp 端口或`nc -vzu <ip> <port>` 用于udp。 (3认同)