如果网络中有两个 DHCP 服务器,哪个 DHCP 服务器将工作?

网络工程 dhcp
2021-07-06 06:09:05

如果路由器通过 LAN 到 LAN 连接连接到交换机,则路由器将成为 DHCP 服务器。

现在的问题是,如果两个路由器通过 LAN-LAN 连接到一个交换机,那么哪个 DHCP 可以工作?

2个回答

DHCP(动态主机配置协议)使用四个关键步骤,如下图所示:

  1. DHCP 发现 (DHCPDISCOVER) - 由寻求 DHCP 服务器的客户端发送。
  2. DHCP 提供 (DHCPOFFER) - 由 DHCP 服务器发送以向客户端提供地址(和其他 DHCP 选项)。
  3. DHCP 请求 (DHCPREQUEST) - 由客户端发送以接受所提供地址的租用。
  4. DHCP 确认 (DHCPACK) - 由服务器发送以确认客户端现在拥有该地址的租用。

这些交易的图表:

Client            DHCP Server
  |                    |
  |  DHCPDISCOVER ---> |
  |                    |
  |    <--- DHCPOFFER  |
  |                    |
  |  DHCPREQUEST --->  |
  |                    |
  |      <--- DHCPACK  |
  |                    |
  \/                   \/

这些消息中的每一个都是一个广播数据包,发送到目的地 255.255.255.255。这意味着这将发送到特定 L2 网段上的所有主机。(默认情况下 DHCP 是一种以广播为中心的技术,但是您可以使用 DHCP 中继功能来跨越 L3 边界。)

另请注意,DHCP 将 UDP 端口 67 用于 DHCP 服务器,将 68 用于客户端。


现在,为您解答:

当有两个(或更多)DHCP 服务器可从特定的 L2 网段访问时,它就会成为竞争条件。

客户端发出广播 DHCPDISCOVER,然后等待。两个 DHCP 服务器都接收消息并广播 DHCPOFFER 回复。

客户端首先收到哪个 DHCP 服务器的 DHCPOFFER 数据包将“获胜”,并且该服务器将收到来自客户端的 DHCPREQUEST。 根据具体情况,这实际上可能导致拒绝服务条件。

在过去的工作中,我在区域 ISP 的 NOC 工作。我们使用了一个特定品牌的 DSLAM,它有一个软件错误,导致它无法过滤来自客户的DHCP 消息

这意味着,每当客户将其家用路由器向后插入(LAN 端口连接到 DSL 调制解调器,而不是 WAN 端口连接到 DSL 调制解调器)时,他们就会开始向连接到该 DSLAM 上的调制解调器的每个路由器发出 DHCPOFFER。

因为这个新的 Rouge DHCP 服务器比实际的 DHCP 服务器更接近客户,所以它每次都赢得了比赛。这导致了级联中断,因为该 DSLAM 上的路由器上的 DHCP 租约到期,并且它们从 Rouge DHCP 服务器获取了私有地址。

如前所述 - 最快的。我们为一位客户提供了一个案例,该客户希望拥有主机的静态地址,但需要动态配置。我们在两个不同的服务器机房上安装了两个带有 DHCP 服务器的 FreeBSD 机器,它们在更改时从客户前端应用程序接收配置,并将它们包含到 isc dhcpd 中。两台服务器具有相同的配置,以确保在一台服务器、服务器机房或其他设备发生故障时一切正常。观察一个盒子比另一个盒子快得多,这很有趣。两者都收到了 DHCPDISCOVER 消息并且都试图响应,但其中一个最快。

如果我没记错的话,这工作了 2 年多。