内核 IP 表中的条目是什么?

网络工程 路由 ipv4 ip linux
2021-08-02 01:43:59

该表中有两个条目。根据我的理解,首先用于所有传出流量(我的调制解调器的本地地址是 192.168.1.1 ),负责网络的操作系统的一部分只是将数据包传递给调制解调器,然后将其发送给 ISP 等。但是,我不确定是什么是第二个条目。起初我认为它用于传入流量但目标地址似乎错误,因为根据 ifconfig 主机的本地地址是 192.168.1.3

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

如果配置:

eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  
          inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:592510 errors:0 dropped:0 overruns:0 frame:0
          TX packets:398904 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 

那么,我第一次进入是错误的吗?第二个目的是什么?

2个回答

什么route -n(或netstat -rn)显示您需要一些解释-“网关”0.0.0.0意味着发送到该子网的任何数据包的下一跳是实际目标主机,而不是路由器。如果“网关”不是0.0.0.0,则所有发往该子网的数据包实际上都将发送到网关的 MAC 地址(然后网关将处理它们的下一跳转发)。所以,在你的情况下,你的路由表有一个本地连接段的路由,然后是“其他所有”的路由。

从任何主机转发 IP 数据包的一般流程如下流程图所示:

主机 IP 数据包流

其一般要点是主机(在以太网或 wifi 上)最终试图找到将这个数据包发送到的 MAC 地址,路由表将帮助它决定(实际目标主机的 MAC,如果它在相同的网段,或该网段路由器的 MAC 地址)。

至于你在另一个答案中关于你的主机如何看到 ARP 的问题 - ARP 请求是使用广播目标 MAC 传输的,这意味着它们将被同一广播域中的每个主机看到,无论它们是否连接到相同的桥与否。路由器不会将它们转发到另一个广播域,但网桥(如本例中的无线 AP)将通过本地网络传输 ARP。

第一个目标为 的条目,0.0.0.0掩码为0.0.0.0意味着任何与任何其他条目都不匹配的 IPv4 数据包将被发送到网关192.168.1.1

192.168.1.0带有掩码的第二个条目255.255.255.0意味着任何处于 范围内的 IPv4 数据包192.168.1.0/24都将在与该主机相同的链路上发送。

换句话说,任何发往本地网络的数据包都将使用 ARP(或 ARP 缓存)为本地网络构建一个框架。任何其他数据包都会为网关 MAC 地址进行 ARP(或使用 ARP 缓存)以构建帧。