创建和更新出站端点

本页面介绍了如何创建和更新出站端点,以及如何将出站端点与转发区域和 DNS 服务器政策相关联,以使用 VPC 网络中的专用 IP 地址直接转发 DNS 查询。通过这种方法,您可以更精细地控制出站流量。如需详细了解出站端点,请参阅 出站端点概览。

准备工作

  1. 在 Google Cloud 控制台的项目选择器页面上, 选择或创建一个 Google Cloud 项目。

    选择或创建项目所需角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
    • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予 角色。

    转到“项目选择器”

  2. 验证是否已为您的 Google Cloud 项目启用结算功能。

  3. 启用 Cloud DNS、Compute Engine 和 Network Services API(如果尚未启用)。

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您已创建项目,则可能已通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。

    启用 API

确保您拥有一个 VPC 网络,该网络可以连接到您的本地或外部 DNS 域名服务器。在您计划部署出站端点的每个区域中,您的 VPC 网络必须在目标区域中拥有常规子网和代理专用子网。如需了解详情,请参阅 创建和管理 VPC 网络。

另请确保您的本地网络具有区域代理专用子网 IP 地址范围的返回路由,并配置本地防火墙规则以允许来自区域代理专用子网 IP 地址范围的入站 DNS 查询(UDP 和 TCP 端口 53)。

创建出站端点

如需创建出站端点,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud DNS 页面。

    转到 Cloud DNS

  2. 前往出站端点 标签页,然后点击创建出站端点 。

  3. 在名称 字段中,输入端点的唯一名称。

  4. (可选)在说明 字段中,输入端点的说明。

  5. 对于区域,选择目标区域。

  6. 在网络 列表中,选择您的 VPC 网络。

  7. 对于子网 ,选择所选区域中的常规子网。

  8. 对于端点 IP 地址,输入 所选子网范围内的有效 IPv4 地址字符串。

  9. 对于代理专用子网,控制台会自动检测 所选 VPC 网络和区域中的区域代理专用子网,以用于出站查询出站。如果未检测到代理专用子网,请点击预留子网 以创建一个,然后再继续。

  10. 点击创建 。

gcloud

运行 gcloud beta dns outbound-endpoints create 命令:

gcloud beta dns outbound-endpoints create ENDPOINT_NAME \
    --project=PROJECT_ID \
    --network=VPC_NETWORK \
    --subnetwork=REGULAR_SUBNET \
    --location=REGION \
    --endpoint-ip=IP_ADDRESS \
    --description=DESCRIPTION

替换以下内容:

  • ENDPOINT_NAME:出站端点的名称
  • PROJECT_ID:您的项目 ID
  • VPC_NETWORK:与出站端点关联的 VPC 网络,例如 projects/PROJECT_ID/global/networks/NETWORK_NAME 或仅 NETWORK_NAME
  • REGULAR_SUBNET:分配端点的内部监听 IP 地址的常规子网,例如 projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME 或仅 SUBNET_NAME
  • REGION:部署端点的区域
  • IP_ADDRESS:常规子网的主要 IP 地址范围内的可用内部 IPv4 地址
  • DESCRIPTION:端点的可选说明

API

运行 outboundEndpoints.create 方法:

