dig 從 DNS 伺服器獲得正確的結果,但名稱仍然無法解析

dig 從 DNS 伺服器獲得正確的結果,但名稱仍然無法解析

在什麼條件下會出現以下情況?從內部網路上的給定 OSX 計算機:

$~ cat /etc/resolv.conf
nameserver 10.102.120.7
nameserver 10.102.120.2

來自同一台機器:

$~ dig @10.102.120.7 in.local
<snip> ...
;; QUESTION SECTION:
;in.local.                      IN      A

;; ANSWER SECTION:
in.local.               43200   IN      A       10.102.123.30
<snip> ...

然而,該工作站無法 ping in.local,也無法載入該電腦上 apache 所託管的頁面。 10.102.123.30 已確定啟動(我知道有 2 台 OSX 電腦無法解析 in.local - 但網路上的其他電腦可以)。我還檢查了他們的 /etc/hosts 以查看是否有任何內容可能會幹擾...不知道還要檢查什麼...

答案1

在 MacOS X 上, TLD.local首先由多播 DNS Bonjour/Rendezvous 解析。這表示如果您嘗試將 DNS 伺服器與 tld 一起使用.local,則不會使用 DNS 伺服器對其進行解析。

某些專用網路也會為向其內部 DNS 伺服器註冊的主機使用「.local」網域,即使它不是公共 Internet 上的有效頂級網域。如果您的 Mac 連接到此類網絡,您可能希望它通過使用單播 DNS 與 DNS 伺服器通信來查找以“.local”結尾的主機名,就像查找“www”等主機名一樣.apple.com”在互聯網上。

看:http://support.apple.com/kb/HT3473 和:http://support.apple.com/kb/TA20999

答案2

OS X 有一個作業系統層級的 DNS 快取,您可能需要刷新它 - 就像Solaris/linux/bsd 上的 nscd 一樣。

嘗試dscacheutil -flushcache(在 Leopard 上)或lookupd -flushcache(在 10.5.1 及之前版本上)。

答案3

你剛剛發現了原因使用 .LOCAL 是個壞主意

答案4

我唯一能想到的是您沒有使用 DNS 進行名稱服務,或名稱已被快取。

我對 Linux 比較熟悉,但您可能正在 OSX 的 /etc/ 等效檔案中尋找 nsswitch.conf (或等效檔案),或快取守護程式(Linux 中的 nscd)設定 (nscd.conf) 或狀態。

nsswitch.conf 控制名稱的解析方式。 DNS 只是一種機制。其他包括檔案 (/etc/host)、LDAP 和(我認為)NIS。

nscd 是一個名稱緩存,當您收到對相同名稱的重複請求(例如,從Web 伺服器載入300 個頁面)時,它可以透過將回應快取適當的時間長度(例如,範例dig 輸出中的43200 秒)來幫助更快地解析名稱

相關內容