ISC DHCP - 強制客戶端獲取新的 IP 地址,而不是重新發布其先前租約的 IP
我們正在將 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 的下限。