我可以在一個網路上擁有多個 DHCP 伺服器嗎?
這是關於冗餘 DHCP 伺服器的規範問題。
同一個 LAN 上是否可以有多個 DHCP 伺服器?這樣做有什麼影響?
- 如果有多個 DHCP 伺服器可用會怎樣?我的客戶如何知道該使用哪一個?
- 如何讓 DHCP 伺服器為多個子網\網段提供地址?
- 如何配置多個 DHCP 伺服器為同一子網提供地址。
我假設基本了解 DHCP 的作用以及如何在此答案中配置您選擇的 DHCP 伺服器,但在我們討論同一網路上的多個 DHCP 伺服器之前,讓我們首先快速回顧一下客戶端如何接收 IP 地址在最基本的層面上來自 DHCP。
簡單網路上的 DHCP 使用 DORA 原理工作。
- 發現 - 客戶端在其連接的本地網段上廣播消息,以發現可用的 DHCP 伺服器。
- 提供 - 適當配置的 DHCP 伺服器接收來自客戶端的請求,並從其可用地址池中提供一個地址。
- 請求 - 客戶回复報價,請求報價中收到的地址。
- 確認 - 伺服器確認請求,將地址標記為在其地址池中使用,並通知客戶端地址租約的有效期以及所需的任何其他資訊。
網段上的任何設備都可以是DHCP伺服器;它不必是路由器或域控制器或網路上的任何其他“特殊”設備。
當您網路上的設備首次請求 IP 地址或達到其租約結束時(或者您強制他們檢查其租約是否仍然有效),它們將簡單地廣播對 DHCP 伺服器的請求,並接受來自第一個DHCP 伺服器回复。當我們在下面查看多個 DHCP 伺服器的選項時,記住這一點很重要。
多個 DHCP 伺服器 PT 1:跨越多個子網。
如果您有多個劃分為不同子網的 VLAN 或物理網段,並且您想為所有這些子網中的設備提供 DHCP 服務,那麼有兩種方法可以做到這一點。
- 如果分隔它們的路由器/第 3 層交換機可以充當 BOOTP/DHCP 中繼代理,那麼您可以繼續將所有 DHCP 伺服器保留在網路的一個或兩個中心部分,並將您的 DHCP 伺服器配置為支持多個地址範圍。為了支持這一點,您的路由器或第 3 層交換機必須支持RFC 1542 第 4 節中涵蓋的 BOOTP 中繼代理規範。
- 如果您的路由器不支持 RFC 1542 BOOTP 中繼代理,或者您的某些網段在地理上分散在慢速鏈路上,那麼您需要在每個子網中放置一個或多個 DHCP 伺服器。這個“本地”DHCP 伺服器只服務於它自己的本地網段的需求,它與其他 DHCP 伺服器之間沒有互動。如果這是您想要的,那麼您可以簡單地將每個 DHCP 伺服器配置為獨立伺服器,並為其自己的子網提供地址池的詳細資訊,而不必擔心網路其他部分的任何其他 DHCP 伺服器。這是在同一網路上擁有多個 DHCP 伺服器的最基本範例。
多個 DHCP 伺服器 PT 2:服務於同一網段的 DHCP 伺服器。
當大多數人詢問“同一網路上的多個 DHCP 伺服器”時,他們通常要求的是這個;他們希望不止一台 DHCP 伺服器向客戶端發布相同範圍的網路地址,以便在多台伺服器之間分配負載,或者在一台伺服器離線時提供冗餘。
這是完全可能的,儘管它需要一些思考和計劃。
從“網路流量”的角度來看,本答案開頭概述的 DORA 流程解釋瞭如何在一個網段上存在多個 DHCP 伺服器;客戶端簡單地廣播一個發現請求,第一個響應提議的 DHCP 伺服器是“贏家”。
從伺服器的角度來看,每個伺服器都會有一個地址池,它可以發布給客戶端,知道它的地址範圍。服務於同一個子網的 DHCP 伺服器不應該有一個單一的“共享”範圍,而是應該有一個“分割”範圍。
換句話說,如果您有一個從 192.168.1.100 到 192.168.1.200 的 DHCP 地址範圍發給客戶端,那麼兩台伺服器都應該配置為提供該範圍的不同部分,因此第一台伺服器可能會使用該範圍的一部分192.168.1.100 到 192.168.1.150,然後第二個伺服器將發出 192.168.1.151 到 192.168.1.200。
Microsoft 最新的 DHCP 實現有一個嚮導,可以輕鬆地拆分您的範圍這裡很好,這個答案已經足夠長了。
劃分範圍——最佳實踐
您會聽到作為最佳實踐提到的一件事是用於拆分 DHCP 範圍的 80/20 規則,這意味著一台伺服器將提供該範圍內 80% 的地址,而另一台 DHCP 伺服器將有效地“保留”將提供 20% 的地址。
將地址拆分為 80/20 背後的想法是因為 80% 的可用地址應該足以滿足子網上所需的所有地址,並且 DHCP 租約通常會發布幾天;因此,如果您的主 DHCP 伺服器停機幾個小時,那麼該子網上 20% 以上的機器不太可能需要在停機期間更新其地址,從而使 20% 的地址池足夠。
這仍然是合理的建議,但它假設了兩件事:
- 您可以足夠快地解決“主”DHCP 伺服器的任何問題,以避免耗盡您的備用 DHCP 伺服器上的小地址池。
- 你對負載平衡不感興趣。
這些天來(從我的例子中可以看出)我更喜歡 50/50 分割,我認為這是對上述幾點更現實的答案。
在 DHCP 伺服器上創建作用域時要考慮的另一件事是將完整作用域配置到每個伺服器中,並排除其他 DHCP 伺服器給出的範圍。這具有“自我記錄”每個 DHCP 伺服器上完整子網的 DHCP 資訊的好處,這將提高任何其他試圖了解正在發生的事情的人的清晰度,以及在您的一個 DHCP 伺服器離線的情況下有時,您可以臨時重新配置另一台伺服器上的排除範圍,以使其能夠彌補不足。
結合這些想法
最後,值得記住的是,您可以結合上面討論的原則 - 您可以將所有 DHCP 伺服器放入一個或多個“中央伺服器”VLAN,並在所有路由器上使用 BOOTP 中繼代理從一個非常大的分段發送所有 DHCP 請求網路連接到集中式 DHCP 服務(這就是我所做的,見下文)。或者,您可以將 DHCP 伺服器分佈在整個網路中,在其本地子網中使用“主”DHCP 伺服器,在“附近”網段中使用“保留”DHCP 伺服器,提供少量地址作為備份 - 您甚至可以擁有各自網段中的兩台 DHCP 伺服器配置為相互提供 80/20 範圍的地址。最明智的選擇將取決於您的物理和邏輯網路如何相互映射。