我可以使用dig同时查找NS和A记录吗?

14

使用单个dig命令是否可以查找域名的A(IP地址)和NS(名称服务器)?

我可以使用dig google.com A +short或dig google.com NS +short,但肯定有可能只用一个命令来完成。如果不行,是否有类似的命令可以实现?

谢谢

2个回答

15
dig +short ns google.com a google.com

谢谢Martin。根据Alnitak的回复,这可能是我采取的路线。 - Stevie
它不一定非得这样,我只是想尽可能地简化流程。例如,如果dig可以在单个请求到DNS服务器后返回这两个结果,那么这比进行两个单独的请求更快。 - Stevie
但是那个dig命令仍然会发出两个单独的请求...尝试不使用“+short”选项,你就会看到它们。 - Alnitak
1
对的,Alnitak是正确的。只是dig支持在单个命令行中执行多个查询。你看到了,必须是两个查询,因为你需要重复主机名(而第二个查询可能与第一个不同)。 - Martin v. Löwis
是的,我明白这个命令会向DNS服务器发送两个请求。虽然它确实满足了只使用一个dig命令的要求,但在多次分叉时保持运行进程的稳定性下降。 - Stevie

7
不,这不能可靠地完成,至少在单个DNS查询中不能。Martin的回答满足“单个命令”标准,但会导致向DNS服务器发出两个查询。
有一个选项是ANY(而不是NS或A),但这不是获取两个记录的可靠方式。
如果您询问Google的权威服务器,您确实应该得到所有内容,但我怀疑您事先不知道他们的服务器,否则您不会问这个问题。
如果您询问本地递归服务器,则可能会返回两个记录,但只有当它们都在缓存中时才会返回。递归服务器不需要获取每个记录并将其返回给ANY查询,它们可以仅发送它们已经拥有的内容。

Altnitak,当我使用(例如):dig @208.67.222.222 example.org ANY它似乎总是返回我想要的NS和A。您是说在某些情况下可能不会发生这种情况吗?谢谢。 - Stevie
1
没错,如果OpenDNS的缓存中没有它,它就不会返回。我刚刚尝试了一个我知道的域名 - 第一个ANY查询只返回了NS。然后我发送了一个明确的A查询。随后的ANY查询现在都返回两个(至少在它们的TTL过期之前)。 - Alnitak
当然,那真是太遗憾了。感谢您抽出时间来解释这个问题。这对我很有用。我想最好的解决方案就是将其作为两个单独的DNS查询。我会先检查名称服务器,如果没有分配,则不会检查IP地址。 - Stevie
那么,有没有办法在一个DNS查询数据包中添加多个查询?如果没有,为什么数据包中的DNS头有一个字段来计算该数据包中查询的数量,这个数字是否总是1? - weefwefwqg3
@weefwefwqg3 不,目前还没有办法实现,尽管IETF DNSOP工作组至少有5个不同的提案与将多个问题和/或答案放入单个DNS往返中有关(包括我提出的一个)。至于为什么头部是那样的,下次见到Paul Mockapetris时我会问他... - Alnitak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接