如何在没有可用主机名的情况下验证DNS服务器是否有效?(Linux)



我知道你可以通过运行来测试DNS服务器是否有效

 dig +short test_hostname @nameserver

但是,如果我们没有test_hostname来测试查询呢?例如,如果我们要在其上运行此命令的系统位于受限制的网络中,并且我们不知道他们可以访问或在其网络上可用的主机名。

使用localhost作为test_hostname是否是检查这是否是有效DNS服务器的可靠方法?

或者我确实注意到dig, host, nslookup将全部返回:

;; connection timed out; no servers could be reached

如果你输入了一个无效的DNS服务器,而不管你输入了什么test_hostname,那么就只运行:

dig +short @nameserver

是否是检查DNS服务器是否有效的可靠方法?不需要检查DNS服务器是否是假的/恶意的,只需要检查它是有效的还是无效的。

尝试:

dig . ns @nameserver +short

即使服务器没有配置根名称服务器,如果它处于活动状态,它也会对此做出响应。如果有根服务器,您将获得一个有效的NS记录列表;否则,您将得到一个带有rcode=NOERROR的空响应。

您并不是在说您是在测试递归名称服务器还是权威名称服务器。

您还需要定义有效。您希望您的查询得到DNS答复吗?

您可以使用已知的无效/不存在的名称进行测试,例如whatever.testwhatever.example。您应该始终得到DNS回复,即使是NXDOMAIN,或者在向上推荐的情况下可能是NOERROR

请注意,如果您对您不控制的服务器这样做,根据速率,人们可能会开始注意到并限制您的速率,甚至更糟。

您也可以尝试查询CHaos区域,但这通常是禁用的。这是"识别"给定名称服务器软件的一种方法。

示例:

$ dig @a.root-servers.net version.bind TXT chaos +short
"NSD"

即使该功能被禁用,您也应该返回一个带有REFUSEDNOTIMP的DNS回复或类似的返回代码:

$ dig @ns1.google.com version.bind TXT chaos
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOTIMP, id: 57909
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

PS:注意,dig有一个header-only标志,允许发送一个只有标题而没有内容的问题(不需要指定名称(。

并不是所有的名称服务器都能对此做出正确的反应,同样的可能只是超时而根本不回复。

相关内容

  • 没有找到相关文章

最新更新