
我曾經能夠在 LAN 上的電腦之間進行通信,但它不再工作了。當然,我可以使用 IP 進行 ssh,但它是 DHCP,因此它可能會不時變更。兩台機器都運行 Debian 9.12,其中一台是 Windows 主機中的虛擬機,但它仍然可以工作;我沒有亂搞配置文件,只是定期更新。ssh [email protected]
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
我嘗試使用avahi-browse
和發現主機和服務nbtscan
,它們依賴 avahi (zeroconf / Bonjour),但它們似乎只找到它們運行的主機。
(我知道這可能與其他問題重複,但我沒有找到任何答案,而且我沒有足夠的聲譽來做任何事情)
答案1
找到了 !
看來我的路由器確實有 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 查詢)
答案2
就我而言,無法透過 .local 前綴存取網路上的某一特定主機的原因很簡單,即該主機上的 avahi 守護程式服務已停止:
[~][0]$ service avahi-daemon status
○ avahi-daemon.service - Avahi mDNS/DNS-SD Stack
Loaded: loaded (/lib/systemd/system/avahi-daemon.service; disabled; preset: enabled)
Active: inactive (dead)
TriggeredBy: ○ avahi-daemon.socket
[~][3]$ service avahi-daemon start
[~][0]$
█[~][0]$ ping asus.local
PING asus.local (192.168.1.204) 56(84) bytes of data.
64 bytes from 192.168.1.204 (192.168.1.204): icmp_seq=1 ttl=64 time=0.892 ms
64 bytes from 192.168.1.204 (192.168.1.204): icmp_seq=2 ttl=64 time=0.848 ms
64 bytes from 192.168.1.204 (192.168.1.204): icmp_seq=3 ttl=64 time=0.784 ms
^C
答案3
您不需要 FQDN;只需使用主機部分即可。例如:
`[root@darouter ~]# arping -I enp2s0f1 matilda
ARPING 192.168.100.12 from 192.168.100.254 enp2s0f1
Unicast reply from 192.168.100.12 [D0:67:E5:EB:37:25] 0.759ms
Unicast reply from 192.168.100.12 [D0:67:E5:EB:37:25] 0.801ms
Unicast reply from 192.168.100.12 [D0:67:E5:EB:37:25] 0.732ms
Sent 3 probes (1 broadcast(s))
Received 3 response(s)`
我使用了琶音,因為 matilda 是windoz盒子;這比弄清楚如何允許傳入 ping 更容易。我會停用路由器上的 dns。那裡應該是放置 dns 伺服器 IP 的地方,以便您可以使用內部 dns。如果您的內部 dns 未依主機名稱解析,您需要找出 dns 設定損壞的位置。我不久前也遇到過這個問題。不幸的是那是不久前的事了;由於我不記得昨天做了什麼,所以我無法給你一個明確的答案來說明我做了什麼來解決這個問題。
希望這可以幫助!
托德