外观
什么是 DNS 泄漏?
先说 DNS
DNS 是上网的“通讯录”。你输入 youtube.com,手机要先问 DNS 服务器“这个网址在哪”,拿到一串 IP 地址,才能去连网站。每打开一个新网站,都要先“查一次通讯录”。详细介绍见 DNS 是什么。
DNS 泄漏是什么
连上加速器后,你的网页流量会经节点加密传输。但如果“查通讯录”这一步没跟着走,而是仍从本地网络发给当地运营商的 DNS,就叫 DNS 泄漏(也常写作 DNS 泄露)。
打个比方:你坐上了专车,车里谁也看不见;可出门前,你还是站在小区门口大声问了一句“去 YouTube 怎么走”。
泄漏了会怎样
- 隐私:普通 DNS 查询是明文的。泄漏时,本地网络能看到你查了哪些网址,也就大致知道你访问了哪些网站,即使网页内容本身是加密的;
- 打不开:本地 DNS 可能返回错误的地址,网页打不开、一直转圈,或者打开的不是原本的页面。“已连接,但网页打不开”有时就是这么来的。
为什么会泄漏
- 系统“抢答”:Windows 会同时向每块网卡的 DNS 发出查询,谁先回答就用谁。本地运营商的 DNS 离得近、回得快,常常抢在前面;
- 手动改过 DNS:在网络设置里手动填了 DNS 服务器,或装了去广告、改 DNS 的 App,查询可能不走加速器;
- 软件没处理好:有的加速器只转发网页流量,不接管 DNS。
GeckoHop 怎么防
- DNS 交给 GeckoHop:连接后,系统的 DNS 指向隧道里的地址,海外网站的查询经节点交给海外的公共 DNS,不从本地网络发出;
- 国内网站例外:选 智能模式 时,国内网站的查询会特意交给国内公共 DNS,为的是拿到离你最近的国内服务器,国内网站照样快。这是有意的分流,不是泄漏;选 全局模式 时,所有查询都经节点;
- Windows:设置里的 防 DNS 泄漏 默认开启,会拦住系统直接发给本地网卡的查询。代价是连接期间,只有局域网能解析的设备名(如 NAS 主机名、公司内网域名)解析不了,见 Windows 客户端;
- Linux:默认的 TUN 全局 模式下,所有 DNS 查询都送进隧道,包括 systemd-resolved 发出的,且不改动系统的 DNS 配置文件;本地代理 模式不接管系统 DNS,见 Linux 客户端;
- 服务器不记录:节点不记录 DNS 查询,也不记录你访问的网站、内容和连接日志,见隐私政策。
怎么自己检查
- 连接 GeckoHop,打开 browserleaks.com/dns 这类 DNS 泄漏检测网站;
- 看页面列出的 DNS 服务器:正常应是海外的公共 DNS(如 Cloudflare),位置在节点附近;
- 如果列出了你所在地运营商的 DNS,就是发生了泄漏:Windows 先确认 防 DNS 泄漏 是开着的并重新连接;手动改过 DNS 的,改回自动后再试;还是不行,请复制诊断信息发给在线客服。
浏览器开了 安全 DNS(DoH),或手机开了指定主机名的 私人 DNS 时,查询是加密发给你指定的服务器的,检测结果会显示那家服务器,这种情况不算明文泄漏。它们会让「智能模式」里的自定义域名规则失效,处理方法见常见问题。
