Windows-Server-2008

ISC DHCP - 強制客戶端獲取新的 IP 地址,而不是重新發布其先前租約的 IP

  • February 11, 2011

我們正在將 DHCP 和 DNS 服務從基於 Debian 的伺服器遷移到 Windows Server 2008 R2 實施。Debian 伺服器正在執行 isc-dhcpd-V3.1.1。所有工作站都配置為具有介於 0.3 和 0.40 之間的固定地址(該選擇背後的動機主要是管理/政治,就像這裡一樣)。DHCP 租約的範圍是 0.100 到 0.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 伺服器之間沒有共享租約“數據庫”,我如何防止客戶端接收到 IP 地址的租約,該 IP 地址目前由來自舊 DHCP 伺服器的未過期租約的客戶端持有?如果我只是將 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)**我在基於 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 伺服器時,我希望這些客戶端接收 DHCPNAK 並再次完成整個過程以獲得租約,因此“重新填充”從 0.11 及以上的定址空間……無論如何,繼續。

**2)**我在新的 Windows DHCP 伺服器上擴展排除範圍以包括 192.168.61.100 - 192.168.61.199 來作弊。這將強制由基於 Debian 的 DHCP 服務分配了該範圍內 IP 的任何客戶端拒絕其 DHCPINFORM,然後在定址空間的“底部”(0.11 和更大)發布新租約。

**3)**此時我只是關閉了 Debian DHCP 伺服器,然後打開了 Windows 伺服器,讓到期時間來解決問題。由於我的dhcpd.conf中的“拒絕所有客戶端”行,在 .11 - .40 定址空間中沒有具有“舊租約”的客戶端可能導致 IP 衝突,並且因為排除了 .100 - 。 199 個範圍內的所有 DHCPINFORM 請求都被拒絕(至少我想這就是發生的事情……我沒有費心使用數據包嗅探器查看事務……我可能應該這樣做)並且定址空間從0.11 的下限。

引用自:https://serverfault.com/questions/233530