我有一个DNS服务器(pfSense)为我的局域网,工作完美,但有些超时发生,我无法解释。 特别是“主机”命令立即给出正确的答案,但随后超时尝试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)。
我怎么知道为什么有两个审判,而答案已经给出?
host的完整答案可能包括IPv6地址。 Linux上的strace -f hostbuild议这些到达一个单独的数据包。
它看起来像主机也查询MX地址( kernel.org mail is handled by 30 ns4.kernel.org. ),这需要另一个数据包。
所以这将解释如何在第一个请求之后再有两个请求。 即一级问题,甚至可能如此:)。
在用户路由器上使用的Dnsmasq有一个bug,由poliponetworking代理使用的同时ipv4 / ipv6查询的模式和ipv6结果触发。 我认为第二个查询被忽略和超时。
我不知道还有什么会导致这一点。 如果有必要,一个工作的本地parsing器应该返回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
man host
-a(全部)选项相当于设置-v选项并要求主机进行ANYtypes的查询。
如果您想执行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),请检查您的防火墙。