我想问一个关于Linux中路由命令的问题。我在Linux终端输入以下命令
> route
得到了输出:
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 1 0 0 eth0
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
link-local * 255.255.0.0 U 1000 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
我不明白。这是否意味着ip 192.168.1.0
的任何数据包将从*
网关出去?为什么DESTINATION写在那里不应该是源,因为从我的主机发出的数据包有192.168.1.0
的源IP?
任何人都可以解释这个条目的意思,包括出去和来到我的主机?
让我们一个接一个地看一遍:
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 1 0 0 eth0
这表示目的地为192.168.1.0到192.168.1.255的任何数据包将在不使用网关的情况下发送出eth0
(除非更具体的路由覆盖此网关)。
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
这表示目的地为192.168.122.0到192.168.122.255的任何数据包都将在不使用网关的情况下发送到virbr0
。 (同样,除非更具体的路线覆盖此路线。)
Destination Gateway Genmask Flags Metric Ref Use Iface
link-local * 255.255.0.0 U 1000 0 0 eth0
这表示任何带有link-local address的数据包将被发送到没有网关的接口eth0
。
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
这表示使用192.168.1.1作为网关,将没有其他路由的任何数据包发送到eth0
。
“默认”表示如果在使用此规则之外的任何其他规则中找不到目的地。
如果路由表中有多个地址适用于传出数据包,则将使用具有较高子网掩码的规则。如果这些是绑定的,那么度量标准就会发挥作用,但根据使用的协议,它会有所不同。
例如,我目前使用的笔记本电脑有三个接口:
路由器通常每侧至少有2个接口,每个网络都有1个接口。对于大多数家用路由器,1个接口是家庭网络的一部分,另一个接口是前往ISP的外部网络的一部分。
如果目标与发送方不在同一网络上,则会在此处发送数据包。
如果值是“*”或“On-link”或当前设备的地址......这些都意味着相同的事情。这意味着数据包将寻址到当前主机可直接访问的设备。换句话说,它们位于同一网络上,因此实际上不会使用网关,因为主机将知道目的地的数据链路层(MAC)地址并能够直接在那里发送。在这种情况下,这些值仅用于人类可读性。
至于发送数据包的过程:
192.168.1.0(-255)是本地目的地,一旦到达其本地目的地(很可能是192.168.1.1,您的路由器),它将被重新路由到外部IP目的地。这显示了您的计算机如何选择发送相对简单的数据包,因为大多数(如果不是全部)离开计算机的数据包在发送到目的地之前都会前往路由器。
一个更有趣的路由表将是您的路由器,它将处理许多外部和内部目的地。如果你研究这个,你将能够学到更多关于路由的知识。