Domain-Name-System

Windows DNS 伺服器在查詢自身時如何使 localnetpriority / 網路遮罩排序工作?

  • January 10, 2022

我們正在使用 Windows 2016+ DNS 伺服器。我們依賴 DNS 伺服器上的 LocalNetPriority。我們有多個跨多個站點的 Active Directory DNS 伺服器。預期的行為是,當對 DNS 伺服器進行特定查詢時,如果同一主機存在多個 A 記錄,它將返回與發起查詢在同一子網中的 IP 地址。這在大多數情況下都可以正常工作。

但是,對於來自 DNS 伺服器本身的請求,它不起作用。首先,預設情況下,DNS 伺服器(或 Active Directory)將其網路介面配置為通過 localhost(127.0.0.1 和 ::1)將自己用作選擇的 DNS 伺服器。這會導致 LocalNetPriority 選擇失敗,因為原始 IP 地址不在我們的子網之一中。

其次,伺服器更喜歡 IPv6 而不是 IPv4。我們不使用 IPv6,但也不想禁用它,因為它顯然在過去在不同的場景中造成了問題,微軟聲稱它是強制性的,不支持或不建議禁用它。使用 IPv6 是不可能的。

最後,這必須在網路中斷時起作用。當衛星位置與網路的其餘部分斷開時,此特定要求要求 localnetpriority 正常工作。因此,使用對等 DNS 解析器作為主伺服器並不能單獨滿足此要求。

似乎將 IPv4 設置為優先於 IPv6,並將伺服器的實際 IP 地址配置為選擇的 DNS 伺服器,可能是唯一的解決方案。但是,我很久以前就知道使用 127.0.0.1 是最好的選擇,因為在重新啟動或拔下網線時,活動目錄可能會完全崩潰。

我錯過了什麼?有沒有更直接的方法來解決這個問題?也許我應該為我們遇到問題的特定主機添加一個 HOSTS 文件條目。

為了解決這個問題,我不得不考慮幾件事:

  • 無論我們是否使用 IPv6,都會啟用 IPv6 鏈路本地定址。因此,每個伺服器/主機都將擁有一個 IPv6 地址,並儘可能使用 IPv6。
  • 將伺服器提升為帶 DNS 的域控制器會在 IPv4 和 IPv6 的本地網路介面上添加“localhost”作為 DNS 伺服器。這是 MS 的最佳實踐。
  • 我們無法禁用 IPv6,因為 Microsoft 不支持此功能。
  • Windows 更喜歡 IPv6 而不是 IPv4,因此任何已配置的 IPv6 DNS 伺服器都將具有優先權。
  • 在多 DC 環境中,伺服器應將對等方稱為主 DNS,並將其自身稱為二級、三級等。
  • 即使其他 DNS 伺服器/站點不可用,我也需要 localnetpriority 才能工作。
  • 當 Windows DNS 伺服器查詢自身時,如果它使用“localhost”進行查詢,它將破壞 localnetpriority。
  • MS 最佳實踐分析器提供了對 DNS 伺服器配置問題的有用洞察,並會抱怨網路介面上的 DNS 設置配置不正確。

經過這一切,我發現最好的解決方案是更改網路介面上的 DNS 伺服器設置,而不是對 Windows 中的任何內容進行其他更改。為了解決上述所有問題,我:

  • 刪除了在 IPv6 中配置的“localhost”DNS 伺服器。現在沒有配置 IPv6 DNS 伺服器。
  • 我重新配置了 IPv4 DNS 伺服器列表,如下所示:
    1. 基本的:<Peer DNS Server IP>
    1. 次要:<IPv4 address of this DNS server>
    1. 第三:(127.0.0.1本地主機)

BPA 的任何相關投訴均已解決。Localnetpriority 在網路功能齊全且站點因網路故障而中斷時起作用。並且,即使本地網線被拔掉,或者出現其他網路介面問題,AD仍然可以正常工作。

最終結果回答了這個問題,“當 DNS 伺服器查詢自身時,如何使 localnetpriority 工作? ”還有一個次要要求,即我不會破壞其他任何東西。

對於 DNS 伺服器的解析器,首先配置不同的 DNS 伺服器的 IP 地址,然後配置此 DNS 伺服器的 IP 地址,然後配置本地主機 IP。

即使 DNS 服務重新啟動,它仍然可以從遠端伺服器解析。此外,在使用 AD DS 時,首先使用不同的主機不太可能導致複製問題。

其次,伺服器更喜歡 IPv6 而不是 IPv4。我們不使用 IPv6,但也不想禁用它,因為它顯然在過去在不同的場景中造成了問題,微軟聲稱它是強制性的,不支持或不建議禁用它。

是的,首選 IPv6 是標準行為,Microsoft 不會測試禁用 IPv6。如果您不使用 IPv6,請不要將 IPv6 地址分配給主機。包括,確保路由器不發送 IPv6 RA。如果名稱只有 A 記錄而不是 AAAA,則主機解析並使用 IPv4,無需進一步配置。

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