Ubuntu

resolv.conf 和 named.conf 轉發器之間的區別是什麼?

  • November 24, 2009

由於我一直在對 Ubuntu 中的 DNS 創建過程進行故障排除,因此我注意到以下文件似乎是多餘的:

etc/bind/named.conf.options(或 named.conf 的一部分,具體取決於文件​​的設置方式)

forwarders {
     1.2.3.4;
     5.6.7.8;
     9.10.11.12;
};

等/resolv.conf

domain example.com
nameserver 1.2.3.4
nameserver 5.6.7.8
nameserver 9.10.11.12

通常,當進行這樣的觀察時,我會發現我做錯了什麼,所以如果我錯了,請糾正我。似乎named.conf喜歡有機器的net ip,resolv.conf應該有127.0.0.1。除此之外,他們應該有我的 isp 的 dns 的 ip,這將是相同的。謝謝您的幫助。

很難清楚地回答,因為我不知道您要完成什麼:

  • 您想使用自己的 BIND 伺服器管理私有 DNS 區域嗎?
  • 您只是想讓 DNS 解析正常工作嗎?
  • 您是否出於性能原因嘗試設置本地記憶體?

如果您要在您的伺服器上執行本地 DNS 解析器,您將指向/etc/resolv.conf您的本地 BIND 伺服器 (127.0.0.1) 並讓 BIND 從根名稱伺服器開始解析,就像任何其他名稱伺服器一樣。您的named.conf. 嚴格來說,通過保留“轉發器”條目,您將略微減少根名稱伺服器上的負載。

如果您只是想讓 DNS 解析在您的機器上執行,但不需要自己執行 DNS 伺服器,那麼不要擔心named.conf,只需指向/etc/resolv.conf您的 ISP 的 DNS 伺服器。

編輯:

我突然想到我沒有回答你標題中的問題。

  • /etc/resolv.conf是您電腦上的解析器庫(libc 的一部分)使用的文件,每個程序都使用它來請求 DNS 查找。當您的網路瀏覽器想要進行 DNS 查找時,它會呼叫gethostbyname('www.blah.com')(或其派生詞之一)。該函式做了很多事情,其中​​包括讀取/etc/resolv.conf並使用它來確定它可以要求哪個 DNS 伺服器對其執行查找。
  • /etc/named.conf由 BIND 使用。通常,當您向 BIND 發出請求時,它會檢查其本地記憶體,如果沒有分析器,它會詢問根名稱伺服器之一。根伺服器“委託”給(通常)一個 GTLD 或國家級伺服器。然後,這些伺服器將委託給域的所有者。通常它會停在那裡,但有時子域的授權會增加一到兩個級別。這將增加 3 - 5 個查詢以獲得答案。然後將答案添加到本地記憶體並返回給請求的客戶端。如果您指定“轉發器”,BIND 只會向列出的主機之一(通常是您的 ISP 的 DNS 伺服器)發出單個請求,並讓它們完成所有繁重的工作。它收到對其單個查詢的回复並將回復交回給客戶端。

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