如何使用多个问题执行DNS查找



DNS标准允许每个查询指定超过1个问题(我的意思是在单个DNS数据包中)。我正在编写用于DNS Analyzis的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个单独的查询,每个查询每个问题。hostnslookup似乎允许当时仅查询1个名称。

有关全部详细信息,请参见此问题:请求A和AAAA记录单个DNS查询

简而言之,实际上今天没有人在一个查询中执行多个问题。这从来没有被清楚地定义,并且提出了很多问题(例如:只有一个返回代码,如果一个人失败而不是另一个问题,您将为2个问题做什么?)。

同时进行AAAAA查询(而不是弃用的 ANY)是有用的,但是今天基本上不存在。

您可以使用单个AXFR请求从区域中检索所有记录,然后解析您想要的。

dig @127.0.0.1 domain.com. AXFR

nslookup -query=AXFR domain.com 127.0.0.1

通常拒绝AXFR请求,除了从服务器服务器,因此您需要使用允许提出此请求的IPS。(在绑定中,这是使用allow-transfer选项完成的)。

这对OP的用例不适用于制作检查QDCount的Snort插件,但它确实解决了在单个DNS请求中发送多个问题的问题。

来源:ServerFault:如何从DNS请求/获取所有记录?

相关内容

  • 没有找到相关文章

最新更新