Domain-Name-System

為什麼我的伺服器不查詢我的 resolv.conf 中的第二個條目?

  • June 5, 2013

我有一個 CentOS 6.4 盒子。

與此機架中的所有其他盒子一樣,它有兩個 NIC:一個內部 (192.168.1.x) 和一個外部(對世界可見)。

我們在機架中的一台伺服器(192.168.1.11)上執行我們自己的記憶體解析器(使用 Unbound),它配置了一些本地 DNS 條目(mario.local、luigi.local 等),以便我們可以簡單地 ping /ssh/ftp 到“主機名”從任何本地機器到任何其他本地機器,而無需通過外部交換機之一(這會從我們的 ISP 收取費用)。

如果我的 /etc/resolv.conf 看起來像這樣:

search local
nameserver 192.168.1.11
nameserver 8.8.8.8
nameserver 74.82.42.42

我 ping “馬里奧” 我得到:

# ping mario
PING mario.local (192.168.1.3) 56(84) bytes of data.
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.738 ms

但是,本地 DNS 伺服器比 Google 公共 DNS 伺服器慢得多,所以我更願意將它放在列表的首位。因此,如果我將 /etc/resolve.conf 更改為:

search local
nameserver 8.8.8.8
nameserver 192.168.1.11
nameserver 74.82.42.42

我希望對“mario”的 ping 嘗試在 8.8.8.8 上解析 mario.local,失敗,然後查詢列表中的第二個 DNS 伺服器(192.168.1.11)並解析。但相反,我得到:

# ping mario
ping: unknown host mario

知道我做錯了什麼 - 還是我誤解了 resolve.conf 應該如何工作?我想知道它是否與路由有關。

我的期望是,如果第一個 DNS 伺服器無法解析 IP,則第二個 resolv.conf 條目會被觸發,但這不起作用。幫助!

僅當嘗試到達第一個名稱伺服器超時時,解析器才會查詢第二個名稱伺服器。在您的情況下,這不是超時問題,而是解析失敗,因此無需查詢剩餘的名稱伺服器。

您可以通過在第一行添加一個沒有執行名稱伺服器的 IP 以及它下面的實名伺服器來測試這一點 - 像這樣

search local
nameserver 1.2.3.4
nameserver 192.168.1.11
nameserver 8.8.8.8

第一個肯定會超時,然後會按順序查詢剩餘的名稱伺服器。

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