POST https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints?outboundEndpointId=ENDPOINT_NAME
{
    "network": "projects/PROJECT_ID/global/networks/VPC_NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/REGULAR_SUBNET",
    "endpointIp": "IP_ADDRESS",
    "description": "DESCRIPTION"
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • REGION:部署端点的区域
  • ENDPOINT_NAME:出站端点的名称
  • VPC_NETWORK:与出站端点关联的 VPC 网络
  • REGULAR_SUBNET:分配端点的内部监听 IP 地址的常规子网
  • IP_ADDRESS:常规子网的主要 IP 地址范围内的可用内部 IPv4 地址
  • DESCRIPTION:端点的可选说明

更新出站端点

如需更新出站端点,请按以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud DNS 页面。

    转到 Cloud DNS

  2. 前往出站端点 标签页,然后点击要更新的出站端点的名称。

  3. 点击修改,更新说明字段,然后点击保存。

gcloud

运行 gcloud beta dns outbound-endpoints update 命令:

gcloud beta dns outbound-endpoints update ENDPOINT_NAME \
    --project=PROJECT_ID \
    --location=REGION \
    --description=UPDATED_DESCRIPTION

替换以下内容:

  • ENDPOINT_NAME:要更新的出站端点的名称
  • PROJECT_ID:您的项目 ID
  • REGION:部署端点的区域
  • UPDATED_DESCRIPTION:端点的可选更新说明

API

运行 outboundEndpoints.patch 方法:

PATCH https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME?updateMask=description
{
    "description": "UPDATED_DESCRIPTION"
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • REGION:部署端点的区域
  • ENDPOINT_NAME:要更新的出站端点的名称
  • UPDATED_DESCRIPTION:出站端点的更新说明

将端点与转发区域相关联

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud DNS 页面。

    转到 Cloud DNS

  2. 前往区域 标签页,然后点击创建区域,或选择现有 转发区域并点击修改。

  3. 配置区域参数:

    1. 对于区域类型 ,选择专用 。
    2. 对于区域名称,输入区域的唯一标识符。
    3. 对于 DNS 名称 ,输入要转发的域名后缀。例如,corp.example.com。
    4. (可选)对于说明,输入说明。
    5. 对于选项 ,选择将查询转发到其他服务器 。
    6. 对于网络,选择有权 针对此区域解析查询的 VPC 网络。
  4. 在目标 DNS 服务器下,输入外部/本地域名服务器的目标 IPv4 地址或 FQDN。

  5. 对于转发路径 ,选择出站端点 。

  6. 在出站端点下,选择一个或多个端点来处理查询 转发:

    • 最少选择数量:选择至少一个出站端点(必需 当选择出站端点作为转发路径时)。
    • 单个 VPC 限制:所有选定的端点都必须 属于同一 VPC 网络。
    • 高可用性 (HA) 最佳实践:对于跨区域灾难 恢复和自动故障切换,请在该 VPC 网络中配置并选择至少两个位于不同区域的 端点。
  7. 点击创建 (或对于现有区域,点击保存 )。

gcloud

使用 gcloud beta dns managed-zones update 命令将端点与转发区域相关联:

gcloud beta dns managed-zones update ZONE_NAME \
    --project=PROJECT_ID \
    --outbound-endpoints=projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1,projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2

替换以下内容:

  • ZONE_NAME:要更新的转发区域的名称
  • PROJECT_ID:您的项目 ID
  • REGION_1 和 REGION_2:部署端点的区域
  • ENDPOINT_NAME_1:要与转发区域关联的第一个端点的名称
  • ENDPOINT_NAME_2:要与转发区域关联的第二个端点的名称

API

运行 managedZones.patch 方法:

PATCH https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/managedZones/ZONE_NAME
{
    "name": "ZONE_NAME",
    "dnsName": "DNS_NAME",
    "description": "DESCRIPTION",
    "visibility": "private",
    "forwardingConfig": {
        "outboundEndpoints": [
              {
                 "name": "projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1"
              },
              {
                 "name": "projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2"
              }
        ]
    }
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • ZONE_NAME:要更新的转发区域的名称
  • DNS_NAME:转发区域的 DNS 名称
  • DESCRIPTION:(可选)转发区域的更新说明
  • REGION_1 和 REGION_2:部署端点的区域(forwardingConfig 中列出的所有出站端点都必须属于同一 VPC 网络)
  • ENDPOINT_NAME_1:要与转发区域关联的第一个端点的名称
  • ENDPOINT_NAME_2:要与转发区域关联的第二个端点的名称

将端点与 DNS 服务器政策相关联

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud DNS 页面。

    转到 Cloud DNS

  2. 前往 DNS 服务器政策 标签页,然后点击创建政策 (或选择现有 DNS 服务器政策并点击修改 )。

  3. 配置以下内容:

    1. 对于政策名称,输入服务器政策的唯一名称。
    2. (可选)对于说明,输入说明。
    3. 对于入站查询转发,指定外部客户端是否将 使用入站端点查询 VPC 工作负载。
    4. 对于 DNS64,根据需要启用或停用 IPv6 合成。
    5. 对于日志,根据需要启用或停用 DNS 日志记录。
    6. 对于 VPC 网络 ,选择服务器政策适用的 VPC 网络。
  4. 在备用 DNS 服务器下,输入外部或本地域名服务器的目标 IPv4 地址。

  5. 对于转发路径 ,选择出站端点 。

  6. 在出站端点 下,选择一个或多个端点来路由所有 非专用 VPC 查询:

    • 最少选择数量:选择至少一个出站端点。
    • 单个 VPC 限制:所有选定的端点都必须 属于同一 VPC 网络。
    • 高可用性 (HA) 最佳实践:对于跨区域灾难 恢复和自动故障切换,请在该 VPC 网络中配置并选择至少两个位于不同区域的 端点。
  7. 点击创建 (或对于现有政策,点击保存 )。

gcloud

使用 gcloud beta dns policies update 命令将端点与 DNS 服务器政策相关联:

gcloud beta dns policies update POLICY_NAME \
    --project=PROJECT_ID \
    --outbound-endpoints=projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1,projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2

替换以下内容:

  • POLICY_NAME:要更新的 DNS 服务器政策的名称
  • PROJECT_ID:您的项目 ID
  • REGION_1 和 REGION_2:部署端点的区域
  • ENDPOINT_NAME_1:要与 DNS 服务器政策关联的第一个端点的名称
  • ENDPOINT_NAME_2:要与 DNS 服务器政策关联的第二个端点的名称

API

运行 policies.patch 方法:

PATCH https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/policies/POLICY_NAME
{
    "alternativeNameServerConfig": {
        "outboundEndpoints": [
            {"name": "projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1"},
            {"name": "projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2"}
        ]
    }
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • POLICY_NAME:要更新的 DNS 服务器政策的名称
  • REGION_1 和 REGION_2:部署端点的区域
  • ENDPOINT_NAME_1:要与 DNS 服务器政策关联的第一个端点的名称
  • ENDPOINT_NAME_2:要与 DNS 服务器政策关联的第二个端点的名称

查看出站端点

如需列出或描述某个区域中的出站端点,请按以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud DNS 页面。

    转到 Cloud DNS

  2. 前往出站端点 标签页,以查看项目中的所有出站端点及其区域、网络、子网、IP 地址和健康状况。

gcloud

如需列出某个区域中的所有出站端点,请运行 gcloud beta dns outbound-endpoints list 命令:

gcloud beta dns outbound-endpoints list \
    --project=PROJECT_ID \
    --location=REGION

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • REGION:部署端点的区域

如需查看特定出站端点的详细信息,请运行 gcloud beta dns outbound-endpoints describe 命令:

gcloud beta dns outbound-endpoints describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --location=REGION

替换以下内容:

  • ENDPOINT_NAME:出站端点的名称
  • PROJECT_ID:您的项目 ID
  • REGION:部署端点的区域

API

如需列出某个区域中的所有出站端点,请发送 GET 请求:

GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • REGION:部署端点的区域

如需查看特定出站端点的详细信息,请发送 GET 请求:

GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • REGION:部署端点的区域
  • ENDPOINT_NAME:出站端点的名称

删除出站端点

如需删除出站端点,您必须先将其与引用它的任何转发区域或 DNS 服务器政策取消关联。如需了解详情, 请参阅管理与出站端点关联的网络资源。

将出站端点与所有转发区域和 DNS 服务器政策取消关联后,请按以下步骤删除该端点:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud DNS 页面。

    转到 Cloud DNS

  2. 前往出站端点 标签页。

  3. 选择要删除的出站端点,然后点击删除 。

gcloud

运行 gcloud beta dns outbound-endpoints delete 命令:

gcloud beta dns outbound-endpoints delete ENDPOINT_NAME \
    --project=PROJECT_ID \
    --location=REGION

替换以下内容:

  • ENDPOINT_NAME:要删除的出站端点的名称
  • PROJECT_ID:您的项目 ID
  • REGION:部署端点的区域

API

使用 outboundEndpoints.delete 方法:

DELETE https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • REGION:部署端点的区域
  • ENDPOINT_NAME:要删除的出站端点的名称

问题排查

如需查找诊断和解决与出站 端点相关的错误的方法,请参阅问题排查。

后续步骤