未收到“Fixed/Ordered”查询响应

未收到“Fixed/Ordered”查询响应

我们正在测试一个查询:

  • FQDN: test.example.net
  • 查询类型:AAAA

客户端 > DNS A > DNS B

简化的DNS查询流程:

  1. 客户端查询 test.example.net -t AAAA
  2. 查询转到 DNS A,然后 DNS A 将查询转发给 DNS B
  3. DNS B 向 DNS A 响应 2 个有序的 IPV6 地址
  4. DNS A 从 DNS B 接收 2 个有序的 IPV6 地址

预期的

  1. DNS A 向客户端回复 2 个有序的 IPV6 地址

怎么了

  1. DNS A 向客户端响应 2 个无序的 IPV6 地址

我们尝试过的事情:

  • 关闭 DNS A 和 DNS B 上的缓存

我们注意到的事情:

  • 当查询从 DNS A 转到 DNS B 时,事务 ID 会发生变化
  • 当DNS A向客户端响应2个IPV6地址时,事务ID又变回原来的事务ID。

问题:

  • 我们忽略了哪些选项/设置以确保客户端收到固定有序的查询响应?
  • DNS A 收到来自 DNS B 的有序查询响应,但却没有将有序查询响应发送回客户端,原因可能是什么?

谢谢 BD

答案1

在 DNS 协议中,记录集中记录的顺序并不重要(因为意味着)。出于某些目的(例如,帮助实现简单的基于 DNS 的负载平衡解决方案),记录被故意打乱顺序的情况相当常见。
实际上具有优先级概念的记录类型(例如MXSRV)在其记录数据中有一个特定字段,用于指定每条记录的优先级,而不管记录在响应中的放置顺序如何。

至于事务 ID,该值应该仅在查询和响应之间保持不变。在您的示例中,您实际上有两个查询:客户端↔A 和 A↔B。

答案2

您可以使用选项“rrset-order”,它可以指定针对某个 fqdn“固定”查询响应。

DNS 的设计目的是使用随机排序的查询响应进行响应。

相关内容