了解路由表条目

mai*_*ved 36 networking routing

我想问一个关于Linux中路由命令的问题.我在Linux终端输入以下命令

> route
Run Code Online (Sandbox Code Playgroud)

得到了输出:

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
Run Code Online (Sandbox Code Playgroud)

我不明白.这是否意味着任何带ip的数据包192.168.1.0都会从*网关出去?为什么DESTINATION写在那里不应该是源,因为从我的主机发出的数据包有源IP 192.168.1.0

任何人都可以解释这个条目的意思,包括出去和来到我的主机?

Dav*_*rtz 58

让我们一个接一个地看一遍:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     1      0        0 eth0
Run Code Online (Sandbox Code Playgroud)

这表示目的地为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
Run Code Online (Sandbox Code Playgroud)

这表示目的地为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
Run Code Online (Sandbox Code Playgroud)

这表示任何具有链路本地地址的数据包都将被发送eth0到没有网关的接口.

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
Run Code Online (Sandbox Code Playgroud)

这表示eth0使用192.168.1.1作为网关,将发送到没有其他路由的目的地的任何数据包.

  • 为什么会这么重要?如果你在波士顿并前往芝加哥,你选择哪条路取决于你是在休斯敦还是在孟菲斯开始?数据包现在在这台机器上,或者这台机器不会路由它.重要的是它需要去的地方.谁在乎它的来源? (6认同)

Ton*_* L. 7

  • Destination =数据包前往的网络地址

"默认"表示如果在使用此规则之外的任何其他规则中找不到目的地.

  • Genmask =子网掩码

如果路由表中有多个地址适用于传出数据包,则将使用具有较高子网掩码的规则.如果这些是绑定的,那么度量标准就会发挥作用,但根据使用的协议,它会有所不同.

  • 接口=板载连接

例如,我目前使用的笔记本电脑有三个接口:

  1. 以太网卡
  2. 无线网卡
  3. 蓝牙

路由器通常每侧至少有2个接口,每个网络都有1个接口.对于大多数家用路由器,1个接口是家庭网络的一部分,另一个接口是前往ISP的外部网络的一部分.

  • 网关=下一跳

如果目标与发送方不在同一网络上,则会在此处发送数据包.

如果值是"*"或"On-link"或当前设备的地址......这些都意味着相同的事情.这意味着数据包将寻址到当前主机可直接访问的设备.换句话说,它们位于同一网络上,因此实际上不会使用网关,因为主机将知道目的地的数据链路层(MAC)地址并能够直接在那里发送.在这种情况下,这些值仅用于人类可读性.

至于发送数据包的过程:

  • 目标和Genmask用于确定哪些规则与传出数据包的目标地址匹配.
  • 接口用于决定机器上的通信设备发送它.
  • 网关是将数据包发送到(通过)的同一网络上的设备的地址.