为什么路由器需要为每个网络设置单独的 IP?

网络工程 路由 路由器 ip
2022-02-09 14:59:54

假设我们有一个路由器连接 4 个不同的网络,前缀为 00、01、10 和 11,路由器需要在每个网络中都有一个带有这样前缀的 IP 地址,才能作为标准网关进行寻址,对吗?

现在,我想知道,到达标准网关所需的链路层地址是通过 ARP 获得的,通过广播让某人将自己显示为该地址。但是,我们不能让路由器只有一个 IP 位于其中一个网络中吗?会有什么问题?如果不同网络中的设备想要与路由器通信,它只会向该地址发送一个数据包,路由器就会识别出它具有该特定地址。那么,每个路由器所在的每个网络都需要一个 IP 吗?

2个回答

路由器在网络之间路由数据包,因此每个网络接口必须位于不同的网络中。给定一个具有四个接口的路由器,那么该路由器将连接到四个不同的网络,每个网络中都有一个地址。

一个原因是路由器使用它的地址和掩码来确定哪个网络连接到接口。另一个原因是它需要在该网络上发送和接收帧。例如,路由器向连接到其中一个网络的主机发送 IPv4 数据包可能需要使用 ARP 来确定目标主机的 MAC 地址(无论是 PC、打印机等,甚至是另一台路由器)。目标主机必须能够在同一网络上响应,如果路由器在网络中没有地址,那么目标主机将需要使用其配置的网关,该网关必须与主机在同一网络中。

这也适用于源主机。其配置的网关必须具有与源主机在同一网络中的地址,否则源主机将需要网关才能到达其网关,并且无法以这种方式工作。网关是网络中知道如何到达其他网络的主机。

如果一台路由器有四个网络,并且每个网络上都有主机,那么每个网络上的主机都需要路由器与主机在同一网络中的地址。这意味着路由器需要在四个网络中的每一个网络中都有一个地址。

考虑典型主机上的路由表。在这里,我坐在桌子上的树莓派:

pi@pi:~ $ ip route
default via 192.168.1.1 dev wlan0 proto dhcp src 192.168.1.114 metric 303 
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.114 metric 303 

这个路由表说明了两件事:

  1. 要获取以 192.168.1... 开头的任何内容,只需将其发送到 wlan0 即可。不需要路由器,因为这些主机将位于同一个 L2 网络上。
  2. 对于其他所有内容,请将其发送到 192.168.1.1(我们已经知道如何联系)。

现在从技术上讲,我们可以为您示例中路由器上的所有四个接口分配相同的 IP 地址。然而,这带来了令人不快的两难境地。

我们可以任意选择一些 IP 地址,例如 169.254.33.122,并将其分配给四个接口。但是没有一个主机知道如何到达它,因为它不会像上面的例子那样在路由表中。有人可以ip route add 169.254.33.122 dev wlan0在每个主机上走来走去,但这很乏味。虽然人们可以想出一些自动化的方法来分发这样的路由,但它不会像 DHCP 那样无处不在。

或者我们通过选择一些已经在主机配置的网络中的地址来避免添加路由的需要(在上面的示例中为 192.168.1.0/24)。但是要拥有一个地址,我们可以在四个网络中的每一个中选择一个地址,这意味着四个网络之间必须存在地址重叠。这不好:那么路由器如何确定它应该将接收到的数据包路由到哪个网络?