什么是 mDNS
mDNS 全称 Multicast DNS(多播 DNS),是一种在没有传统 DNS 服务器的局域网里,让设备通过”主机名”互相找到对方的小协议。
一句话场景
你在家里不用配任何 DNS,就能 ping my-phone.local、ssh raspberrypi.local,背后就是 mDNS 在干活。
工作原理
普通 DNS 是”去问 DNS 服务器”,mDNS 则是:
- 每个支持 mDNS 的设备加入组播组
224.0.0.251(IPv4)/ff02::fb(IPv6),端口 5353 - 你想找
raspberrypi.local→ 往组播地址喊一声:”谁叫这个名字?” - raspberrypi 自己应答:”是我,IP 是 192.168.1.88”
- 其他设备把这条记录缓存下来
本质就是 每台设备既是 DNS 客户端,又是自己的 DNS 服务器,不需要中心服务器。
常见实现
| 系统 | 实现 |
|---|---|
| macOS / iOS | Bonjour(苹果搞的,mDNS 就是它推的) |
| Linux | Avahi(也就是上条命令里的 avahi-browse) |
| Windows | 10 以后内置支持,早年是 Apple 装的 Bonjour |
| 智能家居 / ESP32 / 树莓派 | 基本都带 mDNS |
命名规则
一般用 .local 后缀,比如:
raspberrypi.localmy-printer.localiPhone.local
IANA 专门把 .local 保留给了 mDNS,所以不会跟公网 DNS 冲突(虽然 Windows 有时候会捣乱去问公网 DNS……)。
留下评论