DHCP 故障轉移概觀

DHCP 故障轉移可讓兩部Microsoft DHCP 伺服器共用可用性資訊,藉由複寫主伺服器與其故障轉移夥伴之間的IP位址租用和設定,以確保高可用性。

所有範圍資訊都會在兩部 DHCP 伺服器之間共用,包括使用中的租約。 如果其他伺服器無法使用,這可讓任一個 DHCP 伺服器承擔 DHCP 用戶端的責任。

本文提供 DHCP 故障轉移的概觀。

DHCP 故障轉移簡介

透過 DHCP 故障轉移,DHCPv4 範圍會從主要 DHCP 伺服器複寫到夥伴 DHCP 伺服器,以實現 DHCP 服務的備援和負載平衡。 共用已啟用容錯移轉的 DHCP 範圍的 DHCP 伺服器稱為 容錯移轉夥伴。 Microsoft DHCP 故障轉移的實作是以 因特網工程工作組 (IETF) DHCP 故障轉移通訊協定草稿為基礎。

當兩個 DHCP 伺服器設定為容錯時,它們會共用範圍資訊,包括所有作用中的 IP 位址租用。 這可讓這兩部 DHCP 伺服器為負載平衡或備援目的,為相同的子網提供租用。 當您第一次設定 DHCP 故障轉移時,範圍設定會被複製,如果之後進行設定變更,稍後可以再次複製。

下圖說明如何在兩部 DHCP 伺服器之間共用已啟用故障轉移之 DHCP 範圍的元件和設定。

DHCP 故障轉移的圖表。

與 DHCP 故障轉移配置的 DHCP 伺服器一起使用的範圍和設定,會透過名為 DHCP 故障轉移關聯性 的新物件進行共用。 DHCP 故障轉移提供數個組態選項。 您可以在 DHCP 伺服器上存在的所有範圍上設定故障轉移,或只在某些範圍上進行故障轉移。 您也可以將這些設定新增至相同的故障轉移關聯性,輕鬆地針對許多範圍使用相同的 DHCP 故障轉移設定。 故障移轉關係總是僅限於兩部 DHCP 伺服器之間。 不過,伺服器可以有許多故障轉移關聯性,而且每個故障轉移關聯性都可以使用不同的 DHCP 伺服器。

Important

如果對已啟用故障轉移的範圍設置進行變更,您必須手動將這些變更復寫至夥伴伺服器,以便同步兩部 DHCP 伺服器上的範圍。 複寫將從進行複寫的 DHCP 伺服器中複製範圍設定到夥伴伺服器,並覆寫夥伴伺服器上的設定。 因此,請務必一律從您想要使用的 DHCP 範圍設定的伺服器起始復寫。

DHCP 故障轉移規格

下列規格適用於 DHCP 故障轉移。

DHCP 範圍:

  • 您無法在 DHCP 範圍上設定 DHCP 故障轉移,以包含兩部以上的 DHCP 伺服器。

  • DHCP 故障轉移僅支援 DHCPv4 範圍。 DHCPv6 範圍無法啟用故障切換功能。

  • 如果已修改已啟用故障轉移範圍的參數,則必須手動將這些設定複寫到夥伴 DHCP 伺服器。

  • 範圍設定的復寫可以從任一 DHCP 伺服器起始到其故障轉移夥伴伺服器。

DHCP 用戶端/伺服器:

  • DHCP 用戶端必須能夠直接或透過 DHCP 轉發與兩個 DHCP 故障轉移夥伴伺服器通訊。

  • 啟用 DHCP 故障轉移時,原先由某伺服器分配的 DHCP 用戶端租約可以由不同的伺服器更新。

  • 每個 DHCP 故障轉移夥伴伺服器會獨立維護兩個不同的同步用戶端租用資料庫。

  • 設定為故障轉移夥伴的 DHCP 伺服器可以位於不同的子網上,但這並非必要。

  • 支援叢集的 DHCP 可以搭配 DHCP 故障轉移使用。 為了進行故障轉移,DHCP 叢集會被視為單一 DHCP 伺服器。

  • 您可以設定 DHCP 故障轉移,而且可以修改設定,而不需要暫停、停止或重新啟動 DHCP 伺服器服務。

