我有一台 Mac 連接到我自己的路由器,該路由器透過我的 ISP 連接到路由器/數據機,配置如下:
Mac 使用 DHCP 連接至路由器 192.168.1.1。
Mac DNS 設定為 192.168.1.1
在我自己的路由器上,我可以看到許多連接的設備:
rpi-節點-4 192.168.1.4
rpi-節點-1 192.168.1.5
我可以透過 IP ssh 到 192.168.1.4,但如果我嘗試通過主機名,則無法識別:
ssh:無法解析主機名稱 rpi-node-4:提供節點名稱或服務名,或未知
由於路由器知道主機名,並且 Mac 被告知使用 192.168.1.1(路由器)作為 DNS,因此我希望 Mac 能夠解析主機名,但它不起作用。
請注意,我不想/etc/hosts
在Mac上手動編輯檔案(因為我有多台機器,而且因為我使用動態IP,所以我不想每次重新分配IP時都更新3-4個主機檔案)。
有人可以告訴我我哪裡搞砸了嗎?
答案1
您的路由器可能只知道這些 RPi 的名稱,因為這些是它們在發出 DHCP 請求時使用的名稱,而您的路由器可能是您網路的 DHCP 伺服器。
一些家庭閘道路由器能夠讓您為每個 LAN 專用 IP 位址輸入主機名,並且路由器將充當 DNS內容伺服器而不僅僅是 DNS 中繼。看看你的有沒有這個功能,如果有的話就設定一下。
如果它沒有該功能,您可以使用 mDNS 和 DNS-SD(又稱 IETF ZeroConf、Apple Bonjour)建立一個網.local
域,以便您可以透過名稱連接到您的 RPi。我相信 Raspbian 不會預設啟用 mDNS 實現,因此您可能需要執行一些操作,例如sudo apt-get install avahi-daemon
獲取 Avahi,這是一種流行的開源 mDNS 實現。
答案2
設定路由器 DHCP 設定時,您的搜尋域可能已遺失。現在,您的 Mac 電腦不知道在哪裡尋找 IP 的本機主機名稱。
要解決此問題:
- 前往系統偏好設定 -> 網絡
- 從左側欄中選擇您的活動網路介面卡
- 點擊右下角的高級
- 選擇頂部的 DNS 標籤
- 在搜尋網域下輸入您的搜尋網域(我的搜尋網域是 attlocal.net,因為我使用 AT&T。您可能需要進行搜尋才能找到您的搜尋網域)
- 按一下“應用”。您現在應該能夠存取 {hostname}.local