我想要一个通配符 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 脚本来生成您想要的任何内容。)