DNS 隐私 · 1 分钟阅读

如何测试DNS泄漏

DNS泄漏可以暴露您访问的每个域,即使您的流量是加密的。以下是泄漏的定义、如何测试以及如何保持名称解析在隧道内部。

什么是 DNS 泄漏 — 以及它为何重要

在您的浏览器加载页面之前,它会请求一个DNS 解析器将像example.com这样的主机名转换为 IP 地址。如果这个问题在加密隧道外离开您的设备——比如去您的 ISP 的解析器——任何监视该解析器的人都能看到您访问的每个网站。这就是所谓的DNS 泄漏,即使流量本身是加密的,它也会发生。

VPN 或代理的整个目的就是隐藏您的真实或原始 IP。DNS 泄漏以两种方式破坏了这一点:解析器操作员了解您的浏览情况,而您使用的解析器可以背叛您真实的 ISP 或大致位置。您可以坐在另一个国家的 VPN 端点上,仍然将每个查找交给您家里的 ISP。

解决方案在原则上很简单:在隧道内或内部解析名称,或在代理处,绝不要在本地机器上。我们的WireGuard VPN默认通过隧道推送DNS服务器,而我们的数据中心SOCKS5代理在使用socks5h时远程解析。设置指南涵盖了每个平台的确切步骤。

如何测试 DNS 泄漏

注意您的基线

断开所有连接并记录你的真实公共IP和ISP提供的解析器。这就是泄漏会向观察者揭示的内容。

连接隧道或代理

启动 WireGuard,或将你的客户端指向代理。对于代理,使用 socks5h URL,以便 DNS 在远程解析,而不是在你的设备上。

进行泄漏测试

使用基于浏览器的DNS泄漏测试或下面的命令行检查。查看你的公共IP和实际回答查询的解析器。

比较结果

显示的解析器和 IP 应属于隧道或代理。如果你的 ISP 的解析器仍然出现,DNS 正在泄漏,需要修复。

检查IPv6和WebRTC

单独测试IPv6并检查浏览器中的WebRTC——即使IPv4 DNS看起来干净,这两者都可能暴露你的真实IP。

从命令行检查 DNS

bash
# Your public IP with the tunnel up — should NOT be your real one
curl https://api.ipify.org; echo

# Which resolver actually answered? (should belong to the tunnel/proxy)
dig +short whoami.ds.akahelp.net TXT

# Proxy: socks5h resolves the hostname REMOTELY (no local DNS leak)
curl --proxy socks5h://USER:PASS@proxy.s4m.online:1080 https://api.ipify.org; echo

# Wrong: plain socks5 resolves locally first -> leaks the domain
# curl --proxy socks5://USER:PASS@proxy.s4m.online:1080 https://example.com

# HTTP proxy: CONNECT tunnels HTTPS, hostname resolved at the proxy
curl --proxy http://USER:PASS@proxy.s4m.online:3128 https://api.ipify.org; echo

# WireGuard: confirm a DNS server is pushed through the tunnel
grep -i '^DNS' /etc/wireguard/wg0.conf

每个设置中 DNS 解析的位置

DNS泄漏是否发生取决于查找发生的地方。这就是常见设置的比较:

设置DNS解析的位置泄漏风险
s4m WireGuard VPN在隧道内(推送DNS)低
带有socks5h的代理在代理处远程低
带有socks5的代理在你的本地机器上高 — 本地域名泄漏
HTTP代理(CONNECT)在代理处远程低用于HTTPS
没有隧道你的ISP解析器高

A 付费计划为您提供固定费率的VPN流量以及计量的、经过身份验证的数据中心代理;您还可以比较VPN与代理以选择合适的工具。如果您选择使用免费公共代理列表,请记住这些条目是第三方的,并且未经验证是否存在泄漏——在信任之前,请使用上述检查自行测试每一个。

快速 DNS 泄漏检查清单

确认您的 IP 已更改

在连接前后检查您的公共IP。如果没有改变,请在担心DNS之前解决这个问题。

检查解析器

回答你的查询的 DNS 服务器应该属于隧道或代理,而不是你的家庭 ISP。

保持 DNS 在隧道中

在WireGuard上,确认DNS行已设置。在代理上,使用socks5h以便主机名远程解析。

测试 IPv6 和 WebRTC

禁用或路由 IPv6,并在浏览器中检查 WebRTC——这两者都可能单独泄露您的真实 IP。

重新连接后重新测试

在重新连接、网络更改或睡眠/唤醒后,泄漏可能会重新出现。定期重新运行测试。

FAQ

问题,已解答

我连接到VPN时,DNS仍然会泄露吗?

是的。如果您的操作系统或浏览器继续使用隧道外的解析器,那么这些查询将以明文形式发送,即使您的其他流量是加密的。这正是您进行测试而不是假设的原因。

socks5 和 socks5h 之间有什么区别?

使用普通的 socks5,您的客户端在本地解析主机名,仅将 IP 发送到代理 — 泄露域名到您的本地解析器。使用 socks5h,主机名发送到代理并在那里解析,因此没有 DNS 查询离开您的机器。

s4m WireGuard 配置是否防止 DNS 泄漏?

我们的 WireGuard 配置文件包含一个 DNS 行,以便客户端通过隧道路由查找。确认它在您的配置中存在,并在任何网络更改后重新测试;没有检查的设置不应被信任。

数据中心代理是否隐藏我的 DNS?

当您使用socks5h或HTTP CONNECT隧道连接时,它们可以,这样解析发生在代理处。请注意,这些是数据中心代理,而不是住宅代理,并且是按需计费。

IPv6 和 WebRTC 泄漏怎么办?

这些与DNS是分开的。IPv6可以绕过仅支持IPv4的隧道,而WebRTC可以从浏览器内部暴露您的本地IP。测试这两者以及您的DNS检查。

在隧道中保持每次查找

创建一个账户,启动 WireGuard,并运行检查清单。更喜欢代理?使用 socks5h 连接到 proxy.s4m.online,以便主机名远程解析,而不是在您的设备上。

人们通过搜索找到此页面

此页面回答的真实搜索短语 — 链接的短语打开详细覆盖它们的页面。