少于 1 分钟阅读 次阅读

mDNS 全称 Multicast DNS(多播 DNS),是一种在没有传统 DNS 服务器的局域网里,让设备通过”主机名”互相找到对方的小协议。

一句话场景

你在家里不用配任何 DNS,就能 ping my-phone.localssh raspberrypi.local,背后就是 mDNS 在干活。

工作原理

普通 DNS 是”去问 DNS 服务器”,mDNS 则是:

  1. 每个支持 mDNS 的设备加入组播组 224.0.0.251(IPv4)/ ff02::fb(IPv6),端口 5353
  2. 你想找 raspberrypi.local → 往组播地址喊一声:”谁叫这个名字?”
  3. raspberrypi 自己应答:”是我,IP 是 192.168.1.88”
  4. 其他设备把这条记录缓存下来

本质就是 每台设备既是 DNS 客户端,又是自己的 DNS 服务器,不需要中心服务器。

常见实现

系统 实现
macOS / iOS Bonjour(苹果搞的,mDNS 就是它推的)
Linux Avahi(也就是上条命令里的 avahi-browse
Windows 10 以后内置支持,早年是 Apple 装的 Bonjour
智能家居 / ESP32 / 树莓派 基本都带 mDNS

命名规则

一般用 .local 后缀,比如:

  • raspberrypi.local
  • my-printer.local
  • iPhone.local

IANA 专门把 .local 保留给了 mDNS,所以不会跟公网 DNS 冲突(虽然 Windows 有时候会捣乱去问公网 DNS……)。

留下评论