使用 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 工作站。

$ 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 工作站,你可以使用这个程序。
  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
...

如果您 p​​ing castor.local,同样的技巧也应该适用于 pollux。 现在通过网络访问您的系统更加方便!

此外,如果您的路由器宣传服务,请不要感到惊讶。 现代 WiFi 和有线路由器通常提供这些服务,以使消费者的生活更轻松。

此过程适用于大多数系统。 但是,如果遇到问题,请使用 avahi-browse 和 avahi-tools 包中的其他工具来查看可用的服务。