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


在一些工作职责的过程中,我需要了解SRV记录,并且我正在尝试将Wikipedia声明与我在DNS挖掘中看到的内容进行协调。

根据 维基百科的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记录,而不是地址记录?


13
2018-03-23 22:28




在我的公司,我们经常使用SRV记录,并且大多数都使用CNAME并且它工作正常,所以违反规则与否,它运作良好:) - olivierg


答案:


您引用的维基百科文章报道相关内容 RFC 2782 对于SRV记录状态:

目标

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

你所看到的是明显违反规则;但是,它 威力 工作(和它 平时 如果任何客户端应用程序正在寻找SRV记录足够智能以正确处理CNAME记录,即使它只应该在响应中期望A记录。

但它也可能  完全工作:它不受支持,完全依赖于客户端应用程序;因此应该避免,因为它没有遵循适当的规则,可能导致错误和/或不可预测的结果。

这类似于将MX记录指向CNAME,CNAME定义为 错了 不仅如此 但是  RFC,但这是很常见的做法(并没有邮件服务器似乎有问题)。


9
2018-03-23 22:50



请记住,“足够聪明”是相对的。一些软件设计人员认为,忍受脑implementations实现只会鼓励更多相同的实现。 RFC 2781只是由一个RFC更新,关于期望的内容的语言是非常坚定的,所以我不希望这里有多少怜悯。 - Andrew B
大多数客户端应用程序仅依靠系统库来执行DNS查询,并且大多数库(尤其是更高级别的语言)将尽力解决您向其发出的任何查询,并将愉快地静默地跟随CNAME到其目标A记录和IP地址。 - Massimo
该应用程序不需要太多的智能,它只会询问O.S.连接到端口4443上的“alias.domain.com”并保留所有详细信息。 - Massimo
如果上游recursor拒绝权威数据并拒绝继续,则客户端应用程序和系统库将无法遵循别名。 (这是我所指的相对聪明)BIND的处理 NS 记录和禁止别名是这方面的典型例子。无论如何,我们同意这是任何人的游戏都有不可预测的结果。 - Andrew B
某些邮件服务器开始主动忽略MXes到CNAME,例如GMX medienconsulting.at/... - Marcel Waldvogel


这是限制行为的一个例子,是的。限制本身来自 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服务器软件并不是什么新鲜事。它可以而且确实发生,就像禁止别名目标的其他记录类型一样 NS 和 MX。 (上文提到的)

仅仅因为它可以在野外发现并不意味着它是“好的”,并且当标准被忽略时会发生什么因产品而异。我还没有测试过互动 SRV 记录,但ISC BIND关于的一个非常着名的设计决定 NS 指向别名的记录是 完全放弃记录 如果在递归期间发现。我摔倒 NS 记录以这种方式被删除,所有查询的结果都将是 SERVFAIL 对于有问题的子域名。

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


1
2018-03-23 22:48