DHCP 故障轉移夥伴:

  • DHCP 故障轉移夥伴必須至少執行 Windows Server 2016。

  • 設定為故障轉移夥伴的兩部 DHCP 伺服器會嘗試維護持續性 TCP/IP 連線。

  • 設定為故障轉移夥伴的 DHCP 伺服器都知道其他伺服器上的 DHCP 服務狀態,並通知該狀態的任何變更,且延遲最少。

  • 如果設定為故障轉移夥伴的兩部 DHCP 伺服器無法通訊,則會採取預防措施,以避免向兩個不同的 DHCP 用戶端發出相同的 IP 位址租用。

  • 如果 DHCP 伺服器在能夠成功同步處理所有 DHCP 用戶端資訊與其故障轉移夥伴之前無法使用,則會採取預防措施,以確保 DHCP 用戶端的 DHCP 租用持續性。

  • 每個 DHCP 故障轉移夥伴伺服器會獨立維護兩個不同的同步用戶端租用資料庫。

Important

在具有不同作業系統版本的 DHCP 故障轉移夥伴伺服器之間進行設定複寫時,務必從具有較新作業系統版本的 DHCP 伺服器進行設定修改並起始複寫。 這可確保兩個故障轉移夥伴都能辨識設定,並一致地復寫。

您可以使用伺服器管理員或 Windows PowerShell 來設定 DHCP 故障轉移。 如需使用 Windows PowerShell 的詳細資訊,請參閱 Windows PowerShell 中的 DHCP 伺服器 Cmdlet。 如需在伺服器管理員中設定 DHCP 的指示,請參閱此 逐步指南

DHCP 故障轉移和IPv6

因特網通訊協定第 6 版 (IPv6) 範圍不支援 DHCP 故障轉移。 使用 IPv6 的網路適配器通常會使用無狀態 IP 自動設定來判斷自己的 IPv6 位址。 在此模式中,DHCP 伺服器只會提供 DHCP 選項組態,而且伺服器不會維護任何租用狀態資訊。 透過設定兩部具有相同選項組態的伺服器,即可進行無狀態 DHCPv6 的高可用性部署。 即使在具狀態的 DHCPv6 部署中,範圍也不會達到高位址使用率,因此分割範圍成為一個可行的高可用性解決方案。

DHCP 故障轉移模式

當您建立 DHCP 故障轉移關聯性時,可以使用兩種 DHCP 故障轉移模式:

  • 熱待命模式:此模式提供 DHCP 服務的備援。

  • 負載平衡模式:此模式會在兩部伺服器上配置 DHCP 用戶端租用。

如有需要,您可以在熱待命與負載平衡模式之間切換,但一次只能搭配單一 DHCP 範圍使用一個模式。 如果您設定多個故障轉移關聯性,也可以在相同的 DHCP 伺服器上使用這兩種模式。 根據您的網路實體架構自定義您的部署。

熱待命模式

在熱備援模式中,兩部伺服器會在主動備援關係中運作,其中主伺服器負責將 IP 位址和組態資訊租用給範圍或子網中的所有用戶端。 只有在使用中伺服器無法使用時,合作夥伴伺服器才會承擔待命角色,並負責向 DHCP 用戶端發出租用。 熱待命模式適用於故障轉移夥伴僅作為臨時使用方案的情況,例如當作用中伺服器無法使用時。

顯示熱待命模式運作方式的圖表。

伺服器在故障轉移關係中,為作用中或待命狀態。 例如,在某個特定關聯中擔任主動角色的伺服器,可能在另一個關聯中是待命伺服器。 根據預設,用來建立故障轉移關聯性的伺服器是作用中伺服器,但不需要這樣做。

當您選擇熱待命時,如果作用中伺服器沒有回應,您也必須在作用中伺服器上設定保留供待命伺服器使用的IP位址百分比。 根據預設,此保留百分比為 5%。

DHCP 租約中的保留百分比用於新租約。 如果 DHCP 用戶端嘗試使用待命伺服器但無法聯繫到使用中伺服器來更新 DHCP 租用,則會更新先前指派給 DHCP 用戶端的相同 IP 位址。 在此情況下,會針對用戶端前置時間上限(MCLT)期間授與暫時租用,而不是完整的範圍租用時間。

如果待命伺服器在 MCLT 到期前向新的 DHCP 用戶端發出其所有可用的保留百分比租用,則會拒絕發行新的 DHCP 租用,並繼續更新現有的租用。 MCLT 到期之後,允許待命伺服器針對新的 DHCP 租用使用整個可用的 IP 位址池。 如果伺服器仍然處於通訊中斷狀態,它不會針對新的 DHCP 租用使用整個可用的 IP 位址池。

