> For the complete documentation index, see [llms.txt](https://docs.ipcheck.ing/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ipcheck.ing/knowledge-base/zh/connection-tools/dns-leak-test.md).

# DNS 泄漏测试

## 它的作用

每次你打开网站时，设备首先会向 DNS 解析器请求把名称转换成地址。如果你使用 VPN 或代理，这些请求也应当通过隧道传输。当它们没有时——也就是当你的服务提供商的解析器仍然回应这些请求时——这就是一个 **DNS 泄漏**。即使流量已加密，你的服务提供商仍然知道你访问的每个网站。

这个 **DNS 泄漏测试** 会查明到底是谁在响应。参见 [DNS 如何工作](/knowledge-base/zh/concepts/how-dns-works.md) 了解背景。

它使用的技巧如下。MyIP 会生成一个全新的、一次性的域名，并让你的浏览器加载它。因为这个名称此前从未存在过，世界上任何缓存都没有答案，所以这个请求必须一路传到由 MyIP 测试合作方控制的服务器。该服务器会记录是哪个解析器前来查询——而你在卡片上看到的，就是那个解析器的地址。

MyIP 会通过四个独立合作方运行这个测试，因此你会得到四个单独视图： **ip-api.com**, **surfsharkdns.com**, **ipleak.net**，以及 **browserleaks.net**.

## 如何运行

测试会在页面加载时自动运行。点击该部分标题中的刷新按钮（**刷新 DNS 泄漏测试**) 再运行一次。每张卡片在放弃前都会自动重试几次。

## 读取结果

每张卡片显示一个 **DNS 端点测试** 结果：

* 大号数值是 **解析器的出口地址** ——解析器到达测试服务器时所使用的地址。
* **ISP** ——该地址的所有者。
* **端点地区** ——该地址映射到的国家。

| 你看到的内容       | 其含义                  |
| ------------ | -------------------- |
| `等待测试`       | 仍在运行                 |
| `测试错误`       | 探测在多次尝试后失败，或者无法查到该地址 |
| 地址以及 ISP 和地区 | 已识别出一个解析器            |

### 这是哪个解析器？

将 **ISP** 和 **端点地区** 将每张卡片上的结果与你预期的内容对照。

| 结果                               | 解读                                                      |
| -------------------------------- | ------------------------------------------------------- |
| 在开启 VPN 时，显示你自己国家的家庭服务提供商名称      | **泄漏。** 你的 DNS 请求正在绕过隧道                                 |
| 你的 VPN 提供商名称，或你的 VPN 出口所在国家      | 正常。DNS 正在通过隧道                                           |
| Cloudflare、Google 或 Quad9 等公共解析器 | 你的设备或路由器被设置为使用该解析器。它本身没问题，但请注意它能看到你的浏览记录，而且可能会暴露你大致所在地区 |
| 不同卡片显示不同的运营方                     | 正常。大型解析器使用许多出口服务器，你的设备也可能配置了不止一个解析器                     |
| 你家庭服务提供商的名称，且未使用 VPN             | 符合预期。这是大多数人的默认设置                                        |

{% hint style="info" %}
端点地区是解析器的 **出口服务器**地区，而不是你的地区。位于邻国的解析器本身并不证明存在泄漏——关键在于运营方是否是你预期的那个。
{% endhint %}

## 修复泄漏

{% stepper %}
{% step %}

### 开启 VPN 的 DNS 保护

大多数 VPN 客户端都有“DNS 泄漏保护”“使用 VPN DNS”或“阻止外部 DNS”之类的设置。启用它，然后重新运行测试。
{% endstep %}

{% step %}

### 手动设置解析器

如果你的 VPN 不管理 DNS，请在操作系统的网络设置中，或在浏览器的安全 DNS 设置中自行设置一个解析器。然后重新运行测试，确认更改已生效。
{% endstep %}

{% step %}

### 检查你的路由器

如果路由器发放它自己的解析器，就可能覆盖你设备上的设置。若在电脑上更改所有设置后泄漏依然存在，路由器很可能就是原因。
{% endstep %}
{% endstepper %}

## 深入 DNS 泄漏测试

主页测试运行后，会出现一条横幅： **想进一步深入吗？** 带有一个 **打开深入测试** 按钮。它会打开 **深入 DNS 泄漏测试** ，位于高级工具中。

{% hint style="warning" %}
**仅在 IPCheck.ing 上可用** ——此功能不包含在自托管部署中。它还需要你登录。
{% endhint %}

主页测试会捕获少量解析器。这个测试会发出一系列探测，并让 IPCheck.ing 自己的权威名称服务器记录出现的每一个递归解析器——一次典型运行会捕获 20 到 40 条记录。点击 **运行测试** 并等待几秒。

**汇总行**

* **唯一解析器** ——捕获到的不同解析器数量。
* **原始捕获** ——接收到的查询总数。
* **DNSSEC 状态** ——一句话判断，从 *DNSSEC 感知* 到 *可疑*.

**结果表**

| 列        | 它告诉你什么                         |
| -------- | ------------------------------ |
| 解析器 IP   | 代表你发起查询的解析器出口地址                |
| 位置       | 该地址映射到的位置                      |
| 组织 / ASN | 由谁运营——识别泄漏的关键列                 |
| 记录类型     | 查询的内容（A、AAAA、HTTPS……）          |
| 传输协议     | UDP 或 TCP                      |
| ECS      | 解析器是否将你真实地址的一部分转发到上游           |
| DO / CD  | 两个 DNSSEC 信号：是否请求了签名，以及是否跳过了验证 |

这个 **ECS** 这一列才是隐私方面最值得关注的。如果这里有值，说明你真实地址的一部分正沿着 DNS 链传递——这有助于把你导向附近的服务器，但也会削弱你的匿名性。

一个 **隐藏重复项** 开关会折叠重复行，且 **字段参考** 页面底部的部分会更详细地解释每一列。

{% hint style="info" %}
如果测试没有返回任何内容，可能是浏览器的 DNS 缓存吸收了这些探测。等一会儿再运行一次。
{% endhint %}

## 下一步做什么

* 阅读 [我的 DNS 被劫持或污染了吗？](/knowledge-base/zh/diagnose/is-my-dns-hijacked.md) 如果答案看起来不对，而不只是泄漏。
* 使用 [DNS 解析器](/knowledge-base/zh/lookup-privacy/dns-resolver.md) 工具比较不同解析器对同一域名的回答。
* 用来检查另一种常见泄漏的 [WebRTC 测试](/knowledge-base/zh/connection-tools/webrtc-test.md).
* 用来确认整个设置的 [我的 VPN 或代理在工作吗？](/knowledge-base/zh/diagnose/is-my-vpn-working.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ipcheck.ing/knowledge-base/zh/connection-tools/dns-leak-test.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
