我有一个与 dhcp 服务器(debian 8)和两台主机 A 和 B 连接的集线器,因为 B 的接口一开始就关闭了。然后我让dhcp-server192.168.2.170
自动给主机A,当时一切正常。接下来,我手动设置 B 的接口具有相同的 IP 192.168.2.170
,并启用该接口,主机 B 可以 ping 服务器(可能有 40% 的丢失),但主机 A 仍然能够192.168.2.170
大约每 10 分钟从服务器成功更新一次时间(我尝试了5次以上)。最终,服务器每次尝试都会放弃 IP192.168.2.170
并分配另一个 IP 给主机 A,但仍然会经过不可预测的时间段(从 2 分钟到 15 分钟)。
在我看来,正如 2131 所说,服务器在将其发送到客户端之前会 ping 该 IP,一旦 ICMP 得到回复,服务器将发送另一个 IP。因此,就我而言,我认为服务器应该能够在第一次收到客户端请求时检测到该冲突,并发送新的 IP。但服务器在执行 ICMP 检查并分配新 IP 之前仍会多次确认该 IP。
答案1
为了避免 IP 地址冲突,您可以在 DHCP 服务器上配置“静态”和“动态”范围。例如,192.168.2.1
to192.168.2.100
是您的动态范围,允许 DHCP 服务器自由分配这些地址,192.168.2.101
to192.168.2.150
是您的静态范围,不允许 DHCP 服务器自由分配这些 IP 地址。您可以将 IP 地址映射到 MAC 地址以创建“静态租约”,为此,您可以使用“静态”范围。您有第三个范围192.168.2.151
to 192.168.2.254
,用于“玩耍”。请注意,这里的范围是家庭使用的,对吧,如果你负责公司网络,它看起来会很不同。
您声称 DHCP 服务器检测到 IP 地址冲突并为主机 A 提供了另一个 IP?我认为这是 DHCP 服务器中的一个错误!
DHCP 服务器仅应在主机 A 请求新的租。 DHCP 服务器将在分配之前检查要提供的地址是否已在使用中,如果正在使用,则会进行标记,并且只有当 DHCP 服务器用完地址时才会再次考虑该地址。