
我在 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伺服器必須有NS記錄(以及對應的A記錄),指出
這樣,主 DNS 伺服器就能夠找到您的網域,就像網際網路上的任何其他網域一樣。
如果您嘗試讓您的 DNS 伺服器僅向Y.example
網域提供一些附加記錄,那是行不通的。
如果 DNS 伺服器對特定網域(不包括委託的子網域,如果有)具有權威性,那麼它必須始終完全了解該網域的內容;對於處於權威地位的 DNS 伺服器來說,不存在「可能」這樣的事情。如果主 DNS 伺服器是該機構的權威機構Y.example
,並且在查詢時X.Y.example
沒有該記錄且沒有匹配的子網域委託,則其「沒有此類主機/網域」回應將是人類術語:
“我知道關於 Y.example 的一切,而且絕對不存在 XYexample 這樣的東西。”
從技術上講,也許可以讓主伺服器拒絕對您的網域的查詢,以便客戶端會詢問備用 DNS 伺服器,但是我強烈建議反對。
這類設定一開始可能看起來有效,但往往會以意想不到的方式失敗,特別是當其中一個或另一個名稱伺服器暫時無法存取時。許多人嘗試過這樣的設置,但都失敗了。學習經驗往往涉及一次痛苦的故障排除過程。不是您的選擇和/或更有經驗的 DNS 管理員會提醒您協助解決問題。