【问题标题】:Terraform says I have to create NS records but they appear to be created by default?Terraform 说我必须创建 NS 记录,但它们似乎是默认创建的?
【发布时间】:2021-12-05 14:54:40
【问题描述】:

aws_route53_zone 资源状态的docs

公共子域区域

要在子域中使用,请注意您需要创建一个 NS 类型的 aws_route53_record 以及子域区域。

resource "aws_route53_zone" "main" {
  name = "example.com"
}

resource "aws_route53_zone" "dev" {
  name = "dev.example.com"

  tags = {
    Environment = "dev"
  }
}

resource "aws_route53_record" "dev-ns" {
  zone_id = aws_route53_zone.main.zone_id
  name    = "dev.example.com"
  type    = "NS"
  ttl     = "30"
  records = aws_route53_zone.dev.name_servers
}

但是,当我创建一个公共子域时,它已经包含一条 ns 记录 - 文档是否已过时或者我需要执行其他步骤,例如删除 ns 记录?

【问题讨论】:

    标签: terraform amazon-route53


    【解决方案1】:

    您在这里探索的情况更像是一般的 DNS 怪癖,而不是特定于 Route53 或特定于 Terraform 的问题。

    解析域名时,DNS 客户端将依次递归解析部分名称,从根域名服务器开始了解哪些 DNS 服务器负责 com,然后从那里到哪些服务器负责 @987654322 @,然后最后从那里到dev.example.com

    为了回答这个问题,父域域必须包含NS记录,告诉客户端要向哪些域名服务器重新提问。

    Route53 默认创建NS 记录,区域通过这些记录描述它自己的权威名称服务器。但是,除非 parent 区域也包含相同的记录,否则 DNS 客户端无法找到这些记录。

    话虽如此,您的示例 Terraform 配置在这里所做的是声明我们需要将 NS 记录值从 aws_route53_zone.dev 复制到父区域 aws_route53_zone.main 中,并且在两个地方使用相同的主机名。

    当客户端查找此主机名时,它会首先询问aws_route53_zone.main.name_servers 中给出的名称服务器之一(假设您已在域注册商的设置中正确注册它们),然后这些服务器将使用aws_route53_record.dev-ns 声明的这些记录进行响应,因此客户端将能够向权威名称服务器重新提出问题并获得最终答案。

    为了使其有用,您还需要在dev.example.com 区域中包含至少一个非NS 记录,以便发送到aws_route53_zone.dev.name_servers 的最终问题将返回AAAAAMXCNAME

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      • 2021-11-13
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      相关资源
      最近更新 更多