Routing

為什麼指向本地網路介面的路由規則接受多個目標 IP 地址?

  • March 26, 2019
$ /sbin/route -n 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.122.1   0.0.0.0         UG    0      0        0 ens3
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 ens3

$ /sbin/ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       inet 192.168.122.202  netmask 255.255.255.0  broadcast 192.168.122.255
       inet6 fe80::5054:ff:fe99:5eee  prefixlen 64  scopeid 0x20<link>
       ether 52:54:00:99:5e:ee  txqueuelen 1000  (Ethernet)
       RX packets 14906  bytes 18020195 (17.1 MiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 7390  bytes 786783 (768.3 KiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 35568

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
       inet 127.0.0.1  netmask 255.0.0.0
       inet6 ::1  prefixlen 128  scopeid 0x10<host>
       loop  txqueuelen 1  (Local Loopback)
       RX packets 496  bytes 39840 (38.9 KiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 496  bytes 39840 (38.9 KiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

當數據包到達主機並且數據包的目的地是私有 IP 地址(192.168.122.2)時,

  • 根據路由表中的第二個條目,數據包是否被傳遞到 ens3 (192.168.122.202) 作為最終目的地?
  • 如果是,那是不是錯了,因為預期的目的地 192.168.122.2 不在本地主機中?換句話說,為什麼第二個條目將目標 IP 地址在一定範圍內變化的數據包引導到****只有一個IP 地址的本地網路介面?

謝謝。

您忘記了該介面提供對網路的訪問,該網路(如果是 IP 網路)由基本 IP 地址和網路遮罩(或 IPv6 中的前綴長度)定義。

192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 ens3

表示發往 192.168.122/24 網路ens3的數據包將被發送到 ,網路介面(然後數據包將被發送到適當的主機,但這不是這個系統的關注點)。

網路應該為網路上的所有主機提供平等的訪問權限,因此ens3允許數據包以對等方式有效地發送到 192.168.122/24 網路中的任何主機,無需任何網關或網關的幫助。路由器。

0.0.0.0         192.168.122.1   0.0.0.0         UG    0      0        0 ens3

表示核心不知道如何處理的數據包應該發送到網關 192.168.122.1,它會適當地轉發它(如果可以的話)。網關可通過 ens3訪問。

這些都不能保證任何給定的數據包都會真正到達其目的地;這就是為什麼網路(甚至介面)可以報告諸如“目標主機不可達”之類的錯誤。

(Sticklers 可能會抱怨我忽略了 L2/L3 問題,但它們在這裡無關緊要,最終只會讓人感到困惑。)

引用自:https://unix.stackexchange.com/questions/508736