CNAME 可以用于主 DNS 记录吗?

Mar*_*ppi 7 domain-name-system

我已经设置了一个托管服务,作为该服务的一部分,我需要在我们的域名服务器中为所有托管的域自动创建 DNS 记录。

目前我正在使用以下模板:

;
; [USER] - [DOMAIN]
;
$TTL    604800
@    IN    SOA    [PRIMARY-NS].    [NS-ADMIN]. (
                       [SERIAL] ; Serial
                           10800 ; Refresh
                            3600 ; Retry
                         1209600 ; Expire
                           43200 ; Negative Cache TTL
)
;
@    IN    NS    [NS1]. ; Nameserver
@    IN    NS    [NS2]. ; Nameserver
@    IN    A     [SERVER-IP] ; Primary IP
*    IN    A     [CATCH-ALL-IP] ; Catch-all IP
@    IN    MX    0 mail
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如果我将主要 A 记录语句替换为该服务器的 DNS 条目的 CNAME - 会有任何不利影响吗?这将使我的服务器上的 IP 管理更加容易,因为我只需要更新一个 DNS 记录。

@    IN    CNAME     [SERVER-DOMAIN-NAME]
*    IN    CNAME     [SERVER-DOMAIN-NAME]
Run Code Online (Sandbox Code Playgroud)

这是个主意吗?或者这只会给这些记录的 DNS 查找带来麻烦?

Aln*_*tak 14

不,你不能这样做

@ IN CNAME ...
Run Code Online (Sandbox Code Playgroud)

因为CNAME记录类型不允许与您必须在区域顶点(或任何其他资源记录类型,就此而言,DNSSEC 相关记录除外)的(必需)SOANS记录共存。

请参阅RFC 1034 的s3.6.2 :

如果节点上存在 CNAME RR,则不应存在其他数据;这可确保规范名称及其别名的数据不能不同。此规则还确保可以使用缓存的 CNAME,而无需向权威服务器检查其他 RR 类型。