IPdidi
简体中文

DNS泄露是什么?怎么修复?

就算开着VPN,你的设备也可能仍在向运营商查询你访问的每个网站,这就是DNS泄露。下面教你怎么发现并堵住它。

30秒了解DNS

设备在打开网站之前,必须先把 example.com 这样的域名转换成IP地址。这一步是通过询问 DNS解析服务器 完成的,这台服务器通常由你的运营商提供。它能看到你查询的每一个域名、查询时间以及你的IP地址。

什么是DNS泄露?

使用VPN时,这些查询本应经过加密隧道,发给VPN自己的DNS服务器。DNS泄露 指的是查询绕过了隧道,直接发给了运营商或其他外部DNS服务器。

你的流量本身仍然是加密的,但DNS服务器能看到你访问过的所有网站列表,监视你网络的人也能看到。在一些国家,运营商会用DNS屏蔽网站,所以DNS泄露还可能导致即使开着VPN,被屏蔽的网站也打不开。

DNS泄露不会改变网站看到的IP地址,它暴露的是你访问了哪些网站,而且是暴露给运营商。所以光查IP是发现不了DNS泄露的。

怎么检测DNS泄露

  1. 连接VPN。
  2. 打开DNS泄露检测。它会让浏览器查询几个只有我们的测试服务器才能解析的随机域名,并记录是哪些DNS服务器发来了查询。
  3. 查看列出的DNS服务器。

没有泄露: 所有DNS服务器都属于你的VPN服务商,或者和VPN出口在同一个国家。

有泄露: 出现了你自己运营商的DNS服务器,或者VPN服务器在别的国家,却出现了你所在国家的DNS服务器。

Google(8.8.8.8)和Cloudflare(1.1.1.1)这类大型公共DNS在全球都有服务器。对于这些服务器,检测结果还会显示它们转发的客户端子网(ECS),即使DNS服务器本身看起来没问题,这个子网也可能暴露你的真实网络。

DNS泄露的常见原因

怎么修复DNS泄露

从第一步开始,每做完一步就重新检测一次。

  1. 打开VPN的DNS泄露保护。 大多数好的VPN客户端都有"DNS泄露保护""仅使用VPN DNS"之类的选项。同时把终止开关(Kill Switch)也打开。
  2. 打开IPv6泄露保护,或在VPN客户端里屏蔽IPv6。原因见IPv4和IPv6的区别。
  3. 在VPN配置文件里设置DNS。 WireGuard在 [Interface] 段里加一行 DNS =。OpenVPN在Windows上使用 block-outside-dns。
  4. 代理工具请开启TUN模式(Clash、sing-box等软件里叫TUN模式、增强模式或VPN模式),并开启它们的DNS接管功能,让所有查询都经过代理。
  5. 检查浏览器的安全DNS设置。 在Chrome或Edge里,路径是 设置 > 隐私和安全 > 安全 > 使用安全 DNS。要么关掉它,让浏览器使用VPN的DNS,要么设置成你信任的DNS服务器。
  6. 作为兜底方案,把系统DNS改成公共DNS。 这并不能解决泄露给该DNS服务器的问题,但能让运营商看不到你的查询。

然后再运行一次DNS泄露检测。想全面检查VPN,包括WebRTC和IPv6,请看怎么检测VPN是否生效。

常见问题

DNS泄露危险吗?

它暴露的是你访问了哪些网站,而不是密码或网页内容,后者仍受HTTPS保护。不过,如果你用VPN就是为了隐私,DNS泄露基本让VPN失去了大半意义。

DNS泄露会暴露我的真实IP吗?

间接会。运营商的DNS服务器能看到你的真实IP,而转发客户端子网的DNS服务器会告诉网站的DNS服务器你大概在哪里。不过网站本身无法通过DNS看到你的IP。

用1.1.1.1或8.8.8.8能防止DNS泄露吗?

不能。这只是把能看到你查询的人从运营商换成了Cloudflare或Google,查询仍然可能绕过VPN。只有让DNS走VPN才能真正堵住泄露。

为什么检测结果显示其他国家的服务器?

大型DNS服务商会从离你或离VPN服务器最近的数据中心发出查询,这个数据中心可能在邻国。看一下网络名称:如果是你的VPN服务商,或者是VPN服务器附近的大型公共DNS,那就没问题。