我需要为已有 A 记录的子域设置通配符 DNS 记录。我不确定是否必须为此使用新的 A 记录,或者是否可以使用指向 A 记录的 CNAME。
我的脚本具有以下域结构
http(s)://{random_code}.{location_subdomain}.{domain.com}/{path}
- {random_code} - 我们使用随机代码作为解决浏览器实现的 HTTP 套接字限制的解决方案。(仅用于将动态元素加载到页面上 - 因此只能通过查看网页源代码来查看,而用户浏览器中的 URL 仅显示位置子域)
- {location_subdomain} - 我们从距离用户最近的服务器加载内容,因此每个位置都有一个指向不同服务器的 A 记录(所有位置服务器上的内容都是 1:1)。
- {domain.com} - 指向托管索引页的前端服务器
- {path} - 自我探索
当前 DNS 区域文件
domain.org. 86400 IN NS dns1.domain.org.
domain.org. 86400 IN NS dns2.domain.org.
domain.org. 86400 IN NS dns3.domain.org.
domain.org. 86400 IN NS dns4.domain.org.
domain.org. 14400 IN A 1.1.1.1
localhost 14400 IN A 127.0.0.1
www 14400 IN CNAME domain.org.
ftp 14400 IN A 1.1.1.1
france 3600 IN A 2.2.2.2
phoenix 3600 IN A 3.3.3.3
nl 3600 IN A 4.4.4.4
* 14400 IN A 1.1.1.1
但我需要为每个指向同一地址的位置 A 记录添加通配符。例如,{randome_code}.phoenix.{domain.com} 将指向 3.3.3.3,同时仍确保 phoenix.{domain.com} 仍指向同一 IP。
我是否只需要为每个位置创建这样的新 A 记录,同时保留非通配符记录?
*.france 3600 IN A 2.2.2.2
*.phoenix 3600 IN A 3.3.3.3
*.nl 3600 IN A 4.4.4.4
我以为这将是一次额外的查找,所以我认为我可以使用 CNAME,但我不确定添加指向已创建的 A 记录的通配符 CNAME 记录的正确格式,同时仍保持原始通配符工作,以便任何未使用位置子域的查找仍将通过我们的前端 Web 服务器地址来回答。
或者我完全搞错了,我不能在根域和 A 记录上使用通配符吗?
答案1
你那里有什么:
*.france 3600 IN A 2.2.2.2
将完全按照您期望的方式工作;查询abc.france.example.com
将从通配符记录中获取答案A
,同时france.example.com
仍将从中获取其数据france 3600 IN A 2.2.2.2
。
不需要额外的查找,因为您没有进行额外的委派。
如果您更容易管理,您还可以使用CNAME
:
*.france 3600 IN CNAME france
通常CNAME
会导致额外的查找,但在这种情况下不会;所引用的记录位于同一区域,因此您的 DNS 服务器将使用 的“答案”进行响应CNAME
,同时包括 的相关A
记录france.example.com
。