WebRTC 泄漏详解:浏览器如何暴露你的真实 IP
浏览器中的 WebRTC 如何在你使用 VPN 的情况下仍然暴露真实 IP 地址、如何用 Colitu WebRTC 泄漏测试检查,以及如何安全地堵上这个缺口。

你开启了 VPN,某个网站显示的是服务器所在的国家,一切看起来都正常。然而,浏览器的一项功能仍然可能把你的真实 IP 地址交给网站:WebRTC。它并不影响每一种配置,检查起来很容易,而且一旦理解了它的工作方式,修复也很容易。
什么是 WebRTC
WebRTC 是一项直接在浏览器中运行、无需插件的视频通话、屏幕共享和文件传输技术。为了尽可能直接地连接两个人,浏览器会收集可能的网络路径,称为 ICE 候选:
- host 候选:设备自身的本地地址;
- server-reflexive 候选:从互联网上看到的你的公网地址,通过询问 STUN 服务器获得;
- relay 候选:TURN 中继服务器上的地址,在没有任何直连路径可用时使用。
网页只需几行 JavaScript 就能启动这个过程,而对于基本的数据通道,浏览器不会请求权限。
泄漏是如何发生的
STUN 请求是一个小的 UDP 数据包。它是否通过 VPN,取决于 VPN 与你的系统是如何连接的:
- 整机 VPN(TUN 或系统 VPN 服务)。 所有流量,包括 UDP,都会进入隧道。STUN 服务器看到的是 VPN 服务器的地址,页面得知的也是这个地址。没有泄漏。
- 仅代理。 浏览器通过代理发送网页,但 WebRTC 的 UDP 请求可能直接发出。这时 STUN 服务器看到的是你的真实公网地址,页面可以读取到它。
所以,这种泄漏并不是 WebRTC 的漏洞:浏览器只是如实地报告了它的 UDP 流量所走的路径。
什么不算泄漏
现代浏览器会把你的本地网络地址隐藏在一个以 .local 结尾的随机名称(mDNS 名称)后面。如果测试显示这样的名称,那是预期之内的,无害。像 192.168.x.x 这样的私有地址也不是你的公网身份,不过注重隐私的浏览器也会尝试把它们隐藏起来。
用 Colitu 测试
我们的 WebRTC 泄漏测试会让你的浏览器使用 Cloudflare 的公共 STUN 服务器(stun.cloudflare.com)收集候选,并将找到的地址与网站所看到的地址进行比较。结果仅在你的浏览器中评估。
- 关闭 VPN 并运行测试。记下公网地址:那是你的真实地址。
- 开启 VPN,等待显示“已连接”,然后重新加载测试页面。
- 对比。WebRTC 找到的每个公网地址现在都应该是服务器的地址,也就是网站所看到的那个。
- 如果第 1 步中你的真实地址仍然出现,说明 WebRTC 正在泄漏。
如需一次检查 IP、DNS 和 WebRTC,请使用 VPN 连接测试。单独检查 DNS,请参阅 DNS 泄漏详解。
如何修复
Windows:开启 TUN 模式。 Colitu for Windows 默认以系统代理模式启动。在 TUN 模式下,所有流量(包括 UDP)都会通过隧道,因此 WebRTC 看到的是服务器的地址。在应用设置中将其开启,然后再次运行测试。
Android 和 iOS。 Colitu 在那里以整机 VPN 的方式运行(Android 的 VPN 服务、iOS 的数据包隧道),所以 WebRTC 流量同样会通过隧道。
Linux(测试版)。 与 Windows 相同,请使用 TUN 模式;它会请求 sudo 权限。
如果你想要额外一层保护,或无法使用 TUN 模式,可以选择 浏览器选项:
- Firefox: 输入
about:config,并将media.peerconnection.enabled设为 false,即可完全关闭 WebRTC。 - 基于 Chromium 的浏览器: 没有简单的内置开关;限制 WebRTC 网络使用的扩展可以限制暴露哪些地址。
请记住,关闭 WebRTC 会导致浏览器中的视频通话无法使用,例如会议服务的网页版。使用 TUN 模式时,通常不需要放弃任何东西。
两个常见问题
泄漏是否意味着我的流量没有加密? 不是。你的浏览仍然通过隧道。WebRTC 泄漏暴露的是你的 IP 地址,对象是发起请求的页面,如果你使用 VPN 是为了避免被网站定位,这一点就很重要。
应用也会这样泄漏吗? 该测试检查的是你的浏览器。用于通话的桌面应用使用它们自己的网络;在 Windows 的系统代理模式下,其中一些可能完全绕过 VPN,TUN 模式同样可以解决这个问题。
把测试变成习惯
当某些东西发生变化时,泄漏往往会卷土重来。在你做了以下操作后,请再次运行测试:
- 在 Windows 上将 Colitu 在系统代理和 TUN 模式之间切换;
- 安装新的浏览器,或隐私类或“VPN”类扩展;
- 安装另一个 VPN、杀毒软件的“安全连接”功能,或游戏加速器;
- 更新操作系统,或换了新电脑。
速查表
| 开启 VPN 后测试显示的内容 | 含义 | 操作 |
|---|---|---|
| 只有服务器的地址 | 没有泄漏 | 无需操作 |
| 一个 .local 名称 | 已隐藏的本地地址 | 无需操作 |
| 你的真实公网地址 | WebRTC 泄漏 | 在 Windows 或 Linux 上使用 TUN 模式 |
| 手机上出现你的真实地址 | 不寻常 | 重新连接,关闭其他 VPN 应用,联系客服 |
帮助中心中还有更多内容:连接测试和 Windows 指南。