指向CNAME别名的已发布SRV记录违反了RFC 2782?


15

在执行某些工作职责期间,我需要了解SRV记录,并且试图将Wikipedia声明与DNS挖掘中看到的内容保持一致。

根据Wikipedia的SRV记录条目

SRV记录中的目标必须指向带有地址记录(A或AAAA记录)的主机名。指向带有CNAME记录的主机名不是有效的配置。

但我看到的记录dig返回了一个SRV记录,该记录指向一个名称,该名称是CNAME记录中的别名。

也就是说,像这样:

> dig _https._tcp.alpha.domain.com SRV

;; QUESTION SECTION:
;_https._tcp.alpha.domain.com.    IN    SRV

;; ANSWER SECTION:
_https._tcp.alpha.domain.com 59 IN SRV 30 30 4443 alias.domain.com


> dig alias.domain.com

;; QUESTION SECTION:
;alias.domain.com.    IN    A

;; ANSWER SECTION:
alias.domain.com.  35  IN  CNAME canonical.name.amazonaws.com.
canonical.name.amazonaws.com. 35 IN A 52.78.234.189
canonical.name.amazonaws.com. 35 IN A 107.21.179.88
canonical.name.amazonaws.com. 35 IN A 52.12.126.92

似乎SRV记录是完全按照Wikipedia条目所说的方式配置的。我有什么误会?它不是表明SRV记录指向alias.domain.com,它具有一个CNAME记录,而不是一个地址记录?


在我的公司中,我们经常使用SRV记录,并且大多数都使用CNAME,并且可以正常工作,所以无论是否违反规则,它都可以正常工作:)
olivierg

Answers:


10

您引用的Wikipedia文章报告了有关SRV记录的RFC 2782相关内容:

目标

目标主机的域名。此名称必须有一个或多个地址记录,该名称不得为别名(在RFC 1034或RFC 2181的意义上)。

您所看到的显然是违反规则的;但是,如果任何正在寻找该SRV记录的客户端应用程序都足够智能以正确处理CNAME记录,即使它只希望响应中包含A记录,它也可能会起作用(并且通常如此)。

但是它也可能根本不起作用:不受支持,并且完全依赖于客户端应用程序;因此应避免这样做,因为它没有遵循正确的规则,并可能导致错误和/或不可预测的结果。

这类似于指向MX记录到CNAME,它被定义为只是错误的不仅一个,而是2个 RFC的,但它是相当普遍的做法(和没有邮件服务器似乎有问题的话)。


请记住,“足够智能”是相对的。一些软件设计人员的想法是,忍受脑力激荡的实现只会鼓励同一个实现的更多实现。RFC 2781仅由单个RFC进行了更新,并且关于期望内容的语言非常明确,因此在这里我不会期望太多。
Andrew B

大多数客户端应用程序仅依靠系统库来执行DNS查询,并且大多数库(尤其是高级语言)都将尽力解决您向其发起的任何查询,并将快乐而无声地跟随CNAME到达目标A记录和IP地址。
Massimo 2013年

该应用程序不需要太多智能,它只会要求操作系统连接到端口4443上的“ alias.domain.com”,并保留所有详细信息。
Massimo 2016年

1
如果上游递归者拒绝权威数据并拒绝继续,则客户端应用程序和系统库将没有机会遵循别名。(我指的是相对聪明)BIND对NS记录的处理和禁止的别名是这种情况的典型示例。无论如何,我们都认为这是任何人的游戏都具有不可预测的结果。
Andrew B

1
开始有些邮件服务器主动忽略,例如GMX MXES到CNAME记录medienconsulting.at/...
马塞尔Waldvogel

1

这是受限制行为的示例,是的。该限制本身来自RFC 2781中“目标”的定义:

   Target
        The domain name of the target host.  There MUST be one or more
        address records for this name, the name MUST NOT be an alias (in
        the sense of RFC 1034 or RFC 2181).  Implementors are urged, but
        not required, to return the address record(s) in the Additional
        Data section.  Unless and until permitted by future standards
        action, name compression is not to be used for this field.

        A Target of "." means that the service is decidedly not
        available at this domain.

不幸的是,允许禁止配置的DNS服务器软件并不是什么新鲜事物。它能够而且确实发生,因为它与在别名的目标是被禁止的,如其他记录类型不NSMX。(上文提到的)

仅仅因为可以在野外发现它并不意味着它“还可以”,并且当一个标准被忽略时,会因产品而异。我还没有测试过与SRV记录的交互,但是ISC BIND关于NS指向别名的记录的一个非常著名的设计决策是,如果在递归过程中找到记录,则将其完全删除。如果NS以这种方式删除所有记录,则所有查询的结果将SERVFAIL针对所讨论的子域。

简而言之,坚持标准。这是唯一安全的事情。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.