路由器总是有两个IP地址吗?

网络工程 路由 dhcp
2021-08-02 05:27:09

所以我对这个问题很困惑,在网上查看时,我发现了几个答案,说路由器至少需要 2 个 IP 地址,但我不清楚为什么。

假设有以下场景:

一台计算机,连接到路由器(将称为“R1”),该路由器连接到另一台路由器(将称为“R2”),该路由器也充当 LAN 的 DHCP 服务器并具有外部 IP 地址。

所以我可以理解为什么 R2 有两个 IP 地址:例如 192.168.1.1 - 和其他一些外部 IP 地址,但为什么 R1 不能只有一个 IP 地址,类似于计算机?

谢谢

4个回答

欢迎来到网络工程!路由器在网络之间路由,因此它们需要路由到的网络中的接口。否则,它们就像一座“无处可去的桥梁”。

正如其他人所说 - 忽略错误配置、错误、错误状态等 - 路由器需要位于多个网络上,因此最自然地具有多个 IP 地址。

但是有几个特殊情况

特例 1:未编号的接口

有某些类型的网络,最显着的是点对点链接和虚拟专用网络链接,它们不需要地址并且有时使用未编号。路由器具有指定出口接口而不是通常的下一跳 IP 地址的路由;由于送出接口是点对点的,下一个路由器是隐式的。

可以想象,连接许多未编号的点对点链路的路由器可能根本没有 IP 地址,但仍然有用。

仅将其视为一种理论上的情况:在现实生活中没有人会这样做,因为出于配置目的,您至少需要一个 IP 地址来连接。即使没有严格要求,许多网络工程师也喜欢对所有接口进行编号,因为它可以帮助监控和查找故障。

特例 2:同一子网上的下一个路由器

直接回答您的问题(作为 Zac 的“存根路由器”答案的详细说明)

为什么R1不能只有一个IP地址,类似于电脑?

您当然可以拥有以下内容:

   internet
   |
   R2
   |.1         192.168.1/24
===+===+===+===============
       |.2 |.128
       R1  PC

R2默认路由向上,R1默认路由到.1,PC默认路由到.2

  • 是的,它有效,但被认为效率低下
  • 传出数据包去 PC -> R1 -> R2 -> 向前
  • R1 还向 PC 发送 ICMP 重定向消息
  • 传入的数据包去外面 -> R2 -> PC

R1 认为获取一个可以并且“应该”直接发送到 R2 的数据包是愚蠢的,因此通过 ICMP 重定向告诉 PC;PC 可以忽略或随意使用。

您可以关闭大多数路由器上的 ICMP 重定向消息,但许多网络工程师认为它们很有用,因为它们通常会显示配置错误。

特例3:黑洞

路由器可以拥有的特殊接口之一是“空”接口,它只会丢弃其数据包。通常,这用作发送在某些方面被判断为不正确的数据包的地方,例如具有内部源地址的数据包到达外部接口。

空接口没有地址。因此,配置为仅接受数据包并将其丢弃的路由器可能只有一个 IP 地址(如果位于点对点链路的末端,则没有),并将所有内容发送到空接口。您可能会出于记录目的而这样做;此外,有时将路由传播到坏地址而不是访问列表会更方便。

搜索“黑洞路由”以了解此技术。

一个路由器可以有任意数量的接口,包括一个。

但是,通常它会有两个或更多 - 路由器的目的是连接多个网络,为此,每个网络都需要有一个接口。

有时,“存根路由器”或单臂路由器用于路由回同一网络(=子网)。例如,有多个网关连接到一个网络,每个网关都通向另一个网络。有一些简单的节点只能使用默认网关,而末节路由器是具有完整路由表的节点 - 知道到其他网络的所有路由。因此,它用作默认网关,然后通过同一网络路由到实际网关。

此外(正如乔纳森乔指出的那样),路由器可能具有不需要本地 IP 地址的“未编号链接”——简单的串行接口、VPN 连接或类似的。

路由器上只能有一个 IP,但它不能将数据包路由到另一个网络。

在第一个接口上,您有网络的 IP 地址,但在另一个接口上,您需要有一个属于另一个网络的 IP 地址