我正在尝试设置 CNAME DNS 条目:
start.*.example.com
与以下域名匹配:
start.a.b.c.example.com
start.a.example.com
这可能吗?我目前在 networksolutions.com 上的测试失败了。
它之前作为 A 记录通配符 (*.exmaple.com) 工作 - 但我希望它作为 CNAME 工作。
答案1
start.*.example.com
DNS 通配符不像这样工作,所以您不能这样做(作为通配符),因此“嵌入式通配符”在 DNS 世界中不存在。
这不是记录类型(与其他任何类型CNAME
相比A
)或所使用的 DNS 提供商的问题,而是通配符必须是第一个标签,*
然后是其他标签。
所以*.example.com
是通配符(因此将在 DNS 交换期间触发特定行为,匹配多个名称)但start.*.example.com
不是通配符:您当然可以CNAME
用这个名称创建一条记录,但是它只会匹配自身,包括星号,绝对不会匹配其他任何内容(不匹配任何其他名称)
参见 RFC 1034:
4.3.3. 通配符
在以前的算法中,所有者名称以标签“*”开头的 RR 会得到特殊处理。此类 RR 称为通配符。
然后:
通配符 RR 的内容遵循 RR 的通常规则和格式。区域中的通配符具有所有者名称,该名称控制它们将匹配的查询名称。通配符 RR 的所有者名称的格式为“*.”,其中 是任何域名。
如果您需要匹配单个事物,则可以创建通配符*.example.com
和两者start.a.example.com
,并且start.a.b.c.example.com
将匹配通配符记录,但是与任何其他名称一样,其中start
和/或a
和/或b
和/或被c
其他内容替换。
维基百科条目https://en.wikipedia.org/wiki/Wildcard_DNS_record内容和上面完全相同:
假设有一个具有以下资源记录的 DNS 区域:
[...]
*.example. 3600 TXT "this is a wildcard" *.example. 3600 MX 10 host1.example. sub.*.example. 3600 TXT "this is not a wildcard"
[...]
下列响应将从区域中的一个通配符合成:
[...]
foo.bar.example. TXT 答案将是“foo.bar.example. IN TXT ...”,因为 bar.example. 不存在,但通配符存在。
[...]
下列响应不能由区域中的任何通配符合成:
[...]
sub.*.example. MX 通配符不匹配,因为 sub.*.example. 存在。域名 sub.*.example. 永远不会充当通配符,即使它里面有一个星号。