無法解析 LAN 上的 hostname.local
我曾經能夠
ssh user@hostname.local
在我的區域網路上的機器之間進行連接,但它不再工作了。我當然可以使用 IP 進行 ssh,但它是 DHCP,因此它可能會不時更改。兩台機器都執行 Debian 9.12,一台是 Windows 主機中的虛擬機,但它仍然可以工作;我沒有弄亂配置文件,只是定期更新。ping hostname.local ping: hostname.local: Name or service not known
(這可能與我從法語翻譯的資訊不完全一樣)
ssh hostname.local ssh: Could not resolve hostname hostname.local: Name or service not known
(ssh 輸出英文)
來自 avahi.org:
Avahi 是一個通過 mDNS/DNS-SD 協議套件促進本地網路上服務發現的系統
我研究過
/etc/resolv.conf
,/etc/avahi/avahi-daemon.conf
,/etc/nsswitch.conf
但它是標準的開箱即用配置。
/etc/resolv.conf
(network-manager
每次啟動時重置)# Generated by NetworkManager search lan nameserver xx.xx.xx.xx # DNS IPs obtained from DHCP nameserver xx.xx.xx.xx
man resolv.conf
表示search
預設情況下該列表僅包含本地域名(類似這樣,我從法文手冊頁翻譯);不應該local
代替lan
嗎?我嘗試更改它並立即對我的區域網路上的另一台主機執行 ping 或 ssh(不重新啟動網路管理器),但它不起作用。當我重新啟動網路管理器時,它會重寫
/etc/resolv.conf
並設置search lan
.
/etc/nsswitch.conf
(預設,我沒有做任何更改)# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat group: compat shadow: compat gshadow: files hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
我嘗試使用 and 發現依賴於 avahi (zeroconf / Bonjour) 的主機和服務
avahi-browse
,nbtscan
但它們似乎只找到它們執行的主機。(我知道這可能是其他問題的重複,但我沒有找到任何答案,而且我沒有足夠的聲譽做任何事情)
找到了 !
看來我的路由器確實有一個 DNS 伺服器:
nslookup host_ip router_ip Server: 192.168.1.254 Address: 192.168.1.254#53 69.1.168.192.in-addr.arpa name = hostname.lan.
所以這回答了
.local
vs的.lan
問題。在最近的 Debian 中,本地域是.lan
.仍然,
ping hostname.lan
返回未知主機。感謝https://askubuntu.com/questions/623940/network-manager-how-to-stop-nm-updating-etc-resolv-conf,我發現這
/etc/resolv.conf
是一個符號連結/var/run/NetworkManager/resolv.conf
;所以我不得不用我自己的替換它resolv.conf
:search lan nameserver 192.168.1.254
以便它使用路由器的 DNS(如有必要,它將路由查詢)。
重新啟動網路管理器
systemctl restart network-manager
,它就像一個魅力:$ ping hostname.lan PING hostname.lan (192.168.1.69) 56(84) bytes of data. 64 bytes from hostname.lan (192.168.1.69): icmp_seq=1 ttl=64 time=2.02 ms
(
ping google.fr
以確保處理 WAN 查詢)