我尝试使用一些 DNS 服务,例如 OpenDNS,但无论我做什么,DNS 查询都不会返回预期的结果。通过观察防火墙上的数据包流量,我可以看到查询发送到预期的 DNS 服务器地址并返回响应,但结果并不如预期,例如,OpenDNS 测试页面总是失败,即使请求似乎发送到他们的服务器。
我怀疑我的 ISP 正在拦截 DNS 查询并将其发送到他们自己的服务器。有没有办法验证这一点?我可能还遗漏了什么?我正在使用 Sprint 的 3G 无线服务。
答案1
打电话问问他们?
从OpenDNS 论坛上的话题(2010 年 2 月):
我今天与 Sprint 进行了交谈。
以下是和我通电话的那个人告诉我的。
“是的,sprint 正在将 DNS 重定向到端口 53”(显然,我们在 opendns 知道这一点)“是的,即使对于静态帐户也是如此”
根据链接,您的 Sprint 设备可能有一个固件升级,允许使用 OpenDNSSprint 的 PDF在同一条消息中。
答案2
有多种方法可以检查您的 ISP 是否使用透明 DNS 代理。这取决于您的 ISP 如何实施它。我的 ISP 将所有端口 53 请求重定向到他们自己的递归 DNS 服务器(但他们不会在 NXDOMAIN 上投放广告。也许他们使用它来记录或防止 DNS 隧道)。我将提到一些常规检测方法。
对权威名称服务器执行 DNS 查找,并检查答复是否具有权威性。在此示例中,我将使用
dig
。您也可以使用nslookup
。如果答复具有权威性,dig 将aa
在答复中显示标志。现在,a.ns.facebook.com 是 fb.me 的权威 NS。如果您的 ISP 拦截并重定向请求,您将不会收到权威答复。dig @a.ns.facebook.com fb.me
(左边不拦截DNS)
- 指定一个没有 DNS 服务器运行的 IP 地址,作为执行
dig
或时的 DNS 服务器nslookup
。如果您的 ISP 拦截您的请求,您仍会收到回复。否则您将收到Time Out
。(右侧的 ISP 拦截并重定向请求)
在随机 IP 地址上使用 nmap。如果您的 ISP 重定向所有端口 53 请求,您将始终看到端口 53 处于打开状态。
更改您的计算机网络设置并使用 Google 公共 DNS 或 OpenDNS 或 Cloudflare DNS IP(一次使用一种提供商类型)。然后转到DNS 泄漏测试网站并注意是否出现任何不同的提供商。
绕过这个 ISP 拦截并不难。你需要使用DNScrypt/DNS over TLS 或使用任何在非标准端口(例如:5353 或 443)上运行的 DNS 服务器。在第二种方法中,您必须使用路由器或计算机防火墙将传出的 DNS 查询重定向到这些端口。详细讨论这些方法超出了本文的范围。
答案3
尝试对一些你认为会发送到不同提供商(如 OpenDNS 和 Google)的 DNS 请求进行计时。如果它们相同,则它们必须由 ISP 接收并提供(逻辑错误,但有可能)。可以这样做的一种方法是使用名称台,通常用于为您的连接选择最佳的 DNS 服务器。