【问题标题】:How to set default namesevers for a Google Cloud DNS zone?如何为 Google Cloud DNS 区域设置默认名称服务器?
【发布时间】:2020-09-17 08:36:42
【问题描述】:

我正在使用 Google 的 CloudDNS API 将一堆域批量上传到 Google Cloud。例如,我希望能够覆盖 Google 随机分配的默认名称服务器

  • ns-cloud-e1.google.com
  • ns-cloud-e2.google.com
  • ns-cloud-e3.google.com
  • ns-cloud-e4.google.com

  • n1.domain.com
  • n2.domain.com
  • n3.domain.com

我注意到 Google 的 CloudDNS API 的文档引用了以下内容

nameServerSet(字符串)-

可以选择指定此 ManagedZone 的 NameServerSet。一种 NameServerSet 是一组 DNS 名称服务器,它们都托管相同的 管理区域。大多数用户不会设置此字段。

虽然尝试通过 CloudDNS 使用此属性时,我收到来自 API 的响应,指出通过 data 提供的数据无效。我以"n1.domain.com.,n2.domain.com.,n3.domain.com."的格式通过。我还尝试通过 Google PHP 包中的一组名称服务器和一个 RecordResourceSet 类,但无济于事。

这是我应该遵循的正确格式,还是无法在创建托管区域时预定义名称服务器,而必须在创建区域后执行此操作?

下面的代码示例,$cloud_dns->service 是Google_Service_Dns的一个实例

$cloud_dns->service->managedZones
    ->create(
         'blah',
         new Google_Service_Dns_ManagedZone([
             'dnsName'       => $dns_name_formatted,
             'name'          => 'app-' . $domain_name,
             'description'   => 'Batch Uploaded Domain',
             'nameServerSet' => 'n1.domain.com.,n2.domain.com.,n3.domain.com.'
           ]),
        );

【问题讨论】:

  • 您能否提供您针对 API 运行的代码 sn-p ?请使用代码详细信息更新您的问题。
  • @Wojtek_B 已经这样做了!
  • 你试过没有域名末尾的点吗?像这样n1.domain.com,n2.domain.com,n3.domain.com
  • 不幸的是,我收到以下“'entity.managedZone.nameServerSet' 的值无效:'n1.domain.com,n2.domain.com,n3.domain.com',

标签: gcloud nameservers google-cloud-dns


【解决方案1】:

您不妨考虑向 Google 的公众Issue Tracker 提交此问题。

你不是遇到这个问题的first,这个问题已经 4 岁了,仍然没有答案:-(

无论语言 SDK,底层调用都可以使用 Google 的 APIs Explorer 进行测试,特别是 ManagedZones:create,它方便地包含相关的 API 方法。您可以插入您的值并在浏览器中(安全地)试用,或者:

NAME="yourdomain-com"
DNS="yourdomain.com." # Must end with a period (.)

TOKEN=$(gcloud auth print-access-token)

curl \
--request POST \
--header "Authorization: Bearer ${TOKEN}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data "{\"nameServerSet\":\"n1.domain.com.,n2.domain.com.\",\"name\":\"${NAME}\",\"dnsName\":\"${DNS}\",\"description\":\"\"}" \
"https://dns.googleapis.com/dns/v1/projects/${PROJECT}/managedZones"

我尝试直接使用 API 使用 nameServerSet 来制作请求,但无法。因此,这不是语言 SDK 问题,而是是否|如何设置此属性的问题。

有趣的是,通过控制台创建区域时不能设置名称服务器 (link)。但是,您可以随后更改它们。控制台 POST 到 ManagedZone:changes,例如:

POST https://www.googleapis.com/dns/v1beta2/projects/${PROJECT}/managedZones/${NAME}/changes
{
  "additions": [
    {
      "name": "...",
      "type": "NS",
      "ttl": 21600,
      "rrdatas": [
        "ns-cloud-d1.googledomains.com.",
        "ns-cloud-d3.googledomains.com.",
        "ns-cloud-d4.googledomains.com."
      ]
    }
  ],
  "deletions": [
    {
      "name": "...",
      "type": "NS",
      "ttl": 21600,
      "rrdatas": [
        "n1.domain.com.",
        "n2.domain.com.",
        "n3.domain.com."
      ]
    }
  ]
}

【讨论】:

    猜你喜欢
    • 2017-02-01
    • 2014-02-24
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2021-11-21
    • 1970-01-01
    • 2020-11-09
    相关资源
    最近更新 更多