有没有办法通过命令行检查我是否通过 VPN 连接?

有没有办法通过命令行检查我是否通过 VPN 连接?

我正在使用 OpenVPN,我之所以问这个问题,是因为每当我通过 VPN 连接时,我都会尝试做一个简单的操作:traceroute google.com它不会在 OpenVPN 服务器上反弹。它只是通过与没有 VPN 时相同的路线。

我尝试通过 VPN 路由 http 流量

push "redirect-gateway def1"

push "dhcp-option DNS 8.8.8.8"

并且成功了。我的问题是每次我为客户端创建新密钥以确保他通过 VPN 连接时,避免使用此方法。

我读到你可以做一个简单的ifconfig -a。如果你有某种tunnel接口,你就连接上了,但你如何确保你的流量通过VPN?

概括:

我是 OpenVPN 的客户端。有什么方法可以检查我是否通过命令行通过 VPN 连接?类似于traceroute

答案1

我已经在 Google 上搜索了太多关于这个问题的信息,但我不想承认。问题如下:

  • VPN 是通向您的 VPNServer 的直接“隧道”。如果您尝试使用跟踪路由,它将不会在服务器上反弹,因为它是隧道。它不必在“隧道末端”反弹。
  • traceroute是第 3 层实用程序,而 VPN 是第 2 层协议。据我所知,没有任何实用程序在第 2 层上运行。

查看您是否通过 VPN 连接的唯一方法是tcpdump在服务器上执行操作,查看是否有任何流量通过服务器或通常ifconfig -a检查是否有任何tun0接口。

答案2

您可以从命令行运行:

vpn status

这提供了大量的输出,但是,如果连接起来,你会看到几行包含字符串Connected(注意大写“C”)。如果没有连接,你会看到许多其他包含字符串Disconnected(注意大写“D”)。

因此,简单来说如下:

vpn status | grep Disconnected | wc -l

如果断开连接则返回一个字符串整数 > 0,如果连接则返回零。

或者如果你愿意:

vpn status | grep Connected | wc -l

如果已连接则返回一个字符串整数 > 0,否则返回零。

还有许多其他方法可以解析这一点,但关键是使用的输出vpn status

相关内容