聽同事說:某系統因需同時存取多個獨立 AD 網域(例如:DomainA 與 DomainB),故網卡設有多台 DNS,將 DomainA 及 DomainB 的 Domain Controller 都納入,因此能做到解析 xxx.domaina.lab 及 yyy.domainb.lab 兩種來自不同網域的主機 IP。

這個說法顛覆了我的認知。依我的理解,Windows 可以設定多台 DNS 沒錯,但原則上會使用第一筆設定,只有第一 DNS 主機出問題無法運作時才會使用第二 DNS 作為備援。

以 Windows 11 的設定介面為例,多 DNS 的欄位命名為 Preferred 及 Alternative,為優先使用及替代方案的意思,後者我會解讀成「備胎」或「備援」性質:

本草網目可找到類似說明:

If the DNS Client service does not receive a response from the first DNS server on the preferred network adapter within one second, it sends the query to the next DNS server on the preferred interface and first DNS servers on all other network adapters and waits one (1) second for a response.

簡單來說,第二台 DNS 只有在第一台 DNS 沒有回應時才會派上用場。而我在 Q&A 論壇也找到相關討論支持此一說法:

If DNS client does not receive a response from primary DNS server, then it will send DNS query to secondary DNS server. A negative response, such as "name not found" is also considered a valid response.

If the primary fails to reply then the alternate would be used. If the primary returns a reply that cannot resolve the alternate is not used.

最後透過實測來驗證,我設定了 8.8.8.8 及 1.1.1.1 兩台 DNS:

執行 ping www.no-such-domain.net 查詢不存在的 www.no-such-domain.net,8.8.8.8 回應無法解析後就結束。

若設定 4.4.4.4 (無此 DNS 主機,預期不會有回應) 及 1.1.1.1,查詢不存在的網域名稱,則會在 4.4.4.4 無回應後改查詢 1.1.1.1,得到無法解析的回應:

由以上實驗結果,可做為「只有在第一 DNS 失效時,第二 DNS 才會上場」的佐證。當第一 DNS 回應無法解析,Windows 並不會改問第二 DNS。也就是說文章一開始說的同時設 DomainA 及 DomainB DC 當 DNS,且 DomainA 與 DomainB 彼此不相識,若 DomainA DC 功能正常,理論上只能解析 DomainA 的網域名稱,查不到 DomainB 的資料才對。

但同事說的設多個 DNS 可以解析多個 AD 網域名稱是怎麼一回事。看了同事的示範,依據軟體 Log 出現逐台查詢的記錄,合理推論該軟體實作了自訂的 DNS 查詢邏輯,才做同時涵蓋不同網域的效果,結案。


Comments

# by Jin Yu Zhang

好奇該同事是用什麼軟體實作多個 DNS 共存的

# by Jeffrey

to Jin Yu Zhang, 某種網管用途套裝軟體,因為要盤點及管理所有網路上的設備,故有此需求。

# by rogerroan

若是2張網卡是不是就能做到,分別是2個網段2個domain,走各自的gateway

Post a comment