什么是 DNS 泄露?
每次打开网站,都要先做一次 DNS 查询,把 example.com 这样的域名换成 IP 地址。平时由你运营商的 DNS 服务器来回答。开着 VPN 时,这些查询应该走加密隧道,交给 VPN 自己的 DNS 服务器。
DNS 泄露是指这些查询没走隧道,直接发给了运营商的 DNS 服务器。网站看到的仍是 VPN 的 IP,但运营商能看到你访问的每一个域名,它的 DNS 过滤或屏蔽也照样生效。
DNS 泄露检测是怎么做的
浏览器没法直接告诉网页它用的是哪个 DNS 服务器。所以检测时会让你的浏览器去查询几个唯一的随机域名,这些域名的 DNS 服务器由检测方自己运行,它会记下是哪些解析服务器来查询的。如果开着 VPN 时,这些解析服务器属于你的运营商,就说明 DNS 泄露了。
上面的检测就是这样做的:它会列出每个解析服务器的运营商、网络和国家,并和网站看到的 IP 做对比。测试域名和解析器 IP 会在 10 分钟后删除。
手动检查你的 DNS 服务器
在终端(macOS、Linux)或命令提示符(Windows,只能用 nslookup)里运行下面任意一条命令。它们会让一个公共服务告诉你:是哪个 DNS 解析服务器的 IP 来查询了它。
nslookup -type=txt o-o.myaddr.l.google.com
dig +short TXT o-o.myaddr.l.google.com
dig +short whoami.akamai.net怎么看结果
- 用任意 WHOIS 或 IP 查询服务,查一下返回的地址属于谁。
- 如果开着 VPN,它却属于你的运营商,就说明 DNS 泄露了。
- 如果它属于你的 VPN 服务商,或你自己选的解析服务,比如 Cloudflare(1.1.1.1)、Google(8.8.8.8),就没有泄露给运营商。
- 这些命令测的是操作系统的 DNS。如果你的浏览器开了“安全 DNS”(DNS over HTTPS),浏览器会把查询发给那个服务商。
怎样修复 DNS 泄露
- 打开 VPN 客户端的 DNS 防泄露功能(有时叫“使用 VPN 的 DNS”)和断网保护(Kill Switch)。
- 确认 VPN 也能处理 IPv6,或者在网卡上关闭 IPv6。IPv6 的查询可能会绕过只支持 IPv4 的 VPN。
- 开启加密 DNS:在 Chrome、Edge、Brave 里打开“安全 DNS”,或在 Firefox 里打开“基于 HTTPS 的 DNS”,选择 VPN 的解析服务或你信任的服务商。
- 检查路由器或手动设置的 DNS 有没有覆盖 VPN 的设置,然后再测一次。