在 A 记录上正确实施通配符 DNS

在 A 记录上正确实施通配符 DNS

我需要为已有 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

相关内容