我正在使用 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
。