我正在尝试检查并显示 OpenVPN 连接的状态(已连接/未连接)以及服务器的主机名/cn应该每次启动时连接。
现在我发现在/var/log/syslog
连接中已记录,我可以使用它来确定是否Initialization Sequence Completed
已记录并获取主机名/cn,上面有 19 行[brimstone] Peer Connection Initiated with [AF_INET]1.2.3.4:1234
。
通过这个日志,我可能会检查Initialization Sequence Completed
,这意味着我已连接,以及主机名,我只是想要一个不同的脚本。
现在我的问题是,我目前不知道连接是否仍然有效和/或我是否连接到另一台服务器。我可以定期检查日志中的更改,但对于一个相当基本的任务来说,这似乎有点极端。
我如何检查我的 OpenVPN 的连接状态以及如果连接如何获取服务器主机名/cn?
答案1
你不需要这样做,但你仍然可以通过检查你的明显外部 IP 地址来做到这一点:以下命令
wget 216.146.38.70:80
查询 checkip.dyndns.org 以获取您的外部 IP。这样您应该能够识别连接的当前状态。
或者,您可以检查您的路由表:
$ ip route show
0.0.0.0/1 via 10.8.0.17 dev tun0
default via 192.168.73.1 dev eth0 proto static
10.8.0.0/24 via 10.8.0.17 dev tun0
10.8.0.17 dev tun0 proto kernel scope link src 10.8.0.18
128.0.0.0/1 via 10.8.0.17 dev tun0
192.168.73.0/24 dev eth0 proto kernel scope link src 192.168.73.74 metric 1
IP.Address.Of.Your.OpenVPN.server via 192.168.73.1 dev eth0
(这是针对路由的 OpenVPN 的,但这并不重要)。重要的是最后一行:如果您有类似的东西,您的数据包将通过 OpenVPN 进行路由。
mtr
您还可以使用类似的仪器pings
同时traceroutes
(并连续!!)获取给定的 IP 地址,例如:
mtr www.debian.org
如果 OpenVPN 已启动,您将看到数据包通过隧道(tun0
或tap0
)路由,而不是通过常规网关路由。
不过,正如我在开头所说的,您不需要这样做:OpenVPN 为您提供了一种机制来持续检查连接的状态,并在必要时重新启动它:
--keepalive 纳米
辅助指令旨在简化服务器模式配置中 --ping 和 --ping-restart 的表达。例如,--keepalive 10 60 扩展如下:
if mode server:
ping 10
ping-restart 120
push "ping 10"
push "ping-restart 60"
else
ping 10
ping-restart 60
您可以使用、 、或keepalive
任意合适的组合来自动控制连接的状态。ping
ping-restart
ping-exit
答案2
您或许可以使用 openvpn 的组合:
up、down、uprestart 和 ping-restart
配置文件(或它们相应的命令行)指令?
答案3
正如另一位用户指出的那样,ip route show 连接的 vpn 的示例输出: 0.0.0.0/1 via 192.121.241.129 dev tun0 default via 192.168.0.1 dev eth0 128.0.0.0/1 via 192.121.245.129 dev tun0 192.121.241.5 via 192.168.0.1 dev eth0
它读取传入隧道 NAT(网络地址转换)到本地子网,即 192.168 通过相同 NAT 的传出隧道 只要 192.121.241 无法追溯到您的 ISP,这就可以很好地表明 VPN 的存在。我的 VPN 位于同一个城市,但当我查找时,它说它是另一个 ISP;即我的 VPN 背后的 ISP,用于该 VPN 服务器。
另一种方法是,只需查找您的 IP 地址,然后查看它与哪个 ISP 关联。如果是您的,则您的 VPN 未连接。如果是其他情况,则可能是您的 VPN 已连接。