mDNS 组播:LANDrop 怎么自动找到你
组播是什么
LANDrop 在局域网内发现其他设备,核心机制是 mDNS(Multicast DNS)组播——每台运行 LANDrop 的设备会在局域网的标准组播地址 224.0.0.251(IPv4)或 FF02::FB(IPv6)上主动广播自己的设备名和公钥 ID。其他设备收到广播后就会把对方放进自己的 Devices 列表,用户不需要再手动输入 IP 地址或二维码。
这和 v2.0 之前的老版本有本质区别:v1.x 用的是 UDP 广播,在现代路由器环境下经常被 NAT、VLAN 或 Wi-Fi 隔离墙拦截,所以老版本"找不到设备"的情况非常常见。v2.0 升级到组播后,配合公钥 ID 的设备识别机制,发现可靠性大幅提升。

为什么有时还是找不到
组播虽然比广播可靠,但以下几种情况仍然会阻断发现:
| 场景 | 原因 |
|---|---|
| 两台设备在不同 Wi-Fi | 比如一台连 2.4GHz、一台连 5GHz,或者一台连访客网络、一台连主网络——多数路由器默认在这些子网之间隔离组播流量 |
| 路由器关闭了 IGMP Snooping | IGMP Snooping 是现代交换机/路由器用来优化组播的机制,关掉它组播包会被直接丢弃 |
| Windows 防火墙拦截 | 这是最常见的原因——第一次启动 LANDrop 时 Windows 会弹权限框,如果用户点了"取消"或只勾了公网而没勾专用网络,UDP 端口就被封死了 |
| Android/iOS 没给本地网络权限 | iOS 14+ 和 Android 12+ 都要求 App 主动申请本地网络访问权限,首次启动拒绝后发现服务会静默失败 |
| IKEv2 / IPsec VPN | 某些企业 VPN 会直接把组播流量吞掉 |
发现与传输是两回事
值得单独提一句:发现失败 ≠ 传输一定失败。v2.7 以后的 LANDrop 增加了手动通过 IP 地址添加设备的能力——即使组播完全不通,只要你知道对方的局域网 IP(或者对方从某个共享渠道拿到你的 IP),依然可以建立点对点传输。发现是便利,传输是核心能力。