Ubuntu
resolv.conf 和 named.conf 轉發器之間的區別是什麼?
由於我一直在對 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 伺服器)發出單個請求,並讓它們完成所有繁重的工作。它收到對其單個查詢的回复並將回復交回給客戶端。