Routing
為什麼指向本地網路介面的路由規則接受多個目標 IP 地址?
$ /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 問題,但它們在這裡無關緊要,最終只會讓人感到困惑。)