使用 CNAME 时谁来管理子子域名

使用 CNAME 时谁来管理子子域名

这是 DNS 配置:

blog.example.com CNAME example.host.com

那么如果有人对子域名(例如sub.blog.example.com)进行 DNS 查询,会发生什么情况?

该 DNS 查询是否重定向至example.host.com

或者有关子子域名的 DNS 查询与 CNAME 不匹配?

答案1

首先,DNS 中没有重定向。这是 HTTP 世界中定义和使用的术语,DNS 中不存在。在最好的情况下,在 CNAME 的情况下,您可以谈论别名。

DNS 中的解析算法概述如下https://datatracker.ietf.org/doc/html/rfc1034#section-4.3.2

CNAME 的行为并不像您所想的那样像“子域通配符”。

一旦CNAME存在,下面就不存在任何东西了。因此,尝试使用“子”名称的解析器将得到权威答案,说该名称不存在,应该就此停止。如果它从根向上或向下爬升,它应该找到本身CNAME,然后继续在那里搜索(但不是以通配符的方式)。您可能需要查看提供您似乎想要的语义的记录(查看DNAMEWikipedia 页面CNAMEhttps://en.wikipedia.org/wiki/CNAME_record并查看部分中的相关行DNAME:“但是,对 xyzzy.foo.example.com 的查找将进行 DNAME 映射并返回 xyzzy.bar.example.com 的 A 记录,即 192.0.2.24;如果 DNAME 记录是 CNAME 记录,则此请求将返回未找到的名称。”)。

或者您可以创建*.blog.example.com通配符,可以是CNAME或任何其他东西。请注意,在历史上,CNAME通配符确实造成了很多混乱和错误,因此当您刚开始使用 DNS 时不要使用它(易于在区域文件中精确配置每个名称)

您现在就可以亲自尝试一下:

$ dig www.icann.org CNAME +noall +ans
www.icann.org.      57m53s IN CNAME www.vip.icann.org.

因此我们有了这个 CNAME。如果我们想尝试您的子名称案例:

$ dig test.www.icann.org CNAME +noall +auth
icann.org.      1m57s IN SOA sns.dns.icann.org. noc.dns.icann.org. (
                2022051953 ; serial
                10800      ; refresh (3 hours)
                3600       ; retry (1 hour)
                1209600    ; expire (2 weeks)
                3600       ; minimum (1 hour)
                )

或(默认为 A)

$ dig test.www.icann.org  +noall +auth
icann.org.      2m IN SOA sns.dns.icann.org. noc.dns.icann.org. (
                2022051953 ; serial
                10800      ; refresh (3 hours)
                3600       ; retry (1 hour)
                1209600    ; expire (2 weeks)
                3600       ; minimum (1 hour)
                )

如果您查看状态,您将看到NXDOMAIN这些情况(域不存在)。

相关内容