在熱待命模式中,中央辦公室或數據中心伺服器通常做為待命備份伺服器。 此伺服器在遠端網站為本地 DHCP 伺服器提供備援,該網站直接為 DHCP 用戶端提供服務。 在這類部署中,當本機 DHCP 伺服器無法使用時,待命伺服器應該只服務用戶端。

負載平衡模式

負載平衡模式是部署的預設模式。 在此模式中,兩部 DHCP 伺服器會同時為指定子網上的用戶端提供IP位址和選項。 DHCP 用戶端要求會進行負載平衡,並在兩台 DHCP 伺服器之間分配。 兩部伺服器之間的預設負載平衡比率為50:50,但可自定義為從0% 到100%的任何比率。

顯示負載平衡模式運作方式的圖表。

負載平衡機制在 RFC 3074中定義,其中雜湊是根據每個DHCP客戶端請求中包含的MAC地址計算的。 系統會根據所設定的負載平衡百分比,將哈希值範圍(也稱為哈希值區)指派給每個 DHCP 伺服器。 伺服器會根據指派的哈希值區來判斷是否要回應用戶端。

在負載平衡模式中,當 DHCP 伺服器失去與其故障轉移夥伴的連絡時,就會開始分配租約給所有 DHCP 用戶端。 如果它從指派給故障轉移夥伴的 DHCP 用戶端收到租用續約要求,則會在 MCLT 期間暫時更新相同的 IP 位址租用。 如果它從先前未指派租用的用戶端收到要求,它會從其免費IP位址池授與新的租用,直到用盡為止,然後開始使用其故障轉移夥伴的免費IP位址池。 如果 DHCP 伺服器進入夥伴關閉狀態,它會等候 MCLT 持續時間,然後承擔 IP 位址池 100% 的責任。

負載平衡作業模式最適合兩部伺服器位於同一實體地點的故障轉移配置。 這兩部伺服器都會根據系統管理員所設定的負載分配比例來回應 DHCP 用戶端要求。

DHCP 故障轉移和 Windows 故障轉移叢集

在下列設定中,叢集 DHCP 支援 DHCP 故障轉移:

  • 單一 DHCP 伺服器可以與 DHCP 故障轉移叢集建立故障轉移關係。

  • DHCP 故障轉移叢集可以與另一個 DHCP 故障轉移叢集建立故障轉移關聯性。

在這兩種情況下,您必須設定 DHCP 故障轉移以使用叢集的名稱或IP位址,而不是叢集節點的名稱或IP位址。 如果個別叢集節點設定為故障轉移夥伴,如果 DHCP 伺服器服務移至叢集中的不同節點,主伺服器就會進入通訊中斷狀態。

Important

如果您使用共用密碼,則必須手動將共用密碼複寫到所有叢集節點。 您可以使用 PowerShell Cmdlet Set-DhcpServerv4Failover 在作用中叢集節點上複寫共用秘密。

DHCP 故障轉移和 DNS 動態更新

如果 DHCP 伺服器設定為代表用戶端電腦執行 DNS 動態更新,DHCP 故障轉移關聯性的兩部 DHCP 伺服器都必須使用相同的 DNS 認證來更新 DNS 記錄。 如果故障轉移夥伴嘗試使用不同的認證來更新 DNS 資源記錄,此更新會失敗。

下列步驟說明當用戶端電腦使用不同的 DHCP 伺服器時,DNS 動態更新如何失敗:

  1. Windows DHCP 伺服器會代表 DHCP 用戶端執行動態更新。

  2. DHCP 伺服器會建立用戶端的 DNS 名稱,並成為該名稱的擁有者。

  3. 現在只有 DHCP 伺服器本身可以更新用戶端名稱的 DNS 記錄。

  4. 原始伺服器失敗,第二部備份 DHCP 伺服器上線;現在,第二部伺服器無法更新用戶端名稱,因為它不是名稱的擁有者。

另請參閱 DNS 記錄擁有權和 DnsUpdateProxy 群組 ,以取得此案例的討論。

部署考慮

部署 DHCP 故障轉移之前,請考慮下列事項:

時間同步

若要讓 DHCP 故障轉移正常運作,必須在故障轉移關係中的兩部伺服器之間保持時間同步。 時間同步處理可以藉由網路時間通訊協定 (NTP) 或任何其他替代機制的部署來維護。 執行故障轉移設定精靈時,將會比較設定故障轉移之伺服器上的目前時間。 如果伺服器之間的時間差異大於一分鐘,故障轉移設置程序將會因嚴重錯誤而停止,並要求同步伺服器上的時間。

