dhcpd 不会放弃旧租约

dhcpd 不会放弃旧租约

我们已设置 DHCP 来发放以下范围内的租约:

192.168.10.190 - 192.168.10.254 (roughly 65 leases)

我们的小型企业网络只有大约 30 台计算机使用 DHCP。我们注意到 dhcpd 停止向计算机发放新的动态租约,尽管网络上的计算机绝对没有 65 台。

为什么它停止发放租约?它不释放旧的未使用租约吗?我们如何告诉 dhcpd 放弃旧租约并开始再次发放新租约?

答案1

此处的正确选择是使用该one-lease-per-client选项。例如:

#
# Sample configuration file for ISC dhcpd for Debian
#
# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $
#
ddns-update-style none;
option domain-name "example.net";
option domain-name-servers 1.1.1.1, 2.2.2.2;
option ntp-servers ntp.example.net;

default-lease-time 3600;
max-lease-time 7200;

authoritative;
log-facility local7;
deny declines;
deny duplicates;
one-lease-per-client true;

default-lease-time并且max-lease-time与最大租约条目无关(仅与当时生成的租约的到期时间有关)。deny duplicates还将强制执行您不能对同一台 Mac 但不同的客户端标识有重复的租约条目(具有双启动的主机,如果您在主操作系统上仍有有效租约时启动辅助操作系统,则可能会失败)。deny declinesDHCPDECLINE忽略来自客户端的请求。

答案2

这取决于很多因素,其中最大的因素就是租约时间。如果你给出的租约时间很长,dhcpd 可能会停止提供新的租约,直到某些租约到期。

检查日志(syslog)可能会给你提供正在发生的事情的直接线索。

要“修复”这个问题比较棘手。您可以停止 dhcpd 进程并直接编辑租约文件。如果您不确定自己在做什么,这样做是有风险的。可能有工具可以为您处理这个问题,或者至少有工具可以列出内容。

答案3

通常,只要客户端在 DHCP 客户端-服务器通信结束时正确发送 DHCPRELEASE 数据包,租约到期时间就与此无关。此外,dhcpd.conf 中的 check-ping 语句应该有助于解决问题或至少显示问题来源。根据我的经验,租约问题可能来自有缺陷的客户端 - 流程如下:

  1. 客户端以 DHCPDISCOVER 启动
  2. 服务器保留 IP 并使用 DHCPOFFER 回复
  3. 客户端忽略数据包或从未收到数据包并再次开始对话。如果这种情况发生得很快,那么这种有缺陷的客户端可以轻松借用所有租约。在日志中搜索此类客户端观察对话,另一方面grep -i ff:ff:ff $PATH_TO_DHCPD_LEASES_FILE ,请记住,dhcpd.leases 文件中也有过期的租约。因此看起来所有租约都已使用,但事实并非如此。您应该可以轻松地使用 awk 和 grep(或 perl)解析此文件,以查看有多少正在使用。

另外 - 您可以清空租约文件并重新启动服务器。这可以帮助您了解流程是怎样的。但请注意,如果您没有手动 dhcp 客户端(根据 MA​​C 分配 IP),则为工作站提供的 IP 地址可能会发生变化。

答案4

检查/etc/dhcpd3/dhcpd.conf 中的default-lease-time设置max-lease-time

如果租约到期时间设置过高,则可能会保留非常旧的租约。如果这是问题所在,则缩短租约到期时间应该释放比新租约到期时间更旧的租约。

相关内容