隐私
如何检测 VPN 是否真的生效(以及没有悄悄泄漏)
VPN 客户端显示绿色图标说「已连接」。这只能告诉你隧道建立了——不能说明你的流量真的走了它。DNS、WebRTC、IPv6、按路径分流都可能各自泄漏。下面是证明 VPN 真正生效的四阶段检测。
阶段 1 —— 公网 IP 回显
打开任意单 IP 查询站——ifconfig.me、ip.sb、ipinfo.io。如果你看到的 IP 是 VPN 的出口(不是你家的 IP),VPN 的 HTTP 层就在工作。必要但不充分:HTTP 走得好,DNS 或 WebRTC 仍可能泄漏。
常见坑:VPN「开着」,但你的系统代理或浏览器代理设的是「直连」(不使用代理),VPN 客户端只捕获走 TUN 接口的流量。有些 app 会绕过 TUN。IP 回显显示的是对的,但后台 app 在漏。
阶段 2 —— DNS 泄漏测试
DNS 是互联网的电话簿。你打「github.com」时,电脑会向 DNS 解析器请求。如果 VPN 是用 IP 的,但 DNS 还是走你的 ISP 解析器,你的 ISP 就会知道你访问的每一个域名,即便 IP 本身是隐藏的。
怎么测:跑 IPCombo,看公网 IP 下面那行 resolver。如果 resolver 是你的 ISP 或已知公共 DNS(8.8.8.8、1.1.1.1),DNS 在漏。如果是 VPN 提供商的 DNS,那就在工作。DoH(DNS over HTTPS)和 DoT(DNS over TLS)即便 resolver 在上游也能让 ISP 看不到 DNS 查询——但需要 VPN 客户端主动设置。
阶段 3 —— WebRTC 泄漏测试
WebRTC 通过收集 candidate IP 地址协商点对点连接。即便你的 HTTP 流量走了隧道,WebRTC 仍能收集你真实的本地和公网 IP 并发送给对端。网站跑几行 JavaScript 就能拿到。
IPCombo 的 WebRTC 探针跑标准 ICE candidate 收集,并汇报每种 candidate 类型——host(你的局域网)、srflx(你的公网 NAT IP)、relay(TURN 兜底)。如果 srflx 是你家的 IP 但公网 IP 回显显示 VPN 出口,WebRTC 层在漏。
在网络层(不是浏览器层)做 WebRTC masking 的现代 VPN 客户端能阻止这个泄漏。像 uBlock Origin 这样的浏览器扩展也能替换 srflx candidate。如果你的 VPN 两样都没做,就在漏。
阶段 4 —— 按路径验证
最彻底的检查:加载一个真实出口 IP 可信的目标,和你的 HTTP 回显对比。如果你信任 cloudflare.com 上的 cdn-cgi/trace 端点,你的 HTTP 回显返回的是 US-east,但公网 cdn-cgi/trace 端点显示你的 IP 在 JP——你的 VPN 在按路径分流。
对很多用户来说这是设计如此——本地站点走直连,国外走代理。但这也是最常见的静默失效模式:一条不该匹配的新 VPN 规则匹配了,或者一条不该生效的白名单生效了。按路径检查是发现这些情况的唯一办法。
IPCombo 的 connectivity matrix 一次跑完四个阶段。它展示 HTTP 回显、DNS resolver、每个 WebRTC candidate,以及 34 个目的地的逐目标真实 IP。如果哪个和你预期不一致,诊断卡会标出来。如果全绿,再看下哪个就是绿的。
想看更多指南?
全部文章