cname 通配符表达式中可以有一个捕获组吗?

cname 通配符表达式中可以有一个捕获组吗?

我想要一个通配符 CNAME,但要捕获通配符的值:

举个例子,这样的记录d1.com

* CNAME $1.example.com

将创建以下映射:

a.s1.d1.com => a.s1.example.com
a.s2.d1.com => a.s2.example.com

etc

我遇到的一般问题是 CNAME 通配符值仅映射到一个具体目标,但我希望 CNAME 映射到不同顶点/根域上的相同通配符匹配子域。

我的 NS 是 Namecheap,但我可以移动来获得此功能。

这可能吗?

答案1

不在第一级,不,我不这么认为,例如,您不能在域的根目录上拥有 CNAME,如 *.example.com,因为 CNAME 记录必须是唯一的,不仅对其自身而言,而且(与其他 DNS 记录不同)不能有任何其他具有相同名称的记录,并且必然会有其他匹配的记录。

但是您当然可以在子域上执行此操作,例如 *.s1.d1.com(假设 Namecheap 的 UI 支持它),因为 s1.d1.com 不一定有任何其他与其冲突的记录。

答案2

使用标准静态区域,不,除了使用 CNAME 进行固定扩展之外,不可能做任何事情。1

您可以使用以下方式为子树添加别名NAME 记录:

d1.com. DNAME example.com.

或者

s1.d1.com. DNAME s1.example.com.
s2.d1.com. DNAME s2.example.com.
...

DNAME 将作为所有子域名的别名,但不是它可以为自己服务,因此可以放置在任何级别——包括 SOA 旁边的域根目录。


1(但是,自定义编写的 DNS 响应器可以通过动态生成 CNAME 来做任何事情 - 例如,如果您使用 PowerDNS 运行自己的权威名称服务器,您可能能够使用它的 Lua 脚本来生成您想要的任何内容。)

相关内容