术语表
mDNS
mDNS 是一种本地网络名称协议。浏览器用 xxxx.local 之类的 mDNS 名称在 WebRTC 候选地址中隐藏您的私有 IP。
什么是 mDNS
组播 DNS 让同一本地网络上的设备无需 DNS 服务器就能按名称找到彼此。打印机宣告自己为 printer.local,笔记本为 laptop.local,查询发往网络上每台设备都监听的组播地址。它是 Apple Bonjour 以及大多数“发现网络上的设备”功能背后的技术。
为什么它出现在浏览器测试中
2019 年之前,WebRTC 候选地址收集会把您的局域网私有地址(例如 192.168.1.20)暴露给任何网页。该地址从互联网不可路由,但它在家庭或办公室内是持久标识符,也是网络布局的线索。浏览器现在隐藏它:候选地址中不再是私有地址,而是随机生成的 mDNS 主机名,如 3f2a9c1e-7b4d-4e1a-9f0c-2d5b8a6e4c1f.local。同一网络上的对端可以用 mDNS 解析该名称;互联网上的网页不能,私有地址因此保持隐藏。
随机名称按来源和会话重新生成,所以它也不能用作跟踪标识符。
为什么重要
如果 WebRTC 泄露检测显示的是 .local 名称而非 192.168.x.x 或 10.x.x.x 地址,那是现代的预期行为,不是泄露。仍然重要的是通过 STUN 获得的公网候选地址:如果它暴露了与代理不同的地址,无论本地候选地址什么样,您都有真正的 WebRTC 泄露。
旧浏览器、某些嵌入式浏览器引擎以及关闭了 mDNS 混淆的浏览器仍会暴露原始私有地址。看到它说明浏览器过时或配置异常,这本身就是指纹信号。
如何检查
运行 WebRTC 泄露检测。本地候选地址与公网候选地址分开列出,mDNS 名称会被标明。浏览器指纹页面会注明 WebRTC 是否启用。
常见误解
候选地址中的 mDNS 名称不是地址,网站无法查询它。在那里看到它是安全的。要关注的是公网地址。
