DNS 客户端自动查找 CNAME 记录

DNS 客户端自动查找 CNAME 记录

我们刚刚迁移到新的内部 DNS 解析器,发现了影响我们查找特定记录的能力的限制。

我们的内部(私有)权威域名是example.net.。我们有一个 CNAME 记录,可service.example.net.解析为name-1234567890.region.elb.amazonaws.com.

name-1234567890.region.elb.amazonaws.com.解析为各种 A 记录,其值由 AWS 管理。我们不管理公共 amazonaws.com 区域,也不管理此区域内的记录。

我们之前的 DNS 解析器会“追踪” CNAME 记录,因此查找service.example.net.可能会返回以下内容:

$ dig service.example.net
...
;; ANSWER SECTION:
service.example.net.    300 IN  CNAME   name-1234567890.region.elb.amazonaws.com.
name-1234567890.region.elb.amazonaws.com. 26 IN A 10.1.2.3
name-1234567890.region.elb.amazonaws.com. 26 IN A 10.1.2.4

答案包括 CNAME 指向的 A 记录的 IP。一切顺利。

我们的新 DNS 解析器不会“追踪” CNAME 记录。使用新解析器进行的相同查找如下所示:

$ dig service.example.net
...
;; ANSWER SECTION:
service.example.net.    300 IN  CNAME   name-1234567890.region.elb.amazonaws.com.

...请注意缺少的 A 记录。尝试service.example.net通过 ping、curl、python 请求等进行联系均会导致“未知主机”失败。

我们无法更改新 DNS 解析器的行为。Linux 内核或某些本地 DNS 解析器中是否有某些选项可以“追踪”来自客户端的 CNAME 记录,就像我们旧的 DNS 解析器在服务器端所做的那样?

就上下文而言,我们的新 DNS 解析器是 GCP 的 cloud-dns,它文件这种行为。

一些额外的上下文/评论答案:

  • example.net. 是我们拥有的 cloud-dns 中的一个私有内部管理区域。
  • amazonaws.com 是一个公共区域,由 AWS 管理。
  • irc,带有附加名称服务器的出站服务器策略将发送全部查询这些名称服务器,覆盖云 DNS
  • irc,ALIAS 记录仅在公共区域可用,而不是在私有区域可用。
  • service.exmaple.net. 是私有托管云 DNS 区域 example.net 中的 CNAME 记录。
  • 我们在 AWS 中没有业务,因此无法使用 route53。

答案1

不要直接指向负载均衡器的内部 IP,而是需要指向负载均衡器的公共 DNS 名称

name-1234567890.region.elb.amazonaws.com

因此,删除 a 记录并将 cname 值更改为负载均衡器的公共 DNS 名称

答案2

我想提供关于这个问题的最新信息。自从发现这个问题以来,GCP 开始为 cloud-dns 推出一项实验性功能,该功能确实会追踪公共 CNAME 记录。在撰写本文时(2024 年 4 月),需要向 GCP 支持明确请求此功能。我不确定它什么时候会正式发布。

在推出该功能之前,我们通过amazonaws.com在我们的云 DNS 中创建一个私有转发区域(例如:)来解决这个问题,该区域会转发到公共 DNS 解析器(我们使用 8.8.8.8、1.1.1.1 等)。这种方法有效,因为在私有区域之间的云 DNS 中启用了 CNAME 追踪。由于amazonaws.com现在被云 DNS 视为私有区域,因此 CNAME 追踪请求现在可以正常解析。

答案3

为了解析 aws 记录,我建议从 aws 查看 route53。您可以让您的内部 dns 服务器转发到 route53,例如 unbound 就是一个可以执行此操作的 dns 循环程序

Amazon Route 53 是 Amazon Web Services (AWS) 提供的可扩展且高度可用的域名系统 (DNS) Web 服务。它有效地将用户友好的域名(如 example.com)转换为计算机用来在互联网上相互识别的 IP 地址。以下是 Route 53 的一些主要功能和概念的概述:

  • 域名注册:Route 53 允许您注册和管理域名。您可以购买新域名或将现有域名转移到 Route 53。
  • DNS 服务:Route 53 充当 DNS 服务提供商,允许您管理域的 DNS 记录。DNS 记录包括 A 记录(将域名映射到 IP 地址)、CNAME 记录(将域名映射到其他域名)、MX 记录(指定邮件服务器)等。健康检查和故障转移:Route 53 可以对您的终端节点(例如 Web 服务器)执行健康检查,并自动将流量从不健康的终端节点路由到健康的终端节点。此功能通常用于实施故障转移和灾难恢复解决方案。
  • 流量管理:Route 53 提供流量管理功能,让您能够根据各种因素(例如延迟、地理位置、加权路由等)控制 DNS 查询的路由方式。这让您能够优化应用程序的性能和可用性。与 AWS 服务集成:Route 53 可与其他 AWS 服务无缝集成,例如 Amazon S3、Elastic Load Balancing (ELB) 和 Amazon CloudFront。例如,您可以使用 Route 53 将流量路由到您的 ELB 负载均衡器或 CloudFront 分发。
  • DNSSEC:Route 53 支持 DNS 安全扩展 (DNSSEC),它通过对 DNS 记录进行数字签名为您的 DNS 基础设施增加了一层额外的安全保护。总体而言,Route 53 是一种多功能且可靠的 DNS 服务,为将流量路由到互联网上的应用程序和服务奠定了基础。它提供了用于管理 DNS、提高性能和确保高可用性的高级功能。

相关内容