Domain-Name-System
為什麼我的伺服器不查詢我的 resolv.conf 中的第二個條目?
我有一個 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
第一個肯定會超時,然後會按順序查詢剩餘的名稱伺服器。