根据路由表准确追踪出站数据包

根据路由表准确追踪出站数据包

假设我有一个路由表

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.0.1      192.168.0.2     30
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
      192.168.0.0    255.255.255.0         On-link       192.168.0.2    286
      192.168.0.2  255.255.255.255         On-link       192.168.0.2    286
    192.168.0.255  255.255.255.255         On-link       192.168.0.2    286
===========================================================================

并且我想要发送 ping 请求到192.168.0.3

192.168.0.3网络上出现了一个新创建的数据包,其目标为(源为 127.0.0.1?)。它将命中192.168.0.0/24接口为 的规则192.168.0.2。数据包的源更改为192.168.0.2(基于这个答案)。它没有命中第一条规则,因此目前无法使用网关,但数据包却以某种方式离开了。

此案的下一步措施是什么以及为什么?

答案1

数据包不是以源 127.0.0.1 开头,而是可能以源 *(又名 0.0.0.0)或 192.168.0.2 开头,这应该是本地主机的 IP。

  1. 如果 IP 不是 192.168.0.0/24,它将前往默认路由(第一条规则),
  2. 为了到达默认路由目标,它将通过接口 192.168.0.2 使用路由 192.168.0.0/24(如果不是以这种方式启动,它将替换 * 作为源)。
  3. 这可以进一步路由,但不能路由到互联网,因为 192.168.0.0/16 是保留地址。据推测,192.168.0.1 是 NAT 路由器,它会将本地地址+端口转换为自己的 WAN IP 和不同的(连接唯一)源端口,并重新转换回复。

由于目标 192.168.0.3 与 192.168.0.0/24 匹配,因此它将通过上述相同的规则 2 直接进入该网络,并且路由将停止,以太网接管(大概)。以太网将发送针对 192.168.0.3 的 arp 请求(假设它尚未在 arp 缓存中),当它收到回复时,将数据包直接发送到具有 192.168.0.2+本地 mac --> 192.168.0.3+回复 mac 的目的地。

地址 127.0.0.0/8 是不可路由的,如果源以此地址开头,数据包将永远不会离开本地计算机。源 IP 由应用程序控制;它可以绑定特定的源 IP,通常是主机的接口 IP 之一,但通常源 IP 不受应用程序绑定,并且默认为 * 和一些(半)随机端口。

相关内容