
我有這樣的情況:
Raspberry Pi 3 設定為 WiFi 接入點(依照https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/)和網路伺服器。我想給它一個主機名,比如說,它可以在本地網路上從任何客戶端解析 - 無論它們是有線還是無線連接 - 這樣當我在任何瀏覽器(Firefox,Chrome)中myrpi
輸入網址時http://myrpi
我首先發現這個:
- http://www.howtogeek.com/167190/how-and-why-to-assign-the-.local-domain-to-your-raspberry-pi/
- http://www.howtogeek.com/167195/how-to-change-your-raspberry-pi-or-other-linux-devices-hostname/
所以,我就跟著去了。現在我在 RPi 上有:
- 在
/etc/hosts
->127.0.1.1 myrpi
- 在
/etc/hostname
->myrpi
然後我sudo apt-get install avahi-daemon
在 RPi 上執行此操作並重新啟動。
然後我在 Ubuntu PC 上嘗試從命令列(作為 WiFi 客戶端連接到 RPi):
$ ping myrpi.local
PING myrpi.local (172.24.1.1) 56(84) bytes of data.
64 bytes from 172.24.1.1: icmp_seq=1 ttl=64 time=1.54 ms
...
$ wget -O- myrpi.local
Resolving myrpi.local (myrpi.local)... 172.24.1.1
Connecting to myrpi.local (myrpi.local)|172.24.1.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
...
<p>This is the default web page for this server.</p>
...
所以,到目前為止,這看起來不錯 - 但如果我http://myrpi.local/
在 Ubuntu PC 上的 Firefox 或 Chromium 中輸入 Web 位址,則會收到「找不到伺服器」。
這可能和Ubuntu上Avahi的狀態有關係:
[已解決] 無法存取公司 LAN 上 .local 網域中的伺服器
這些在 Ubuntu 中不起作用。這是因為 Ubuntu 預設安裝 AVAHI Zeroconf mDNS 系統,將其配置為「擁有」.local 網域,並在主機名解析順序中將其優先於常規 DNS。
- 173804 – [rfe]在瀏覽器中加入對 Bonjour (Rendezvous/zeroconfig) 的支持
- https://stackoverflow.com/questions/29637622/resolve-mdns-local-url-in-browser-address-bar
- PC版Google Chrome無法辨識「.local」域名
所以,我想,我並不真正關心是否.local
附加到域名 - 我只是認為事情應該是這樣完成的。所以我嘗試直接從 Ubuntu PC 呼叫主機名稱:
$ ping myrpi
PING myrpi (127.0.1.1) 56(84) bytes of data.
64 bytes from myUbuntuLaptop (127.0.1.1): icmp_seq=1 ttl=64 time=0.022 ms
...
$ wget -O- http://myrpi/
--2017-01-26 13:38:56-- http://myrpi/
Resolving myrpi (myrpi)... 127.0.1.1
Connecting to myrpi (myrpi)|127.0.1.1|:80... failed: Connection refused.
這裡甚至不起作用wget
(顯然,Firefox 或 Chromium 瀏覽器也不起作用),儘管原因很清楚 - 這裡myrpi
解析為 127.0.1.1,這是 RPi 中逐字寫入的內容/etc/hosts
- 但一旦在Ubuntu 筆記本電腦上,相同的位址意味著“這台筆記型電腦”,因為它是一個環回筆記型電腦,而且由於我的 Ubuntu 筆記型電腦上沒有運行網路伺服器,所以整個過程失敗。
現在 - 有趣的是:在這個設定中,Windows PC(我認為是 Windows 7)myrpi.local
解析為192.168.0.51
- 並且網頁http://myrpi.local/
在 Windows 上的 Firefox 和 Chrome 中都可以正常工作?
作為最後的措施,我嘗試/etc/nsswitch.conf
對 RPi 進行更改:
# hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 # original
hosts: files dns mdns4 mdns4_minimal
....然後重新啟動 - 然而,Ubuntu 上的瀏覽器仍然無法存取http://myrpi/
或http://myrpi.local/
.我的/etc/resolv.conf
RPi上仍然沒有變化。
那麼,我如何.local
為 Raspberry Pi 提供一個在本機網路上可解析的名稱(或不可解析),以便同一本機網路上的任何其他 PC 都可以從 Raspberry Pi 檢索網頁伺服器內容,無論運行什麼作業系統和瀏覽器在那台電腦上?