
在什麼條件下會出現以下情況?從內部網路上的給定 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 秒)來幫助更快地解析名稱