每個故障轉移通訊協定訊息都包含在來源伺服器傳輸訊息時填入國際標準時間 (UTC) 的時間欄位。 對於每個訊息,接收伺服器會執行封包中時間戳欄位與接收伺服器時間之間的時間差異檢查。 如果發現這個時間差異大於一分鐘,則接收伺服器會記錄重要事件,指出兩部伺服器沒有時間同步處理。

以原則為基礎的指派

Windows Server 包含原則型 IP 位址指派功能,可讓 Windows DHCP 系統管理員依用戶端的特定屬性將 DHCP 用戶端分組,例如廠商類別、使用者類別、用戶端識別碼或 MAC 位址。 系統管理員會根據這些屬性將用戶端分組,並可將IP位址、預設閘道、DNS 伺服器和其他 DHCP 選項等參數指派給特定用戶端群組。 這可讓系統管理員對傳遞至結束主機的組態參數執行更大的控制。 這項功能介紹單一範圍內多個IP位址範圍的概念。 為了配合這一點,在負載共用模式中,DHCP 故障轉移地址分佈是以每個IP位址範圍為基礎完成。

Windows 防火牆

DHCP 故障轉移使用 TCP 連接埠 647 接聽兩個故障轉移夥伴伺服器之間的故障轉移訊息。 若要讓 Windows 防火牆允許此流量,接著會新增下列輸入和輸出防火牆規則,然後安裝 DHCP 伺服器角色:

  • Microsoft-Windows-DHCP-Failover-TCP-In

  • Microsoft-Windows-DHCP-Failover-TCP-Out

中繼代理

初始 DHCPDISCOVER 訊息是由其所屬子網上的 DHCP 用戶端廣播。 由於路由器通常不會轉送廣播流量,因此如果 DHCP 伺服器不在相同子網上,則需要一個機制,才能讓 DHCP 用戶端與 DHCP 伺服器通訊。 轉接代理程式(通常是在路由器上提供)是設計來執行此函式、轉接 DHCP,以及不同子網上的用戶端與伺服器之間的 BOOTP 訊息。 轉譯代理程式通常會在網路裝置上設定,或者您可以在已安裝遠端訪問角色的 Windows Server 上設定 DHCP 轉播。 如需詳細資訊,請參閱 部署 DHCP 轉寄代理程式

如果您的 DHCP 轉播是在網路裝置上設定,請參閱廠商的檔以取得詳細數據。 helper-address命令通常用於在網路裝置上配置DHCP中繼,例如: ip helper-address 10.0.1.1

當您部署 DHCP 故障轉移時,單一 DHCP 轉寄位址可能不足,因為 DHCP 用戶端必須一律能夠與主要 DHCP 伺服器和故障轉移夥伴伺服器通訊。 如果這兩部 DHCP 伺服器都位於與 DHCP 用戶端不同的子網上,這至少需要兩個 DHCP 轉播代理程式。 例如: ip helper-address 10.0.1.1ip helper-address 10.0.1.2

在此範例中,這兩部 DHCP 伺服器都位於相同的子網上(10.0.1.0/24)。 主要 DHCP 伺服器的 IP 位址是 10.0.1.1 和 10.0.1.2 是故障轉移夥伴伺服器的 IP 位址。 如果兩部 DHCP 伺服器都位於相同的子網上,您也可以將子網廣播位址 (例如:10.0.1.255) 設定為單一 DHCP 轉送。 如果 DHCP 伺服器位於不同的子網上,就無法使用子網廣播地址作為單一 DHCP 轉送。

重複轉寄代理程式

虛擬路由器備援通訊協定 (VRRP) 是另一個故障轉移通訊協定,用來在網路裝置上啟用備援。 VRRP 的範例包括熱待命路由器通訊協定 (HSRP),這是 Cisco 專屬的 VRRP。 如果在同時設定一或多個 DHCP 轉送的網路裝置上設定 VRRP/HSRP,這可能會導致重複的 DHCP 轉送訊息傳送至相同的 DHCP 故障轉移伺服器。

如果針對 DHCP 故障轉移設定的單一 DHCP 伺服器收到重複的租用要求,這可能會導致用戶端租用持續時間不一致,而用戶端可能會租用屬於其他用戶端的 IP 位址。 請參閱廠商檔,以判斷路由器備援通訊協定是否需要特定設定來支援 DHCP 轉播。 例如,Cisco 提供使用虛擬路由器群組之 HSRP 通訊協定的 DHCP 轉接支援。