ISC DHCP - 强制客户端获取新的 IP 地址,而不是重新颁发其先前租约的 IP

ISC DHCP - 强制客户端获取新的 IP 地址,而不是重新颁发其先前租约的 IP

我们正在将 DHCP 和 DNS 服务从基于 Debian 的服务器迁移到 Windows Server 2008 R2 实现。Debian 服务器正在运行 isc-dhcpd-V3.1.1。所有工作站都配置为具有 .3 和 .40 之间的固定地址(这种选择的动机主要是管理/政治,就像这里)。DHCP 租约在 .100 到 .175 范围内发放。静态配置的服务器位于 .200 块及以上(大部分为空)。

当我们迁移到 Windows 平台时,出于管理/政策方面的考虑,我需要再次移动 IP 范围。我们希望保留 .1 - .10 供网络设备、交换机和其他基础设施使用。.200 仍将指定用于服务器。中间的寻址空间应该可供客户端使用,并且 IP 应该动态地已分配(编辑:而不是像最初提到的那样自动执行)由服务器执行。

我的 Windows Server 上的地址池如下所示:

192.168.0.1     192.168.0.254     (Address range for distribution)
192.168.0.1     192.168.0.10      (IP addresses excluded from distribution)
192.168.0.200   192.168.0.254     (IP addresses excluded from distribution)

目前,我们所有的客户端仍然在 .3 - .40 范围内,少数机器仍在 .100 - .175 范围内活动(尽管有很多已关闭的设备仍具有该范围内的 IP 的已过期租约)。由于租约“数据库”不在旧 DHCP 服务器和新 DHCP 服务器之间共享,我如何才能阻止客户端接收当前由旧 DHCP 服务器上租约未过期的客户端持有的 IP 地址的租约?如果我将 Debian DHCP 服务器上的范围扩展为 192.168.0.10 - 192.168.0.199,是否有办法强制客户端在发送 DHCPDISCOVER 时不重复使用其旧 IP 地址?我可以让 Windows DHCP 服务器像 ISC 实现一样具有权威性吗?

Debian 服务器的 dhcpd.conf:

ddns-update-style none;
authoritative;

default-lease-time 43200;   #12 hours
max-lease-time 86400;       #24 hours

subnet 192.168.0.0 netmask 255.255.255.0 {

    option routers 192.168.0.1;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.0.255;

    range 192.168.0.100 192.168.0.175;
}


host workstation-1 {
 hardware ethernet 00:11:22:33:44:55;
 fixed-address 192.168.0.3;
} ... and so on until 192.168.0.40

答案1

这可能不是解决这个问题的最佳方法,但它确实有效。以下是我所做的。

1)我在基于 Debian 的 DHCP 服务器中添加了以下限制,并删除了所有固定地址条目。这会强制这些 IP 范围内的所有客户端移动到 .41 - .199 范围内的某个位置,否则当我打开 Windows Server 时,客户端将收到网络上已存在的 .11 - .40 范围内的 IP 租约。然后,我让事情持续足够长的时间,直到该 IP 范围内的所有租约都到期并发出新的租约。

subnet 192.168.61.0 netmask 255.255.255.0 {

        option routers 192.168.61.1;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.61.255;

        pool {
                range 192.168.61.0 192.168.61.40;
                deny all clients;
        }
        pool {
                range 192.168.61.41 192.168.61.199;

        }
}

我无法找到一种方法使 Windows Server DHCP 实现充当“权威”;我想要的行为是,当拥有来自旧的基于 Debian 的 DHCP 服务器的租约的客户端将其 DHCPINFORM 数据包发送到新的 Windows Server 时,我希望这些客户端收到 DHCPNAK,然后再次经历整个过程来获得租约,从而从 .11 及更高版本“重新填充”寻址空间......无论如何,继续。

2)我通过扩大新 Windows DHCP 服务器上的排除范围来包含 192.168.61.100 - 192.168.61.199,从而达到作弊的目的。这将迫使所有被基于 Debian 的 DHCP 服务器分配该范围内 IP 的客户端的 DHCPINFORM 被拒绝,然后在寻址空间的“底部”(.11 及更高版本)发出新的租约。

3)此时,我只需关闭 Debian DHCP 服务器,打开 Windows Server,让到期时间解决问题。由于我的dhcpd配置文件,在 .11 - .40 地址空间中没有具有“旧租约”的客户端,这可能会导致 IP 冲突,并且由于排除了 .100 - .199 范围,所有 DHCPINFORM 请求都被拒绝(至少我想象这是发生的事情...我没有费心使用数据包嗅探器查看事务...我可能应该这样做)并且地址空间从 .11 的下限开始重新填充。

答案2

停止 DHCP 服务器并删除租约文件。它应该位于 /var/lib/dh​​cpd/dhcpd.leases 中。重新启动 DHCP 服务器,客户端将开始使用不同的地址。

我不知道如何强制 Windows DHCP 服务器成为权威服务器(按照 Windows 的传统,它可能只是虽然您可能希望尝试一些更简单的方法(例如,您可能希望尝试更简单的方法),但从 dhcpd 配置中删除该指令将是朝这个方向迈出的一步。

相关内容