我想列出所有/任何DNS记录,包括DANE TLSA。
带
dig mailbox.org ANY
我得到了所有的记录,包括DNSSEC等,但没有关于DANE的任何记录。为什么?
带
dig _443._tcp.mailbox.org. ANY
我拿到了DANE TLSA的记录。
我读过一个问题,有人想查询所有子域如何列出所有DNS记录?我知道这只有在区域转移的情况下才有可能。
但是"_443._tcp."不是一个真正的子域,是吗?我以为这只是一个SRV记录。那么,我如何查询包括DANE TLSA在内的任何内容呢?
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
的任何数据(除非它严重损坏)没错同样的事情也发生在这里。你要求一件事,却得不到另一件不同的事的答案。
您可以在RFC 6698的第3节中找到答案:
TLSA资源记录存储在带前缀的DNS域名中。前缀以以下方式准备:
- 假定存在基于TLS的服务的端口号的十进制表示以下划线字符("_")开头,成为准备好的域名中最左边的标签。这个数字没有前导零
- 假定存在基于TLS的服务的传输的协议名称前面加了一个下划线字符("_"),成为准备好的域名中最左边的第二个标签。为该协议定义的传输名称是";tcp"udp";,以及";sctp">
- 将基本域名附加到步骤2的结果以完成准备好的域名。基本域名是TLS服务器的完全限定DNS域名[RFC1035],附加限制是每个标签必须符合[RFC0952]的规则。后一个限制意味着,如果查询是针对国际化域名的,则必须使用[RFC5890]中定义的A-标签形式
基本上因为你可以有不同的";基于TLS的服务";(例如DTLS),并且该数据不包括在TLSA
记录集中,则存在命名约定以找到所需协议/端口组合的正确信息。