設定 subdomain.localhost 並將其解析為 127.0.0.1 的所有步驟?

設定 subdomain.localhost 並將其解析為 127.0.0.1 的所有步驟?

我突然對本地主機上的子網域不起作用感到固執。我的/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

dighostnslookup都繞過系統名稱解析器,直接查詢DNS。因此,他們不會看到 /etc/hosts 中定義的名稱(除非它們是DNS 服務中定義的),或任何 mDNS(又稱 Bonjour).local 名稱,或目錄服務中的電腦項目,或...

如果您想查看系統解析器看到的內容,最好的工具是dscacheutil.不幸的是,它的語法相當笨拙( ),因此使用系統名稱解析器之類dscacheutil -q host -a name alomvar.localhost的東西通常會更快。ping但如果您想要完整的詳細資訊(例如,名稱是否解析為多個位址),那麼dscacheutil這是正確的選擇。

相關內容