IBM Cloud Docs
设置 DNS 解析器类型

设置 DNS 解析器类型

通过创建与 DNS 中心 VPC 的解析绑定来创建 DNS 共享 VPC 后,必须将共享 VPC 的 DNS 解析器类型设置为“已授权”或“手动”,以便 VPC 可以使用 DNS 中心 VPC 中的定制解析器。

关于解析器类型

有三种 DNS 解析器类型:

  • 系统 是 DNS 服务器的 IBM 缺省设置。 通过此设置,DNS 服务器地址由 DNS Services提供,并且 DNS 中心 VPC 设置为此解析器类型。
  • 授权 用于 DNS 共享的 VPC,以便这些 VPC 可以使用中心 VPC 中的定制解析器。 DNS 服务器地址由解析器为指定的 DNS 共享 VPC 提供。 只能在禁用 DNS 中心的 VPC 上设置此选项。
  • 如果希望 DNS 共享的 VPC 使用中心 VPC 的定制解析器以外的 DNS 解析器,请使用 手动。 此选项用于手动指定的 DNS 服务器地址,以替换任何现有服务器。 您可以使用此选项来配置任何 DNS 服务器 (公共或本地)。

准备工作

在设置 DNS 解析器类型之前,请查看 规划注意事项已知问题和限制

可以通过控制台、CLI、API 或 Terraform 设置 DNS 解析器类型。

在控制台中设置 DNS 解析器类型

要在 DNS 共享 VPC 上设置 DNS 解析器类型,请执行以下步骤:

  1. 从浏览器打开 IBM Cloud 控制台并登录账户。
  2. 选择导航菜单 图标,然后单击基础架构 > 网络 > VPC
  3. 单击要设置其 DNS 解析器类型的 DNS 共享 VPC。
  4. 滚动到“可选 DNS 设置”部分,然后展开 DNS 解析器设置,然后单击 编辑
  5. 在“编辑 DNS 解析器设置”侧面板中,禁用 DNS 中心。
  6. 选择 代表 作为 DNS 解析器类型,然后单击 保存

从 CLI 设置 DNS 解析器类型

要使用 CLI 为 DNS 共享 VPC 设置 DNS 解析器类型,请执行以下步骤:

  1. 设置 CLI 环境

  2. 使用 CLI 登录您的账户。 输入密码后,系统会提示您输入要使用的帐户和区域:

    ibmcloud login --sso
    
  3. 禁用中心 VPC 并指定 DNS 共享 VPC 的 DNS 解析器类型:

    ibmcloud is vpc-create my-cli-vpc [--dns-enable-hub false] [--dns-resolver-type delegate] [--dns-resolver-manual-servers  MANUAL_SERVERS | @MANUAL_SERVERS]
    

    其中:

    --dns-enable-hub
    指定是否为 VPC 启用中心。 在使用 delegate 选项之前,必须禁用 DNS 中心。
    --dns-resolver-type
    指定 VPC 的解析器类型。 值为 system (缺省值),delegatemanual
    --dns-resolver-manual-servers
    配置 VPC 的手动 DNS 服务器地址。 解析器类型为 manual 时有效。

CLI 示例

要配置 manual 服务器:

ibmcloud is vpcu my-vpc --dns-resolver-manual-servers '[
    {
        "address": "190.20.3.2"
    },
    {
        "address": "190.20.3.3"
    }
]'

要配置 delegated 解析器类型:

ibmcloud is vpcu r006-55007c36-fd61-48db-ae22-710b0277e78e --dns-resolver-type delegated --delegate-to-vpc r006-4691ccef-498c-4d8e-9064-bcf13972b1aa

要配置 system 解析器类型:

ibmcloud is vpcu my-vpc --dns-resolver-type system

使用 API 设置 DNS 解析器类型

要使用 API 设置 DNS 解析器类型,请执行以下步骤:

  1. 设置 API 环境

  2. 要设置 DNS 共享 VPC 以使用中心 VPC 的 DNS (使用 delegated 解析器类型):

    curl -X PATCH -sH "Authorization:${iam_token}" "${vpc_api_endpoint}/v1/vpcs/${vpc_id}?version=${api_version}&generation=2" -d '
    {
      "dns": {
        "resolver": {
          "type":"delegated",
          "vpc": {
            "id": "${hub_vpc_id}"
          }
        }
      }
    }'
    
  3. 要设置 VPC 以使用 manual DNS 服务器地址:

    curl -X PATCH -sH "Authorization:${iam_token}" "${vpc_api_endpoint}/v1/vpcs/${vpc_id}?version=${api_version}&generation=2" -d '
    {
      "dns": {
        "resolver": {
          "type": "manual",
          "manual_servers": [
            {
              "address": "10.240.0.10",
              "zone_affinity": {
                "name": "us-south-1"
              }
            },
             {
              "address": "10.240.64.10",
              "zone_affinity": {
                "name": "us-south-2"
              }
            },
            {
              "address": "10.240.128.10",
              "zone_affinity": {
                "name": "us-south-3"
              }
            }
          ]
        }
      }
    }'
    
  4. 要将 VPC 复原到缺省 system 配置:

    curl -X PATCH -sH "Authorization:${iam_token}" "${vpc_api_endpoint}/v1/vpcs/${vpc_id}?version=${api_version}&generation=2" -d '
    {
      "dns": {
        "resolver": {
          "type":"system",
          "vpc": null
        }
      }
    }'
    

使用 Terraform 设置 DNS 解析器类型

可以使用 Terraform 来设置 DNS 解析器类型。

要使用 Terraform,请下载 Terraform CLI 并配置 IBM Cloud 提供者插件。 有关更多信息,请参阅 Terraform 入门

VPC 基础架构服务使用特定于区域的端点,缺省情况下以 us-south 为目标。 如果在另一个区域中创建 VPC,请确保以 provider.tf 文件的提供程序块中的相应区域为目标。

请参阅以下以非缺省 us-south 区域为目标的示例。

provider "ibm" {
  region = "eu-de"
}

要启用具有 manual 解析器类型的 DNS 中心服务器,请执行以下操作:

resource ibm_is_vpc my-vpc {
	name = "my-vpc"
	dns {
		enable_hub = true
		resolver {
			manual_servers     {
				address ="192.168.0.4"
				zone_affinity= "au-syd-1"
			}
			manual_servers{
				address =  "192.168.64.4"
				zone_affinity = "au-syd-2"
			}
			manual_servers{
				address= "192.168.128.4"
				zone_affinity ="au-syd-3"
			}
		}
	}
}

要将 DNS 中心修补为 delegate 解析器类型,请执行以下操作:

resource ibm_is_vpc my-vpc {
	name = "my-vpc"
	dns {
		enable_hub = false

	    resolver {
			type = "delegated"
			vpc_id = ibm_is_vpc.hub_true.id
		}
	}
}

要将 VPC 补丁到 system 解析器类型:

resource ibm_is_vpc my-vpc {
	name = "my-vpc"
	dns {
		enable_hub = false

		resolver {
			type = "system"
			vpc_id = "null"
	    }
	}
}

下一步

DNS 共享 VPC 用户 为 DNS 共享 VPC 中的单租户服务创建 VPE 网关