我只是好奇您是否可以使用 dig 来检查某个名称服务器是否响应递归查询。
谢谢!
答案1
使用并检查响应中的和位dig
的状态。RD
RA
默认情况下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
另一种选择是使用在线检查器,例如:
答案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.")