Domain-Name-System

有關 DNS 路由的一般問題

  • September 28, 2015

**問題。**我有一個 Windows AD 域,但有一部分對我來說是個謎:Windows 域/DNS 伺服器如何查找 Windows 域之外的域?

在簡單的家庭網路中,DNS 請求路由很容易理解:

Generic Example: Client machine -> (defined DNS or from DHCP) -> 
               ->Router / Gateway -> (usually ISP DNS) -> DNS root servers -> Internet
Specific Example: 192.168.1.101 -> 192.168.1.1 -> 8.8.8.8 -> DNS root servers -> Internet

相比之下,我目前看到的 AD 網路路徑是這樣的:

Client Machine -> Windows Domain / DNS -> ??????? -> DNS root servers -> Internet

如果我檢查我的 Domain Server 上的網路設置,DNS 設置為備用 DNS 伺服器(輔助 Domain Server)、它本身和環回,沒有別的。

我的網際網路工作正常,所以 Windows 域伺服器以某種方式足夠智能,可以從上游伺服器獲取 DNS 資訊,但是這是在哪里以及如何定義的?

您的 DC 可以通過以下幾種方式查詢外部名稱伺服器:

  1. 根提示
  2. 全球貨運代理
  3. 明確定義的存根區域、委託或條件轉發區域
  4. DC 網路介面上的設置 - 您已檢查。

我猜#1或#2。您的問題僅包括檢查網路設置 - 您是否檢查過 DC 上的 DNS 管理器?

如果以上所有內容均為空白,則說明發生了意外情況,您或許應該使用wireshark 跟踪傳出的DNS 查詢。

DNS 由兩個完全不同的部分組成。一部分負責發布數據,另一部分負責接受來自客戶端的 DNS 請求並嘗試通過收集數據來響應這些請求。扮演發布數據角色的 DNS 伺服器通常被稱為“權威”伺服器,儘管這在技術上並不是一個真正正確的名稱。就個人而言,我更喜歡“DNS 內容伺服器”這個名稱,但該術語的使用並不廣泛。接受和回答來自客戶端的請求的伺服器通常稱為“解析”伺服器。

這實際上與 HTTP 伺服器和 HTTP 代理的工作方式非常相似:HTTP 伺服器發布數據,HTTP 代理接受來自客戶端(瀏覽器)的請求,並聯繫伺服器以收集客戶端請求的數據。Web 瀏覽器和 DNS 客戶端之間的區別在於,DNS 客戶端本身無法聯繫內容 DNS 伺服器。DNS 客戶端必須使用 DNS 解析伺服器,而 Web 瀏覽器完全能夠在沒有 HTTP 代理的情況下執行。

由於 DNS 資訊以分層和分佈式方式儲存,因此要回答單個查詢,您需要來自多個 DNS 內容伺服器的資訊,這些伺服器可能位於世界各地。當 DNS 客戶端想知道“www.serverfault.com”的地址時,它可以將該請求發送到 DNS 解析伺服器。然後,該 DNS 解析伺服器必須執行聯繫全球 DNS 伺服器的實際工作。

首先,解析 DNS 伺服器將整個查詢發送到根伺服器(即內容 DNS 伺服器)。該根伺服器沒有完整的答案,但它確實知道哪些 DNS 內容伺服器具有有關“.com”域中名稱的更多資訊。因此,DNS 解析器現在將整個查詢發送到“.com”內容 DNS 伺服器之一。該伺服器也沒有完整的答案,但它確實知道哪些 DNS 內容伺服器有更多關於名稱的資訊servervault.com領域。解析 DNS 伺服器將不斷詢問世界各地的內容 DNS 伺服器,直到它為客戶端提供完整的答案。當然,解析 DNS 伺服器將一路記憶體資訊:如果它從其記憶體中知道“.com”內容 DNS 伺服器在哪裡,它不會為“.com”域中的每個查詢聯繫根內容 DNS 伺服器。

“轉發器”只是一個解析 DNS 伺服器,它將客戶端查詢發送到另一個(預配置的)解析 DNS 伺服器,而不是通過聯繫世界各地的內容 DNS 伺服器來嘗試自己回答它們。家庭路由器通常包含一個解析 DNS 伺服器,該伺服器被配置為使用 ISP 的解析 DNS 伺服器作為轉發器。

當兩個不同的角色(內容服務和解析)一起出現在一個 DNS 伺服器中時,可能會讓人感到困惑。這或多或少是 Active Directory 發生的情況。在 Active Directory 中,DNS 用於發布有關在何處可以找到某些服務的資訊。例如,當域中的客戶端ad.example.com想要聯繫其域的 Kerberos 密碼更改伺服器時,它會針對名為_kpasswd._tcp.ad.example.com. 與任何其他 DNS 請求一樣,此 DNS 請求被發送到客戶端中配置的解析 DNS 伺服器。解析 DNS 伺服器然後開始工作以嘗試回答請求。

這是它可能會有點混亂的地方。DNS 解析伺服器可能知道它是特定 Active Directory 域的一部分,這意味著它可以辨識對該域中名稱的傳入查詢。如果解析器收到這樣的查詢,它不會聯繫外部 DNS 伺服器,但它可以直接回復來自 Active Directory 數據庫的資訊。如果傳入查詢不是針對域中的名稱,解析器要麼嘗試通過聯繫內容 DNS 伺服器自己回答問題,要麼(如果配置為使用轉發器)只是將查詢發送到另一個 DNS 解析伺服器. 這很可能是您的場景中發生的情況。

更令人困惑的是動態更新。在任何重要的領域中,服務都不是靜態的。可能會添加或刪除域控制器等。這同樣適用於工作站。這意味著需要更新 DNS 中的資訊以反映這一點。動態更新是一種使客戶端能夠修改在 DNS 中發布的資訊的協議。客戶端向其解析 DNS 伺服器發送查詢,以找出它可以將新資訊發送到哪個內容 DNS 伺服器。在 Active Directory 集成 DNS 基礎結構的情況下,解析 DNS 伺服器很可能有權訪問數據庫本身:在這種情況下,解析 DNS 伺服器告訴客戶端它可以自己更新資訊。

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