如何列出所有 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的主要内容,如果未能解决你的问题,请参考以下文章