WebRTC 泄漏、IPv6 泄漏是什么:怎么检测、怎么关闭,和 DNS 泄露的关系
开着代理却被网站看到真实 IP,最常见的两条路是 WebRTC 和 IPv6。本文讲两种泄漏的原理、为什么系统代理和部分 TUN 配置挡不住它们、Chrome、Firefox、Edge、Safari 各自的关闭方法、Clash 和 sing-box 的 IPv6 开关在哪、检测网站每一项结果怎么解读,以及和 DNS 泄露合在一起的完整自检清单。
三种泄漏,一张表
「泄漏」指你开着代理,但某条路径上的信息绕过了代理,让对方看到了你的真实身份线索。常见三种:
| 类型 | 泄漏什么 | 绕过代理的路径 | 谁能看到 |
|---|---|---|---|
| DNS 泄露 | 你访问的域名 | 解析请求走了本地 DNS | 本地运营商;流媒体可据此判定代理 |
| WebRTC 泄漏 | 真实公网 IP、内网 IP | 浏览器 WebRTC 直接向 STUN 服务器发 UDP | 你访问的网页 |
| IPv6 泄漏 | 真实 IPv6 地址 | 代理只接管 IPv4,IPv6 流量直接出去 | 你访问的网站、本地运营商 |
三者独立,可能同时存在,也可能只有一种。DNS 泄露专文见 DNS 泄露是什么,本文集中讲后两种。
WebRTC 泄漏的原理
WebRTC 是浏览器内置的实时音视频通信能力,视频会议、网页电话都靠它。建立点对点连接时,浏览器需要知道自己的公网地址,于是向 STUN 服务器发一个 UDP 请求,服务器告诉它「你从这个 IP 来的」。这个过程由浏览器底层发起,不读系统代理设置,不走 HTTP 代理。
于是任何网页只要调用 WebRTC 接口,就能拿到你本机的内网 IP 和公网 IP。在系统代理模式下,网页的 HTTP 请求走节点,WebRTC 却直接暴露真实 IP。广告追踪和部分风控系统确实在用这个手段。
TUN 模式下 WebRTC 的 UDP 包同样被虚拟网卡接管,按规则走代理,STUN 服务器看到的是节点 IP,一般不泄漏。但如果规则把 STUN 服务器的域名或 IP 判为直连,或者客户端没开 UDP 转发,仍会泄漏。
关闭 WebRTC 泄漏
Firefox:地址栏输入 about:config,搜 media.peerconnection.enabled,改为 false。彻底关闭,视频会议网站会失效,用时再开。温和一点的是把 media.peerconnection.ice.default_address_only 设为 true、media.peerconnection.ice.no_host 设为 true,保留功能但只暴露默认路由的地址。
Chrome / Edge / Brave:没有内置的全关选项。有几种办法:
- 装扩展 WebRTC Leak Shield、WebRTC Control 或 uBlock Origin(设置里勾选「阻止 WebRTC 泄露本地 IP 地址」)。
- Brave 自带:设置 → 隐私 → WebRTC IP 处理策略,选「禁用非代理 UDP」。
- Edge 的 edge://flags 里曾有 Anonymize local IPs exposed by WebRTC,新版本已移入默认行为,只隐藏内网 IP,不隐藏公网 IP。
Safari:默认只在用户授予摄像头 / 麦克风权限后才暴露地址,泄漏风险低。开发菜单里的 WebRTC 选项可进一步限制。
根本解法:用 TUN 模式,并确认客户端开了 UDP 支持。这样不需要动浏览器。TUN 模式开不了或开了没网的处理见 TUN 模式问题排查。
IPv6 泄漏的原理
国内三大运营商近年普遍下发 IPv6 地址,你的电脑和手机很可能同时有 IPv4 和 IPv6。支持 IPv6 的网站(Google、YouTube、Netflix、Cloudflare 上的大量站点)会被浏览器优先用 IPv6 连接。
如果客户端只接管 IPv4:系统代理模式下浏览器把请求发给代理,代理走 IPv4 节点,这种情况其实不泄漏;但 TUN 模式下若客户端没开 IPv6,只接管了 IPv4 路由,IPv6 流量就沿着系统的 IPv6 默认路由直接出去了。网站看到你的运营商 IPv6 地址,同时另一部分流量来自节点,前后不一致,流媒体和 AI 平台的风控对此很敏感。
还有一个变种:DNS 返回了 AAAA 记录(IPv6 地址),客户端把它当作直连目标处理,也会绕过。
关闭 IPv6 泄漏
有两条思路,推荐第二条。
思路一:关掉系统 IPv6。Windows 在网络适配器属性里取消勾选 IPv6;macOS 在网络设置的 TCP/IP 页把 IPv6 改为「仅本地链接」;路由器上关掉 IPv6 下发则全家设备一起关。简单彻底,代价是失去 IPv6 带来的少量好处。
思路二:让客户端一起处理 IPv6。Clash 系配置里有三个相关开关:顶层 ipv6: true 让内核处理 IPv6 连接;dns.ipv6: true 让 DNS 返回 AAAA 记录;tun.inet6-address 给虚拟网卡配 IPv6 地址以接管 IPv6 路由。Clash Verge Rev 在「设置 → Clash 设置」有 IPv6 开关,FlClash 在「配置 → 常规」。sing-box 的 tun inbound 里 address 同时写 IPv4 和 IPv6 段,strict_route: true,DNS 策略用 prefer_ipv4。
折中:客户端 IPv6 关闭、DNS 不返回 AAAA、TUN 配了 IPv6 地址但把 IPv6 流量全部拒绝。这样 IPv6 流量不会漏出去,也不会走代理,网站只能回退到 IPv4。多数机场的订阅默认就是这种配置,所以导入订阅后 IPv6 泄漏不常见,自己改过配置的用户出问题的多。
手机上,iOS 和 Android 客户端的 VPN 接口默认接管 IPv6 路由,泄漏风险低;个别客户端的「IPv6」开关关闭时表示拒绝而非绕过。
检测站怎么看结果
常用检测站有 browserleaks.com、ipleak.net、dnsleaktest.com、以及各种中文的 IP 查询站。连上节点后打开,逐项看:
- IP 地址 / Your IP:应显示节点 IP 和节点地区。显示你的真实城市,代理根本没生效。
- IPv6 地址:应显示「不可用」「未检测到」或节点的 IPv6。显示以 240e、2408、2409 开头的地址,是国内运营商的 IPv6,泄漏了。
- WebRTC:应显示「无泄漏」或与上面相同的节点 IP。出现 192.168.x.x 之类的内网地址是轻微泄漏(暴露内网拓扑),出现你的真实公网 IP 是严重泄漏。
- DNS 服务器:应显示海外 DNS(节点所在地区或 Cloudflare、Google)。出现国内运营商或 114、223.5 之类,是 DNS 泄露。
- 时区与语言:浏览器时区是 Asia/Shanghai 而 IP 在美国,这不是网络泄漏,但风控系统会注意到。可以在浏览器里改,也可以忽略。
一次检测只反映当前这一个网站、这一次连接。换个节点、换个浏览器、开关一次 TUN 后再测一遍,结果可能不同。
完整自检清单
- 开客户端,确认是 TUN 模式或开了 UDP 转发。
- 打开 ipleak.net,看 IPv4、IPv6、WebRTC、DNS 四项全部指向节点。
- 任一项出现真实信息,按本文对应小节处理。
- 用 Firefox 和 Chrome 各测一次,两种浏览器的 WebRTC 行为不同。
- 手机上也测一次,手机客户端默认接管较全,通常没问题。
- 每次换客户端、大版本更新、改过配置后重测。
对选机场的意义
这三种泄漏绝大部分出在客户端和系统配置,和机场本身关系不大。但有两点和机场相关:节点是否提供 IPv6 出口(提供的话可以让 IPv6 流量也走代理而不是一刀切拒绝),以及订阅默认配置是否处理好了 IPv6 和 DNS。专线档机场的订阅配置普遍更完善,经济档机场则常常只给一份最简配置。订阅配置的结构和怎么判断它完不完善,见 订阅链接是什么。想了解 IP 属性对流媒体和 AI 的影响,见 原生 IP 是什么。
常见问题
WebRTC 泄漏是什么?
浏览器的实时通信接口会枚举本机网络地址并通过 STUN 服务器获取公网 IP,这个过程不走 HTTP 代理,网页脚本可以直接读到你的真实公网 IP。
IPv6 泄漏是什么?
你的宽带有 IPv6 地址,但代理只处理了 IPv4。支持 IPv6 的网站会优先用 IPv6 连接,流量绕过代理直接出去,网站看到的是你运营商的 IPv6 地址。
开了 TUN 模式还会泄漏吗?
WebRTC 在 TUN 下通常不泄漏,因为所有流量都被接管。IPv6 要看客户端是否开了 IPv6 支持:没开的话 IPv6 流量仍可能绕过,关掉系统 IPv6 或在客户端开启 IPv6 处理可以解决。
检测网站显示两个不同的 IP 是什么意思?
一个是节点 IP,一个是你的真实 IP,说明有一条路径绕开了代理。看是出现在 WebRTC 项、IPv6 项还是 DNS 项,分别对应不同的修复方法。
关掉 IPv6 对上网有影响吗?
绝大多数情况没有。少数运营商的 IPv6 网速比 IPv4 快,关掉后国内部分网站可能略慢。更好的做法不是关系统 IPv6,而是让客户端一起处理 IPv6 流量。
本文为信息整理与个人经验,不构成购买建议。机场政策与软件界面可能变化,以官方为准。发现过期内容请 联系纠错。