如何获取路由流量的网络接口

如何获取路由流量的网络接口

我正在尝试找出我的流量通过哪个接口路由,并获取与该接口关联的本地 IP 地址。这将使我区分禁用 VPN 访问的情况(所有流量都通过 wlan0 -> 从该接口读取 IP)或激活 VPN 的情况(所有流量都通过 tun0,获取该接口的 IP)。

我知道路由命令,但我真的不知道如何解析它来提取我需要的信息。

这是我的无 VPN 的 IP 路由列表:

default via 192.168.26.1 dev wlp0s20f3 proto dhcp metric 600 
169.254.0.0/16 dev wlp0s20f3 scope link metric 1000 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.26.0/23 dev wlp0s20f3 proto kernel scope link src 192.168.26.254 metric 600 

连接到 VPN 后

default via 192.168.31.1 dev tun0 proto static metric 50 
default via 192.168.26.1 dev wlp0s20f3 proto dhcp metric 600 
10.0.0.0/8 via 192.168.31.1 dev tun0 proto static metric 50 
13.224.73.0/24 via 192.168.31.1 dev tun0 proto static metric 50 
18.135.151.3 via 192.168.31.1 dev tun0 proto static metric 50 
40.114.41.40 via 192.168.31.1 dev tun0 proto static metric 50 
52.95.0.0/16 via 192.168.31.1 dev tun0 proto static metric 50 
104.18.4.20 via 192.168.31.1 dev tun0 proto static metric 50 
104.18.5.20 via 192.168.31.1 dev tun0 proto static metric 50 
104.18.25.245 via 192.168.31.1 dev tun0 proto static metric 50 
104.27.148.109 via 192.168.31.1 dev tun0 proto static metric 50 
104.27.149.109 via 192.168.31.1 dev tun0 proto static metric 50 
143.204.190.0/24 via 192.168.31.1 dev tun0 proto static metric 50 
149.11.92.90 via 192.168.26.1 dev wlp0s20f3 proto static metric 600 
150.2.20.0/24 via 192.168.31.1 dev tun0 proto static metric 50 
150.2.22.0/24 via 192.168.31.1 dev tun0 proto static metric 50 
150.2.34.0/24 via 192.168.31.1 dev tun0 proto static metric 50 
169.254.0.0/16 dev wlp0s20f3 scope link metric 1000 
172.16.0.0/12 via 192.168.31.1 dev tun0 proto static metric 50 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.0.0/16 via 192.168.31.1 dev tun0 proto static metric 50 
192.168.26.0/23 dev wlp0s20f3 proto kernel scope link src 192.168.26.254 metric 600 
192.168.26.1 dev wlp0s20f3 proto static scope link metric 600 
192.168.31.0/24 dev tun0 proto kernel scope link src 192.168.31.56 metric 50 

是否可以安全地假设正在使用的是最上面的默认路线?

答案1

找出这些数据需要两个部分:首先,确定哪些子网直接通过特定接口出去;然后,确定你的流量到互联网的“默认路由”是什么。

(跳至“您的路线”部分以查看我对您的路线输出的分析)

在两种情况下我们都需要ip route list输出,但在我的情况下我们将查看我的笔记本电脑(目前没有使用 VPN,因为我在家庭网络上):

default via 172.18.0.1 dev wlp59s0 proto dhcp metric 600 
10.10.0.0/16 dev static-local proto kernel scope link src 10.10.0.1 
10.73.252.0/24 dev InternalDHCP proto kernel scope link src 10.73.252.1 
10.74.0.0/24 dev docker0 proto kernel scope link src 10.74.0.1 linkdown 
169.254.0.0/16 dev docker0 scope link metric 1000 linkdown 
172.18.0.0/16 dev wlp59s0 proto kernel scope link src 172.18.2.0 metric 600

如您所见,我的网络上有几个不同的东西。我有两个 docker 子网、两个其他网络(static-local用于InternalDHCP我的 LXD 容器)、我的无线接口wlp59s0和顶部的“默认路由”。

让我们将其分解成各个组成部分。首先查看非默认路由。其内容如下:

  • 所有到 10.10.0.0/16(10.10.0.0-10.10.255.255)的流量都直接通过static-local源 IP 为 10.10.0.1 的网络链路。
  • 所有到 10.73.252.0/24 (10.73.252.0-10.73.252.255) 的流量都直接通过InternalDHCP网络链路,源为 10.73.252.1
  • 所有发往 10.74.0.0/24 (10.74.0.0-10.74.0.255) 的流量都直接通过docker0源为 10.74.0.1 的网络链路。同一网络链路还接受 的流量169.254.0.0/16,但此链路处于离线状态且无法正常工作。
  • wlp59s0所有到 172.18.0.0/16(172.18.0.0-172.18.255.255)的流量都直接通过源 IP 为 172.18.2.0 的网络链路进行。

现在默认路线:

  • 所有与上述其他路由不匹配的其他流量都将通过设备wlp59s0(我的 wifi 卡)通过网关/路由器地址 172.18.0.1 进行路由。

这就是您分析ip route list上述输出的方式。ip route list如果您愿意,我们可以协助您分析输出,但您只能这样阅读输出。


您的路线

这是我对您的路由的剖析,包括您的 VPN 连接和未连接的情况。

首先,当您没有使用 VPN 时:

  • 到 192.168.26.0/23 (192.168.26.0-192.168.27.255) 的流量直接通过 wlp0s20f3 (wifi) 接口链路发出。这包括直接转到 192.168.26.1(默认路由)
  • 到 149.11.92.90 的流量通过 182.168.26.1 直接通过您的 wifi 接口链接出去。
  • 到 172.17.0.0/16(172.17.0.0-172.17.255.255)的流量直接通过 docker0 网络链路,源 IP 地址为 172.17.0.1。
  • 您的网络链接出现问题,因此 169.254.0.0/16 (169.254.0.0-169.254.255.255) 通过 wifi 设备链接出去。
  • 对于您未使用 VPN 时的任何其他子网指定,您的流量将通过网关 IP 192.168.26.1(您的路由器)通过您的 wifi 接口流出

现在,当您使用 VPN 时,它会向您的表添加大量毫无意义的路由,但我们可以将它们压缩为一种评估规则的简单方法。请注意,以前的非 VPN 连接规则仍然适用:

  • 连接到 VPN 时,所有未受先前链接规则(包括您未使用 VPN 时的规则)约束的流量都将通过隧道通过 192.168.31.1 路由到 tun0 设备和 VPN 链接。因此,所有到 Internet 的流量(除上述链接地址外)都将首先通过 VPN 隧道。如果 VPN 隧道链接发生故障,流量无法通过该隧道,它将恢复使用您的标准 wifi 连接(但是,这只会在 VPN 隧道发生故障且未重新连接时发生,因此接口tun0将消失)

  • 您的系统和 VPN 端点之间的流量通过默认的 wifi 链接到达远程 VPN 服务器。(这是“默认”行为,因为要连接到 VPN 服务器,它将使用您的默认 wifi 链接)。

相关内容