背景是,我正在解决用作本地 DNS 服务器的 pihole 中的间歇性故障,我通过 Macbook 上的 Docker 运行它,以启用我的物理和虚拟机家庭实验室。
我在 pihole Docker 镜像的后续标记版本中遇到了以下问题,我相信是 v5.6 或 v5.7 版本。我真的不知道这是否是由于 pihole 版本的原因,但我不记得以前见过这样的 nslookup;请注意“DNS 请求超时”,但后来它显然成功了。我相信在尝试此操作之前,我在 pihole 管理员中添加了指向“192.168.50.211”的本地 DNS 条目“gitlab.m44zv82q.com”后重新启动了 Windows 10 桌面。在这种情况下,我还没有为 DNS 服务器添加名称。为什么它显示“DNS 请求超时”但后来显然成功了?我在另一台 Windows 10 笔记本电脑上看到了类似的问题。顺便说一句,我将“m44zv82q.com”指向“192.168.50.1”。
C:\Users\iamuser>nslookup gitlab.m44zv82q.com
Server: 3400b21b6797
Address: 192.168.50.243
DNS request timed out.
timeout was 2 seconds.
Name: gitlab.m44zv82q.com
Address: 192.168.50.211
C:\Users\iamuser>
切换回 v5.5.1 后,在 pihole 管理员中添加本地 DNS 条目后立即出现此问题。
C:\Users\iamuser>nslookup gitlab.m44zv82q.com
Server: iamuser-Macbook-Pro.m44zv82q.com
Address: 192.168.50.243
Name: gitlab.m44zv82q.com
Address: 192.168.50.211
C:\Users\iamuser>
答案1
为什么它显示“DNS 请求超时”但后来显然成功了?
因为它确实二DNS 请求 – 一个用于AAAA
记录,另一个用于A
记录(分别用于检索 IPv6 和 IPv4 地址)。第一个超时,但第二个返回一个 IP 地址。
通常,如果网站不支持 IPv6 并且未在 DNS 中发布任何 AAAA 记录,则 AAAA 查询仍然会成功,只是返回请求类型的零条记录。
然而,一些“网络保护”软件以及一些VPN软件具有不明智的功能完全阻挡查询 AAAA,这样它们要么返回虚假的 SERVFAIL 错误,要么根本不返回任何响应(强制客户端等待直到超时)。确保没有启用任何类似功能。
或者,由于 Pi-Hole 使用 dnsmasq,因此添加本地 DNS 条目可能不再完全覆盖该条目的所有记录类型 - 也就是说,我怀疑它不是直接返回“0 AAAA 记录”,而是最终将 AAAA 查询转发到上游(到您的 ISP 的 DNS 服务器)或类似的东西。
看看 Pi-Hole 的最近的 DNS 查询列表来查看发生了什么。