For the complete documentation index, see llms.txt. This page is also available as Markdown.

35.4 零配置网络(mDNS/DNS-SD)

零配置网络(Zero-configuration networking,也称 Zeroconf)是一组简化网络配置的技术,使网络设备无需管理员干预即可自动完成地址分配、域名解析与服务发现。

该功能在嵌入式设备上较为实用。在某些场景下,用户无法通过屏幕或串口获取树莓派的 IP 地址,但需通过 SSH 连接。树莓派 OS 默认启用 Avahi 服务且支持多播 DNS,在此情况下用户可直接使用 ping raspberrypi.local 获取 IP 地址,或直接通过 SSH 连接 raspberrypi.local

零配置网络的主要部分包括:

组成部分
英文名称
功能说明

链路本地寻址

Link-Local Addressing

提供数值型网络地址的自动分配

多播 DNS

mDNS

提供主机名的自动分发与解析

基于 DNS 的服务发现

DNS-SD

提供服务实例的自动发现

Zeroconf 的常用实现是 Avahinss-mdns 可在所有使用 nsswitch(名称服务切换,The Name Service Switch,NSS)的工具中,通过 mDNS 协议查找 *.local 后缀的主机名。

应用程序(ping、ssh 等)
   
    查询 ykla.local
   
nsswitch(名称服务切换)
   
    按顺序查找:files  dns  mdns
   
nss-mdns(NSS 模块)
   
    发送 mDNS 多播查询(UDP 5353)
   
Avahi 守护进程(avahi-daemon)
   
    响应主机名对应的 IP 地址
   
应用程序获得 IP 地址

安装 Avahi 和 nss-mdns

使用 pkg 安装:

使用 Ports 安装:

配置名称服务切换

dns/nss_mdns 安装以下 NSS 模块:

关于上述模块的说明,参见 avahi/nss-mdns

/etc/nsswitch.conf 文件是 nsswitch 的配置文件,源代码位于 lib/libc/net/nsswitch.conf,默认文件内容如下:

为了启用 mDNS,需在 hosts: files dns 行后追加 mdnsmdns6

启用服务

D-Bus 作为 Avahi 的依赖自动安装,将其设为开机自启:

启动 D-Bus 服务:

将 Avahi 守护进程设置为开机自启:

启动 Avahi 服务:

测试服务

执行 ping 命令测试 FreeBSD 的主机名,即可显示 IP 地址。

技巧

上述示例中的 yklaykla.local 为占位符,需要替换为实际的值。

也可查看 IPv6 地址:

与 FreeBSD 主机的实际 IP 地址一致,验证通过。

使用 SSH 连接到该设备:

技巧

本节示例中出现的用户名 ykla 及主机名 ykla 均为示例,请根据自身环境替换为实际用户名和主机名。

最后更新于