avahi-daemon 和“.local”域問題
我有一個24/7執行的基於****Ubuntu 16.04的 HTPC/媒體伺服器。據我所記得使用官方 Ubuntu 發行版,我一直遇到avahi-daemon問題。這個問題經常在網上討論。有些人決定只刪除守護程序,但是,我實際上需要它,因為我正在執行 CUPS 伺服器並使用 Kodi 作為我的 AirPlay 接收器。
問題
mDNS/DNS-SD 本質上與單播 DNS 區域 .local 不兼容。我們強烈建議不要在這樣的網路設置中使用 Avahi 或 nss-mdns。注意:nss-mdns 通常不與 Avahi 捆綁在一起,需要單獨下載和安裝。(avahi.org)
症狀很簡單 - 正常執行大約 2-4 天后,網路連接將斷開,並將記錄下來
Mar 17 18:33:27 15 avahi-daemon[1014]: Withdrawing address record for 192.168.1.200 on enp3s0. Mar 17 18:33:27 15 avahi-daemon[1014]: Leaving mDNS multicast group on interface enp3s0.IPv4 with address 192.168.1.200. Mar 17 18:33:27 15 avahi-daemon[1014]: Interface enp3s0.IPv4 no longer relevant for mDNS.
如果您重新連接乙太網插頭或重新連接軟體端,網路將毫無問題地恢復。
可能的解決方案
官方 wiki 上列出了三個解決方案,自2016 年 6 月以來一直沒有功能,所以我提供了一個非直接的archive.org連結
1.) 編輯**/etc/nsswitch.conf**從
"hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4"
到
hosts: files dns mdns4
2.) 修改**/etc/avahi/avahi-daemon.conf**
從
domain-name=.local
到
domain-name=alocal
3.)“要求管理員移動 .local 區域”(如維基上所說)
我做了什麼
第一個解決方案似乎對我不起作用 - 守護程序仍然有效,但是,網路將像以前一樣出現故障(公平地說,在 wiki 上確實說*“* Y our Mileage May Vary ” )
第二種解決方案導致守護程序看似正常執行(如果您查看日誌則沒有錯),但**iOS 設備無法將機器“**視為”列印機或 AirPlay 接收器(以及我的 Windows 機器上的 iTunes)
第三種解決方案很棘手,因為我並不精通網路如何運作的*“來龍去脈” ;*而且我不確定我是否真的嘗試過。這就是我的意思:在執行Asuswrt-Merlin的華碩路由器上,我進入了設置子類別 /LAN/DHCP 伺服器/基本配置。在那裡,我將“ RT-AC68U’s Domain Name ”設置為“lan”(我在網上看到的一個域名,因為它不會與任何東西沖突,不像“local”)。據我了解,這就是“移動 .local 區域”的意思。如果這實際上是正確的,那麼這個解決方案對我也不起作用。
結論
所以我該怎麼做?我已經與這個問題作鬥爭了 4 個多月了,網上的每個答案都歸結為我已經嘗試過的答案;坦率地說,我完全迷路了。提前致謝!
我有同樣的問題。我有一個帶有 Mac 的家庭網路,他們希望 avahi/bonjour 和 .local 域能夠正確共享。我的 ISP 提供了一個 DSL 路由器,它提供私有 IP 地址 (192.168.1.*) 並提供本地域 (attlocal.net)。然而,它也作為 .local 單播域的權威做出響應——即使它實際上並沒有。這是一個禁忌,但他們還是這樣做了。我留下了一個網路,Mac 可以發現並連接到其他 Mac,Linux 可以看到 avahi 服務,但無法連接到它們。
症狀: 如果您的 linux 系統顯示服務但無法通過 nautilus 連接。如果 DLNS 服務無法連接。如果
ping hostname.local
解決不了。最後,如果dig local
為您的路由器/ISP 提供權限部分結果。什麼對我有用:創建一個
/etc/mdns.allow
包含以下兩行的文件.local .local.
然後編輯並在以將項目替換為開頭
/etc/nsswitch.conf
的行中。結果對我來說是這樣的:hosts:``mdns4_minimal``mdns4
hosts: files mdns4 [NOTFOUND=return] dns
最後重新啟動或
sudo systemctl restart network
. 這在 Ubuntu 18 到 21 以及 Debian Stretch 和 Buster 上對我有用,包括在 Raspberry Pi 上。因此,在 Ubuntu 上瀏覽文件中的其他位置(nautilus)時,我可以看到並附加到 samba 共享、AFP 共享甚至 SSH 埠。為什麼一開始就壞了?
mdns_minimal
沒有工作,但mdns4
沒有。這不是預期的結果,我試圖報告一個錯誤,mdns_minimal
但後來我在他們的 GitHub 網站上找到了一個明確的答案:https ://github.com/lathiat/nss-mdns 。mdns_minimal
除非兩個域都是 .local 並且 IPv4 來自 169.254 自配置範圍,否則將無法解析。它也不會查看/etc/mdns.allow
文件。因此,如果您需要解析 .local 並且沒有自配置地址,則可能需要nsswitch.conf
如上所述替換它。
我認為第三種解決方案是當您可以訪問路由器配置時要走的路。我會嘗試將“RT-AC68U 的域名”設置為空白。
我要做的下一件事是執行類似wireshark的東西,並觀察avahai-daemon發送和接收的數據包,以及從任何以
.local
…結尾的域名發送和接收的任何數據包,如果avahai以外的東西正在設置LAN域名,.local
你會在那裡找到它。這個問題也有可能完全是另外一回事,wireshark 也可能會告訴你。
如果您完全使用 Avahai 來為網路上的機器分配域名,您可以考慮使用 dnsmasq。你可以在你的 RT-AC88U 路由器上執行它,或者從你的 Ubuntu 機器上執行它(事實上,它可能已經在你的 ubuntu 機器上執行了,你只需要調整配置文件)。