備用 DNS 伺服器無法解析

備用 DNS 伺服器無法解析

我在 Linux 中配置了 DNS 伺服器作為轉送器。
它僅將 DNS 查詢轉送到組織的主 DNS 伺服器。

在 Windows 用戶端(在組織的分公司中)中,主 DNS 設定為自己的 DNS 伺服器,
備用 DNS 伺服器設定為我的(轉發器 DNS)。

如果我的 DNS 伺服器設定為備用,則無法解析。
但是當我的 DNS 伺服器設定為主時,解析就可以了。

當設定為備用 DNS 時,如何使我的 DNS 伺服器正常運作?

答案1

基本的 DNS 解析器(如 Windows 用戶端中的解析器)假設:為其配置的每個 DNS 伺服器都知道或可以找到需要知道的一切,如果一台伺服器說某些內容不存在,則向另一台伺服器詢問第二意見是沒有意義的。

DNS 伺服器在獲取資訊的來源方面可以具有更大的靈活性。許多 DNS 伺服器可以設定為選擇性地轉送請求:「如果請求是關於網域的X.Y.example,則將請求轉送到伺服器 A,如果是其他網域Y.example,則轉送至伺服器B,否則嘗試透過詢問網際網路的DNS 伺服器來自行解決」 」。

但這不是設定 DNS 解析的正常方法。


如果主 DNS 伺服器中的信息是關於網域的Y.example,而您的 DNS 伺服器有關於子網域的信息X.Y.example,那麼主 DNS 伺服器應該有所謂的膠水記錄在其有關域的資訊中Y.example。就像是:

X.Y.example.            IN NS <your.DNS.server.name.>

如果您的 DNS 伺服器位於網域內Y.example(即網域X.Y.example或網域Y.example或其任何其他子網域的一部分),也:

<your.DNS.server.name.> IN A <your DNS server IP address>

NS 記錄將告訴主 DNS 伺服器聯絡您的 DNS 伺服器以取得X.Y.example任何有關網域的資訊。這被稱為DNS 委託。 A 記錄只是提供要連接的位址:a膠水記錄


如果您的名稱伺服器中的資訊與不相關的網域有關,例如Z.other.example,則有以下三個選項:

  • 主網域Z.other.example內容的完整副本,並透過定期檢查您的 DNS 伺服器來自動保持最新狀態。這通常稱為master/slave關係:您的伺服器將是 的主權威機構Z.other.example,但主 DNS 伺服器將完全了解該網域的內容,並且能夠根據下載的資料做出權威答案。

使用 BIND,這意味著您的伺服器將具有以下內容:

options {
    allow-transfer { <IP address of primary DNS server>; };
    # The next line is not absolutely necessary but speeds up propagation of updates:
    also-notify { <IP address of primary DNS server>; }; 
    <... any other options here...>
}; 

主伺服器將具有:

zone "Z.other.example" { 
    type slave; 
    masters { <IP address of your DNS server>; };
};

是的,這意味著該組織的基本的DNS 伺服器將是從屬伺服器Z.other.example僅適用於網域。對於其他域/區域,這不會產生任何影響。

通常這種關係意味著主 DNS 伺服器也可以列在該Z.other.example網域的 NS 記錄中,但是你不必那麼做如果該網域僅供主 DNS 伺服器的使用者內部使用。

  • 或者主 DNS 伺服器可能被設定為有條件地轉送查詢:「如果請求是關於 Z.other.example,則將其轉送到您的 DNS 伺服器而不是執行任何其他操作」。有時,這是透過組織的內部 DNS 網域來完成的,這些網域的存在不應在任何公共 NS 記錄中透露。

為此,主伺服器需要:

zone "Z.other.example" { 
    type forward;
    forwarders { <IP of your DNS server>; };
    forward only;
}; 
  • 或者,如果沒有特殊配置,則 DNS 伺服器必須存在 NS 記錄鏈才能找到您的Z.other.example網域:
    • 根DNS伺服器必須有NS記錄(以及對應的A記錄),指出example頂級網域的DNS伺服器
    • 網域example伺服器必須有指向other.example二級網域的DNS伺服器的NS記錄
    • 且該網域的 DNS 伺服器other.example必須有指向您負責 的 DNS 伺服器的 NS 記錄Z.other.example

這樣,主 DNS 伺服器就能夠找到您的網域,就像網際網路上的任何其他網域一樣。


如果您嘗試讓您的 DNS 伺服器僅向Y.example網域提供一些附加記錄,那是行不通的。

如果 DNS 伺服器對特定網域(不包括委託的子網域,如果有)具有權威性,那麼它必須始終完全了解該網域的內容;對於處於權威地位的 DNS 伺服器來說,不存在「可能」這樣的事情。如果主 DNS 伺服器是該機構的權威機構Y.example,並且在查詢時X.Y.example沒有該記錄且沒有匹配的子網域委託,則其「沒有此類主機/網域」回應將是人類術語:

“我知道關於 Y.example 的一切,而且絕對不存在 XYexample 這樣的東西。”


從技術上講,也許可以讓主伺服器拒絕對您的網域的查詢,以便客戶端會詢問備用 DNS 伺服器,但是我強烈建議反對

這類設定一開始可能看起來有效,但往往會以意想不到的方式失敗,特別是當其中一個或另一個名稱伺服器暫時無法存取時。許多人嘗試過這樣的設置,但都失敗了。學習經驗往往涉及一次痛苦的故障排除過程。不是您的選擇和/或更有經驗的 DNS 管理員會提醒您協助解決問題。

相關內容