我们的 Web 应用程序依赖于访问运行浏览器的计算机的私有 IP。 (计算机在无法访问互联网的专用网络中运行,因此我们不担心安全风险。)
我们之前通过在 Microsoft Edge 中禁用标志 enable-webrtc-hide-local-ips-with-mdns(菜单选项“匿名化 WebRTC 公开的本地 IP”)来实现此目的。 Chrome 中也提供了相同的标志。
但似乎这个选项在最近的 Chromium 更新中已被删除,因为我无法再在 Chrome 或 Edge 中找到该标志。
是否有解决方法可以实现相同的目的,即允许浏览器访问私有IP?
如果您与客户端在同一网络,您可以像浏览器一样从 mDNS 获取客户端的 IP 地址。该过程在 https://datatracker.ietf.org/doc/html/draft-ietf-rtcweb-mdns-ice-candidates-04
中进行了解释简而言之,每当您收到以
connection-address
结尾且以 .local
结尾的候选者时,请使用 mDNS 解析该地址。如果您与客户端位于同一网络,这将为您提供客户端的 IP 地址。如果您不在同一网络上,那么这将不会产生任何结果,这是出于隐私原因所需的结果。
请注意,此协议并不安全:本地网络上的攻击者可能会使用自己的地址回答所有 mDNS 查询,这将导致您连接到攻击者。因此,在获得客户端地址后,您必须小心地对其进行身份验证。
chrome://flags/#enable-webrtc-hide-local-ips-with-mdns