mDNS 是什么
5353 是 mDNS 的 UDP 端口:在没有 DNS 服务器的小型网络里,设备用组播互相询问“谁是 printer.local”,从而实现零配置的名称解析与服务发现。IPv4 组播地址为 224.0.0.251,IPv6 为 ff02::fb;苹果的 Bonjour 与 Linux 上的 Avahi 是常见实现,AirPrint、Chromecast、投屏与智能家居设备都依赖它。由于是组播,它天然不能跨三层路由,也不能做端口映射。
基本信息
| 服务 | mDNS(RFC 6762)/ Bonjour / Avahi |
|---|---|
| 协议 | UDP 5353;组播 224.0.0.251、ff02::fb |
| 配套机制 | DNS-SD(RFC 6763)描述服务类型 |
| 典型用途 | 局域网名称解析与服务发现 |
| 安全等级 | 仅本地链路,不应跨网段放大传播 |
典型使用场景
- 设备发现:打印机、投屏与智能设备自动出现在可用列表
- 本地名称解析:用主机名加 .local 访问同网段设备
- 移动办公:笔记本在家庭与办公网络间切换时无需改配置
- 排障:确认组播是否可达、守护进程是否运行
- 跨网段设计:通过反射器或网关把服务发现延伸到其它 VLAN
服务发现与记录查询
服务发现与记录查询
avahi-resolve -n printer.local # 名称转 IP
avahi-browse -art # 完整服务列表(含解析)
dig @224.0.0.251 -p 5353 -t PTR _http._tcp.local
sudo tcpdump -ni eth0 udp port 5353 -c 20跨 VLAN 的 mDNS 方案要点
跨 VLAN 的 mDNS 方案要点
1) 网关提供 mDNS 反射(Avahi reflector、Bonjour Gateway)
2) 只反射必要服务类型,控制组播域规模
3) avahi-daemon 的反射模式用 allow-interfaces 限制范围
4) 无线网络中评估组播转单播,降低空口开销与其它名称解析机制对照
| 机制 | 端口 | 特点 |
|---|---|---|
| mDNS | 5353/udp 组播 | 本地链路,零配置,不跨三层 |
| LLMNR | 5355/udp 组播 | Windows 传统机制,同样仅本地 |
| NetBIOS 名称 | 137/udp | 老式 Windows 名称解析 |
| 传统 DNS | 53 | 需配置服务器,可跨网段 |
排查顺序建议:先确认客户端组播是否可达,再看守护进程状态,最后检查跨网段反射配置;拦截多发生在交换层与安全策略上,而不在本机防火墙。
mDNS 没有身份校验:任何设备都能声称自己拥有某个 .local 名称或某类服务,从而把客户端引导到伪造的服务上;在共享网络与办公无线中应评估这类抢注与投毒风险。
运维建议
- 需要跨网段发现时统一通过反射器,不在各 VLAN 放开组播
- 只反射必要服务类型,避免组播泛洪
- 关键设备同时登记传统 DNS 名称,减少对本地发现的依赖
- 无线网络评估组播转单播与限速策略