嵌入通配符的 CNAME

嵌入通配符的 CNAME

我正在尝试设置 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. 永远不会充当通配符,即使它里面有一个星号。

相关内容