如何列出所有 DNS 记录,包括 DANE TLSA

Posted

技术标签:

【中文标题】如何列出所有 DNS 记录,包括 DANE TLSA【英文标题】:How to list all DNS records including DANE TLSA 【发布时间】:2018-03-22 14:58:04 【问题描述】:

我想列出所有/任何 DNS 记录,包括 DANE TLSA。

dig mailbox.org ANY

我得到了所有记录,包括 DNSSEC 等,但没有关于 DANE 的记录。为什么?

dig _443._tcp.mailbox.org. ANY

我得到了 DANE TLSA 记录。

我读过有人想查询所有子域的问题 How can I list ALL DNS records? 并且我知道这只能通过区域转移来实现。

但是'_443._tcp.'不是一个真正的子域,是吗?我以为这只是一个 SRV 记录。那么如何查询包括 DANE TLSA 在内的任何内容?

【问题讨论】:

【参考方案1】:

命令dig mailbox.org ANY 询问名称mailbox.org. 的所有记录。

命令dig _443._tcp.mailbox.org. ANY 询问名称_443._tcp.mailbox.org. 的所有记录。

mailbox.org._443._tcp.mailbox.org. 名称不同。

查询其中一个的所有记录不会显示另一个的任何记录。如果有帮助,您可以将 DNS 中的(完全限定)名称视为数据库中的主键(因为实际上它们就是这样)。如果您向数据库询问密钥 FOO 的数据,它不会为您提供密钥 FOOBAR 的任何数据(除非它被严重破坏)。 完全这里也发生了同样的事情。你要求一件事,却得不到另一件不同的事情的答案。

【讨论】:

【参考方案2】:

你会在Section 3 of RFC 6698找到答案:

TLSA 资源记录存储在带前缀的 DNS 域名中。前缀的准备方式如下:

    假定存在基于 TLS 的服务的端口号的十进制表示前带有下划线字符 (“_”),以成为准备好的域名中最左侧的标签。此数字没有前导零。 假定存在基于 TLS 的服务的传输协议名称前面带有下划线字符 (“_”),以成为准备好的域名中最左侧的第二个标签。为此协议定义的传输名称是“tcp”、“udp”和“sctp”。 将基础域名附加到步骤 2 的结果中,以完成准备好的域名。基础域名是 TLS 服务器的完全限定 DNS 域名 [RFC1035],附加限制是每个标签必须符合 [RFC0952] 的规则。后一个限制意味着,如果查询是针对国际化域名的,它必须使用 [RFC5890] 中定义的 A-label 形式。

基本上,由于您可以在不同的端口上拥有不同的“基于 TLS 的服务”(例如 DTLS),并且此数据不包含在 TLSA 记录集中,因此命名约定可以找到所需的正确信息协议/端口组合。

【讨论】:

以上是关于如何列出所有 DNS 记录,包括 DANE TLSA的主要内容,如果未能解决你的问题,请参考以下文章

DNS正反解析查询指令hostdignslookup

Http协议之Https&SSL/TLS&DNS

DNS 是如何影响你冲浪速度的?

pfSense配置基于TLS协议的DNS(DoT)

DNS配置及主从同步

使用 TLS 保护 Kubernetes 服务