DNS 泄漏与 WebRTC 泄漏:原理、自查与修复
cdnping · 2026-10-17
代理接管的是“连接”,但浏览器在建立连接之前和之外,还会做两件容易被忽略的事:查询域名,以及为实时通信探测自己的公网地址。泄漏就发生在这两处。
DNS 泄漏
访问 example.com 之前,系统要先问 DNS 服务器它的 IP。如果这一步发给了本地运营商的 DNS,那么:
- 运营商能看到你访问了哪些域名;
- 网站可以通过随机子域名的方式,看到替你解析的 DNS 服务器在哪个国家,与出口 IP 对比。
如何自查:cdnping IP 检测会让浏览器解析几个随机子域名,再查询是哪些 DNS 服务器完成了解析。如果解析器所在国与出口 IP 所在国不同,就存在泄漏。
修复方向:在代理客户端中开启“远程 DNS”或 fake-ip 模式,让域名交给代理服务器解析;或在浏览器中启用 DNS over HTTPS,并确保 DoH 流量也走代理。
WebRTC 泄漏
WebRTC 是浏览器里视频通话、屏幕共享用的技术。为了打通网络,它会向 STUN 服务器发 UDP 请求,问“你看到我的地址是什么”。很多代理只处理 TCP,这个 UDP 请求就会直接从本地网络发出,STUN 返回的就是你的真实公网 IP——网页脚本可以直接读到。
如何自查:比较 WebRTC 得到的公网地址与网页请求的出口 IP。cdnping 的检测会同时显示两者。
修复方向:使用接管全部流量的 TUN / 虚拟网卡模式;或在浏览器中限制 WebRTC 的网络接口(Chrome 系可通过官方扩展 WebRTC Network Limiter,Firefox 可在 about:config 中设置 media.peerconnection.ice.default_address_only)。
局域网地址与 mDNS
现代浏览器默认把局域网地址替换成随机的 xxxx.local 主机名(mDNS),网页看不到 192.168.x.x 这类内网地址。如果检测结果直接显示了内网 IP,说明浏览器关闭了这项保护。
读完不如亲自测一次。