$ /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
当数据包到达主机并且数据包的目的地是环回地址(127.0.0.1)时,
是否会根据路由表中的第一条规则传输到ens3(192.168.122.202),然后传输到网关(192.168.122.1)?
如果是,那不是错误的吗,因为预期的目的地(127.0.0.1)位于本地主机中?
当目的地址是环回地址时,真的就没有路由条目了吗?
谢谢。
答案1
当内核处理数据包时,路由表并不是首先考虑的事情;路由表并不是内核处理数据包时首先考虑的事情。首先有一个规则表,您可以使用 来查看ip rule list
。ip route list
(以及已弃用的route
)列出了主表,但有一个本地表具有更高的优先级,并列出了涉及环回接口的所有路由;跑去ip route show table local
看他们。
发送至环回地址的数据包不会离开系统。