mDNS(多播 DNSMulticast DNS)允許系統(tǒng)在局域網(wǎng)中廣播查詢其他資源的名稱。Fedora 用戶經(jīng)常在沒(méi)有復(fù)雜名稱服務(wù)的路由器上接有多個(gè) Linux 系統(tǒng)。在這種情況下,mDNS 允許你按名稱與多個(gè)系統(tǒng)通信 —— 多數(shù)情況下不用路由器。你也不必在所有本地系統(tǒng)上同步類似 /etc/hosts
之類的文件。本文介紹如何設(shè)置它。
mDNS 是一個(gè)零配置網(wǎng)絡(luò)服務(wù),它已經(jīng)誕生了很長(zhǎng)一段時(shí)間。Fedora Workstation 帶有零配置系統(tǒng) Avahi(它包含 mDNS)。 (mDNS 也是 Bonjour 的一部分,可在 Mac OS 上找到。)
本文假設(shè)你有兩個(gè)系統(tǒng)運(yùn)行受支持的 Fedora 版本(27 或 28)。它們的主機(jī)名是 castor 和 pollux。
安裝包
確保系統(tǒng)上安裝了 nss-mdns 和 avahi 軟件包。你可能是不同的版本,這也沒(méi)問(wèn)題:
$ rpm -q nss-mdns avahi
nss-mdns-0.14.1-1.fc28.x86_64
avahi-0.7-13.fc28.x86_64
Fedora Workstation 默認(rèn)提供這兩個(gè)包。如果不存在,請(qǐng)安裝它們:
$ sudo dnf install nss-mdns avahi
確保 avahi-daemon.service
單元已啟用并正在運(yùn)行。同樣,這是 Fedora Workstation 的默認(rèn)設(shè)置。
$ sudosystemctl enable --now avahi-daemon.service
雖然是可選的,但你可能還需要安裝 avahi-tools 軟件包。該軟件包包括許多方便的程序,用于檢查系統(tǒng)上的零配置服務(wù)的工作情況。使用這個(gè) sudo
命令:
$ sudo dnf install avahi-tools
/etc/nsswitch.conf
控制系統(tǒng)使用哪個(gè)服務(wù)用于解析,以及它們的順序。你應(yīng)該在那個(gè)文件中看到這樣的一行:
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
注意命令 mdns4_minimal [NOTFOUND=return]
。它們告訴你的系統(tǒng)使用多播 DNS 解析程序?qū)⒅鳈C(jī)名解析為 IP 地址。即使該服務(wù)有效,如果名稱無(wú)法解析,也會(huì)嘗試其余服務(wù)。
如果你沒(méi)有看到與此類似的配置,則可以(以 root 用戶身份)對(duì)其進(jìn)行編輯。但是,nss-mdns 包會(huì)為你處理此問(wèn)題。如果你對(duì)自己編輯它感到不舒服,請(qǐng)刪除并重新安裝該軟件包以修復(fù)該文件。
在兩個(gè)系統(tǒng)中執(zhí)行同樣的步驟 。
設(shè)置主機(jī)名并測(cè)試
現(xiàn)在你已完成常見(jiàn)的配置工作,請(qǐng)使用以下方法之一設(shè)置每個(gè)主機(jī)的名稱:
- 如果你正在使用 Fedora Workstation,你可以使用這個(gè)步驟。
- 如果沒(méi)有,請(qǐng)使用
hostnamectl
來(lái)做。在第一臺(tái)機(jī)器上這么做:$ hostnamectl set-hostname castor
。 - 你還可以編輯
/etc/avahi/avahi-daemon.conf
,刪除主機(jī)名設(shè)置行上的注釋,并在那里設(shè)置名稱。但是,默認(rèn)情況下,Avahi 使用系統(tǒng)提供的主機(jī)名,因此你不應(yīng)該需要此方法。
接下來(lái),重啟 Avahi 守護(hù)進(jìn)程,以便它接收更改:
$ sudosystemctl restart avahi-daemon.service
然后正確設(shè)置另一臺(tái)機(jī)器:
$ hostnamectlset-hostname pollux
$ sudosystemctl restart avahi-daemon.service
只要你的路由器沒(méi)有禁止 mDNS 流量,你現(xiàn)在應(yīng)該能夠登錄到 castor 并 ping 通另一臺(tái)機(jī)器。你應(yīng)該使用默認(rèn)的 .local 域名,以便解析正常工作:
$ ping pollux.local
PING pollux.local(192.168.0.1)56(84) bytes of data.
64 bytes from192.168.0.1(192.168.0.1): icmp_seq=1 ttl=64time=3.17 ms
64 bytes from192.168.0.1(192.168.0.1): icmp_seq=2 ttl=64time=1.24 ms
...
如果你在 pollux ping castor.local
,同樣的技巧也適用?,F(xiàn)在在網(wǎng)絡(luò)中訪問(wèn)你的系統(tǒng)更方便了!
此外,如果你的路由器也支持這個(gè)服務(wù),請(qǐng)不要感到驚訝?,F(xiàn)代 WiFi 和有線路由器通常提供這些服務(wù),以使消費(fèi)者的生活更輕松。
此過(guò)程適用于大多數(shù)系統(tǒng)。但是,如果遇到麻煩,請(qǐng)使用 avahi-browse 和 avahi-tools 軟件包中的其他工具來(lái)查看可用的服務(wù)。
via: https://fedoramagazine.org/find-systems-easily-lan-mdns/
作者:Paul W. Frields 選題:lujun9972 譯者:geekpi 校對(duì):wxy
本文由 LCTT 原創(chuàng)編譯,Linux中國(guó) 榮譽(yù)推出