DHCP 客户端或服务器是否重新分配 IP 地址?

网络工程 dhcp
2022-02-24 04:18:04

我知道 DHCP 协议确保它们不会分配已经分配给另一台主机的地址。即使已为主机分配了静态 IP 地址,情况也是如此。此外,该静态 IP 地址属于 DHCP 池地址范围。在这种情况下,服务器将在将 IP 地址提供给 DHCP 客户端之前 ping IP 地址。我的问题是,如果客户端 A 被分配了一个 IP 地址,比如说 192.168.1.10/24 由 DHCP 服务器分配怎么办。现在,我在同一子网中有另一台主机,我将地址分配为 192.168.1.10/24。DHCP 服务器是否会为客户端 A 重新分配另一个 IP 地址来解决冲突?我知道如果顺序不同并且 DHCP 在图片中稍后出现,那么 DHCP 服务器将确保它不会应用冲突的 IP 地址?

2个回答

根据 DHCP RFC (2131),检测重复地址是服务器和客户端的责任。服务器应使用 ICMP 或类似方法进行检查,客户端应使用 ARP 或类似方法进行检查:

在某些环境中,由于可用地址用尽,有必要重新分配网络地址。在这样的环境中,分配机制将重用租约已过期的地址。服务器应该使用配置信息存储库中可用的任何信息来选择要重用的地址。例如,服务器可以选择最近最少分配的地址。作为一致性检查,分配服务器应该在分配地址之前探测重用地址,例如使用 ICMP 回显请求,客户端应该探测新接收的地址,例如使用 ARP。

在客户端检测到它收到重复地址的情况下,它必须使用 DHCPDECLINE 拒绝该地址,然后在退避期后尝试获取另一个地址。

客户端收到带有配置参数的 DHCPACK 消息。客户端应该对参数进行最终检查(例如,分配网络地址的 ARP),并注意 DHCPACK 消息中指定的租用期限。至此,客户端就配置好了。如果客户端检测到该地址已被使用(例如,通过使用 ARP),客户端必须向服务器发送 DHCPDECLINE 消息并重新启动配置过程。客户端应该在重新启动配置过程之前至少等待十秒钟,以避免在循环的情况下出现过多的网络流量。

注意:所有这些语句都使用了 SHOULD 关键字,所以虽然它们是推荐的,但它们不是强制性的(除了地址拒绝是强制性的)

RFC 5227 提供了有关客户端如何执行 IPv4 地址冲突检测的更多详细信息

您做出的几个假设是错误的,但回答您的问题:

DHCP 服务器是否会为客户端 A 重新分配另一个 IP 地址来解决冲突?我知道如果顺序不同并且 DHCP 在图片中稍后出现,那么 DHCP 服务器将确保它不会应用冲突的 IP 地址?

不会。DHCP 不会扫描网络以查找已确认租约的冲突。此外,DHCP 通信始终由客户端发起,因此除非客户端发送另一个发现或租用请求,否则服务器不会执行任何操作。

此外,DHCP 服务器不需要检查提供的地址是否未使用,由客户端在请求地址之前进行检查。服务器甚至可能位于另一个网段上并且完全无法检查重复地址。