使用 mDNS 在 LAN 上輕鬆找到您的系統

多播 DNS 或 mDNS 允許系統在本地網絡上廣播查詢以按名稱查找其他資源。 Fedora 用戶通常在一台路由器上擁有多個 Linux 系統,而沒有花哨的命名服務。 在這種情況下,mDNS 允許您通過名稱與多個系統對話,而無需在大多數情況下接觸路由器。 您也不必在所有本地系統之間保持 /etc/hosts 之類的文件同步。 本文將向您展示如何進行設置。

mDNS 是一種零配置網絡服務,已經存在了很長一段時間。 Fedora 發布了 Avahi,一個包含 mDNS 的零配置堆棧,作為 Workstation 的一部分。 (mDNS 也是 Bonjour 的一部分,可在 Mac OS 中找到。)

本文假定您有兩個運行兼容版本 Fedora(27 或 28)的系統。 他們的主機名是 castor 和 pollux。

安裝包

確保您的系統上安裝了 nss-mdns 和 avahi 包。 您可能有不同的版本,這很好:

                      $ 
                      
                        rpm -q nss-mdns avahi
                      
                      
nss-mdns-0.14.1-1.fc28.x86_64
avahi-0.7-13.fc28.x86_64
                    

Fedora Workstation 默認提供這兩個包。 如果不存在,請安裝它們:

                      $ 
                      
                        sudo dnf install nss-mdns avahi
                      
                    

確保 avahi-daemon.service 單元已啟用並正在運行。 同樣,這是 Fedora Workstation 中的默認設置。

                      $ 
                      
                        sudo systemctl enable --now avahi-daemon.service
                      
                    

雖然是可選的,但您也可以安裝 avahi-tools 包。 該軟件包包括許多有用的實用程序,用於檢查零配置服務在您的系統上的運行情況。 使用這個 sudo 命令:

                      $ 
                      
                        sudo dnf install avahi-tools
                      
                    

/etc/nsswitch.conf 文件控制您的系統使用哪些服務來解析服務以及以何種順序。 您應該在該文件中看到這樣一行:

                      hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
                    

注意 mdns4_minimal [NOTFOUND=return] 命令。 它們告訴您的系統使用多播 DNS 解析將主機名解析為 IP 地址。 即使該服務有效,如果名稱未解析,也會嘗試其餘服務。

如果您沒有看到與此類似的設置,您可以編輯它(作為 root 用戶)。 然而,nss-mdns 包會為你處理這個。 如果您覺得自己編輯它不方便,請刪除並重新安裝該包以修復該文件。

按照上述步驟進行兩個系統.

主機名配置和測試

現在您已經完成了常見的配置工作,可以通過以下方式之一配置每個主機名:

  1. 如果您使用的是 Fedora Workstation,則可以使用此過程。
  2. 如果沒有,請使用 hostnamectl 來獲得榮譽。 對第一個框執行此操作:
                              $ 
                              
                                hostnamectl set-hostname castor
                              
                            
  3. 您還可以編輯 /etc/avahi/avahi-daemon.conf 文件,取消註釋主機名配置行並在那裡設置名稱。 但是,默認情況下,Avahi 使用系統提供的主機名,因此不應該你需要這個方法。

接下來,重新啟動 Avahi 守護進程,以便它獲取更改:

                      $ 
                      
                        sudo systemctl restart avahi-daemon.service
                      
                    

然後正確設置你的另一個盒子:

                      $ 
                      
                        hostnamectl set-hostname pollux
                      
                      
$ 
                      
                        sudo systemctl restart avahi-daemon.service
                      
                    

只要您的網絡路由器不拒絕 mDNS 流量,您現在應該能夠登錄到 castor 並 ping 另一個盒子。 您必須使用默認的 .local 域名進行解析才能正常工作:

                      $ 
                      
                        ping pollux.local
                      
                      
PING pollux.local (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1 (192.168.0.1): icmp_seq=1 ttl=64 time=3.17 ms
64 bytes from 192.168.0.1 (192.168.0.1): icmp_seq=2 ttl=64 time=1.24 ms
...
                    

如果您 ping castor.local,同樣的技巧也應該適用於 pollux。 現在通過網絡訪問您的系統要方便得多!

另外,如果您的路由器宣傳服務,請不要感到驚訝。 現代有線和無線路由器通常提供這些服務,以使消費者的生活更輕鬆。

此過程適用於大多數係統。 但是,如果你有問題,可以使用 avahi-browse 和 avahi-tools 包中的其他工具來查看有哪些服務可用。

相關文章