我的 LAN 有一个 DNS 服务器 (pfSense),运行正常,但发生了一些我无法解释的超时。特别是“host”命令立即给出了正确的答案,但随后又尝试了 2 次,并出现超时:
charles3@cluj:~ » host -v cluj.int.acme.fr
Trying "cluj.int.acme.fr"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14189
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;cluj.int.acme.fr. IN A
;; ANSWER SECTION:
cluj.int.acme.fr. 1 IN A 192.168.1.113
Received 52 bytes from 192.168.1.1#53 in 0 ms
Trying "cluj.int.acme.fr"
;; connection timed out; no servers could be reached
Trying "cluj.int.acme.fr"
;; connection timed out; no servers could be reached
超时发生在输出的最后 4 行。这发生在我的两台不同的机器上(Mac 和 Linux)。
我怎么知道为什么已经给出了答案但还有两次试验?
答案1
的完整答案host
可能包括 IPv6 地址。 strace -f host
在 Linux 上,建议这些地址以单独的数据包形式到达。
看起来主机还查询 MX 地址(kernel.org mail is handled by 30 ns4.kernel.org.
),这需要另一个数据包。
所以这可以解释为什么在第一个请求之后还可以有两个请求。即第一级问题,这是如何实现的 :)。
消费者路由器上使用的 Dnsmasq 曾经有一个错误,由 polipo 网络代理使用的同时 ipv4/ipv6 查询模式以及 ipv6 结果触发。我认为第二个查询被忽略并且超时了。
我不知道还有什么原因会导致这种情况。SERVFAIL
如果有必要,应该会返回一个可用的本地解析器。希望 pfsense 支持论坛能提供更多信息。
你可以确认/稍微缩小范围
# ipv4 only
host -t A cluj.int.acme.fr
# simulate the 3 default queries with separate instances
for type in A AAAA MX; do host -t $type cluj.int.acme.fr; done
答案2
man host
-a (全部)选项相当于设置 -v 选项并要求主机进行 ANY 类型的查询。
-a
如果您想执行任何请求,最好使用选项,因为-v
它会发送多个查询。
host -a example.com
IP 10.104.11.40.53236 > 10.104.254.250.domain: 36007+ **ANY?** example.com. (28)
IP 10.104.254.250.domain > 10.104.11.40.53236: 36007 3/0/2 A 93.184.216.34, MX mail.example.com. 10, AAAA 2606:2800:220:1:248:1893:25c8:1946 (137)
host -v example.com
IP 10.104.11.40.62407 > 10.104.254.250.domain: 50385+ **A?** example.com. (28)
IP 10.104.254.250.domain > 10.104.11.40.62407: 50385 1/0/0 A 93.184.216.34 (44)
IP 10.104.11.40.57813 > 10.104.254.250.domain: 42995+ **AAAA?** example.com. (28)
IP 10.104.254.250.domain > 10.104.11.40.57813: 42995 1/0/0 AAAA 2606:2800:220:1:248:1893:25c8:1946 (56)
IP 10.104.11.40.62687 > 10.104.254.250.domain: 8222+ **MX?** example.com. (28)
IP 10.104.254.250.domain > 10.104.11.40.62687: 8222 1/0/2 MX mail.example.com. 10 (93)
检查您的防火墙是否有任何可以阻止连续 DNS 查询(端口 53)的规则。