我突然對本地主機上的子網域不起作用感到固執。我的/etc/hosts
文件如下所示:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 develop2win.de
127.0.0.1 develop2win.de
127.0.0.1 alomvar.localhost
像這樣將一個 IP 的所有主機名稱放在一行中也不起作用:
127.0.0.1 localhost alomvar.localhost develop2win.de www.develop2win.de
我還使用以下命令重新啟動了適用於 OS X 10.9 Mavericks 的 DNS 解析器:
dscacheutil -flushcache; sudo killall -HUP mDNSResponder
但nslookup alomvar.localhost
在終端機上發出會產生以下結果:
Server: 192.168.178.1
Address: 192.168.178.1#53
** server can't find alomvar.localhost: NXDOMAIN
這是我本地網路中路由器的IP。在這種情況下,解決方案似乎會跳過 localhost 主機檔案。先前該進程develop2win.de
已成功解析並指向本機 Apache 虛擬主機。但現在連這個都不再運作了,與上面相同的錯誤(WTF?)。然而,尋找普通localhost
內容仍然可以正常工作:
Server: 192.168.178.1
Address: 192.168.178.1#53
Name: localhost
Address: 127.0.0.1
更新1: 我也重啟了,沒有任何改變。看起來 DNS 查詢根本沒有在本地解析,而是發送到我的路由器。
我缺什麼?是否有人嘗試在 OS X Mavericks 上為 localhost 設定子網域?這甚至與 Apache 無關,而只是 DNS 的問題。
這裡有一個系統偏好設定中我的 DNS 配置的螢幕截圖, 順便一提。由於我還沒有足夠的聲譽來嵌入圖像,因此這是一個指向外部網站的連結。
更新2:正如 dave_thompson_085 指出的那樣,我在終端機中執行了檢查host
和命令。ping
對於本機,它工作正常:
$ host localhost
localhost has address 127.0.0.1
但對於子域則不然:
$ host alomvar.localhost
Host alomvar.localhost not found: 3(NXDOMAIN)
Ping 本機也可以正常運作:
$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.048 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.078 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.085 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.076 ms
^C
--- localhost ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.048/0.072/0.085/0.014 ms
現在,令人惱火的是,它也適用於子網域:
$ ping alomvar.localhost
PING alomvar.localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.039 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.042 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.075 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.091 ms
^C
--- alomvar.localhost ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.039/0.062/0.091/0.022 ms
如何 ping 沒有問題但無法解析子域?顯然,當我在互聯網上查看其他人是如何做到這一點時,它應該像這樣工作。我並不是網路方面的高手。我可能破壞了其他東西而不是設置它直接需要的東西。
我還在dig
本機主機和子網域上執行。輸出相當長,我認為這個問題已經夠混亂了。看這個文件用於挖掘輸出。
更新3:當我的 Mac 與網路斷開連接(禁用乙太網路適配器)dig
並且host
查找本地主機也失敗時。
更新4:我發現它可以在瀏覽器中顯示 Apache 虛擬主機正在監聽指定的主機。這不是問題的解決方案,而是我可以生活和工作的環境。不過,我還是有興趣解決這個問題。如果有人有任何進一步的想法,請告訴我。
答案1
dig
、host
、nslookup
都繞過系統名稱解析器,直接查詢DNS。因此,他們不會看到 /etc/hosts 中定義的名稱(除非它們是也DNS 服務中定義的),或任何 mDNS(又稱 Bonjour).local 名稱,或目錄服務中的電腦項目,或...
如果您想查看系統解析器看到的內容,最好的工具是dscacheutil
.不幸的是,它的語法相當笨拙( ),因此使用系統名稱解析器之類dscacheutil -q host -a name alomvar.localhost
的東西通常會更快。ping
但如果您想要完整的詳細資訊(例如,名稱是否解析為多個位址),那麼dscacheutil
這是正確的選擇。