如何检查名称服务器是否响应递归查询?

如何检查名称服务器是否响应递归查询?

我只是好奇您是否可以使用 dig 来检查某个名称服务器是否响应递归查询。

谢谢!

答案1

使用并检查响应中的和位dig的状态。RDRA

默认情况下dig将发送递归查询(RD在查询标头中设置),除非您设置+norecurse命令行标志。

如果服务器支持递归查询,则响应将RA在响应标头中设置“递归可用”位。

RA一点是递归查询支持的诊断测试。

答案2

看看您是否可以向它查询它不具有权威性的 DNS 条目,例如,尝试:host www.cnn.com ns.example.com,其中 ns.example.com 是您正在测试的名称服务器。如果它不响应递归查询,您将收到 REFUSED。

$ host www.cnn.com. ns1.example.com
Using domain server:
Name: ns1.example.com
Address: 192.168.183.130#53
Aliases:

Host www.cnn.com not found: 5(REFUSED)

而执行递归查询的 DNS 服务器:

$ host www.cnn.com. 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

www.cnn.com has address 157.166.255.18
www.cnn.com has address 157.166.255.19
www.cnn.com has address 157.166.226.25
www.cnn.com has address 157.166.226.26

答案3

另一种选择是使用在线检查器,例如:

http://www.intodns.com/

答案4

根据Alnitak 的回答可以使用以下代码编写一个简单的脚本dnspython模块:

import dns, dns.resolver

domain = "www.cnn.com"
nameserver_ip = "8.8.8.8"

message = dns.message.make_query(domain, rdtype=dns.rdatatype.A, ednsflags=dns.flags.RA)
resp = dns.query.udp(message, nameserver_ip)
if resp.rcode() != 0:
    print("Nameserver responds to recursive queries.")

相关内容