如何执行具有多个问题的 DNS 查找?

How to perform DNS lookup with multiple questions?

DNS 标准允许为每个查询指定 1 个以上的问题(我的意思是在单个 DNS 数据包内)。我正在为 DNS 分析编写 Snort 插件,我需要测试当存在包含多个问题的 DNS 查询时它是否正常运行。

DNS 数据包结构如下所示:

0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F 
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                      ID                       |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR|   Opcode  |AA|TC|RD|RA|   Z    |   RCODE   |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    QDCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    ANCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    NSCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    ARCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|         <ACTUAL QUESTIONS GO HERE>            |
|                                               |
|                     ...                       |
|                                               |

因此,如果 QDCOUNT 大于 1,则单个查询中可能有多个 DNS 问题。

如何使用 linux 工具执行此类查询? dig domain1.example domain2.example 仅创建 2 个单独的查询,每个查询有 1 个问题。 hostnslookup 似乎只允许同时查询 1 个名称。

有关完整详细信息,请参阅此问题:Requesting A and AAAA records in single DNS query

简而言之,实际上现在没有人在一个查询中做多个问题。这从来没有明确定义,并提出了很多问题(比如:只有一个 return 代码,所以如果一个问题失败而另一个问题失败,你会怎么做?)。

人们同时进行 AAAAA 查询(而不是弃用的 ANY)会很有用,但现在基本上不存在了。