本页面介绍了如何创建和更新出站端点,以及如何将出站端点与转发区域和 DNS 服务器政策相关联,以使用 VPC 网络中的专用 IP 地址直接转发 DNS 查询。通过这种方法,您可以更精细地控制出站流量。如需详细了解出站端点,请参阅 出站端点概览。
准备工作
-
在 Google Cloud 控制台的项目选择器页面上, 选择或创建一个 Google Cloud 项目。
选择或创建项目所需角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要拥有 Project Creator 角色
(
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予 角色。
-
验证是否已为您的 Google Cloud 项目启用结算功能。
-
启用 Cloud DNS、Compute Engine 和 Network Services API(如果尚未启用)。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您已创建项目,则可能已通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。
确保您拥有一个 VPC 网络,该网络可以连接到您的本地或外部 DNS 域名服务器。在您计划部署出站端点的每个区域中,您的 VPC 网络必须在目标区域中拥有常规子网和代理专用子网。如需了解详情,请参阅 创建和管理 VPC 网络。
另请确保您的本地网络具有区域代理专用子网 IP 地址范围的返回路由,并配置本地防火墙规则以允许来自区域代理专用子网 IP 地址范围的入站 DNS 查询(UDP 和 TCP 端口 53)。
创建出站端点
如需创建出站端点,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud DNS 页面。
前往出站端点 标签页,然后点击创建出站端点 。
在名称 字段中,输入端点的唯一名称。
(可选)在说明 字段中,输入端点的说明。
对于区域,选择目标区域。
在网络 列表中,选择您的 VPC 网络。
对于子网 ,选择所选区域中的常规子网。
对于端点 IP 地址,输入 所选子网范围内的有效 IPv4 地址字符串。
对于代理专用子网,控制台会自动检测 所选 VPC 网络和区域中的区域代理专用子网,以用于出站查询出站。如果未检测到代理专用子网,请点击预留子网 以创建一个,然后再继续。
点击创建 。
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:您的项目 IDVPC_NETWORK:与出站端点关联的 VPC 网络,例如projects/PROJECT_ID/global/networks/NETWORK_NAME或仅NETWORK_NAMEREGULAR_SUBNET:分配端点的内部监听 IP 地址的常规子网,例如projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME或仅SUBNET_NAMEREGION:部署端点的区域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:您的项目 IDREGION:部署端点的区域ENDPOINT_NAME:出站端点的名称VPC_NETWORK:与出站端点关联的 VPC 网络REGULAR_SUBNET:分配端点的内部监听 IP 地址的常规子网IP_ADDRESS:常规子网的主要 IP 地址范围内的可用内部 IPv4 地址DESCRIPTION:端点的可选说明
更新出站端点
如需更新出站端点,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往 Cloud DNS 页面。
前往出站端点 标签页,然后点击要更新的出站端点的名称。
点击修改,更新说明字段,然后点击保存。
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:您的项目 IDREGION:部署端点的区域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:您的项目 IDREGION:部署端点的区域ENDPOINT_NAME:要更新的出站端点的名称UPDATED_DESCRIPTION:出站端点的更新说明
将端点与转发区域相关联
控制台
在 Google Cloud 控制台中,前往 Cloud DNS 页面。
前往区域 标签页,然后点击创建区域,或选择现有 转发区域并点击修改。
配置区域参数:
- 对于区域类型 ,选择专用 。
- 对于区域名称,输入区域的唯一标识符。
- 对于 DNS 名称 ,输入要转发的域名后缀。例如,
corp.example.com。 - (可选)对于说明,输入说明。
- 对于选项 ,选择将查询转发到其他服务器 。
- 对于网络,选择有权 针对此区域解析查询的 VPC 网络。
在目标 DNS 服务器下,输入外部/本地域名服务器的目标 IPv4 地址或 FQDN。
对于转发路径 ,选择出站端点 。
在出站端点下,选择一个或多个端点来处理查询 转发:
- 最少选择数量:选择至少一个出站端点(必需 当选择出站端点作为转发路径时)。
- 单个 VPC 限制:所有选定的端点都必须 属于同一 VPC 网络。
- 高可用性 (HA) 最佳实践:对于跨区域灾难 恢复和自动故障切换,请在该 VPC 网络中配置并选择至少两个位于不同区域的 端点。
点击创建 (或对于现有区域,点击保存 )。
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:您的项目 IDREGION_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:您的项目 IDZONE_NAME:要更新的转发区域的名称DNS_NAME:转发区域的 DNS 名称DESCRIPTION:(可选)转发区域的更新说明REGION_1和REGION_2:部署端点的区域(forwardingConfig中列出的所有出站端点都必须属于同一 VPC 网络)ENDPOINT_NAME_1:要与转发区域关联的第一个端点的名称ENDPOINT_NAME_2:要与转发区域关联的第二个端点的名称
将端点与 DNS 服务器政策相关联
控制台
在 Google Cloud 控制台中,前往 Cloud DNS 页面。
前往 DNS 服务器政策 标签页,然后点击创建政策 (或选择现有 DNS 服务器政策并点击修改 )。
配置以下内容:
- 对于政策名称,输入服务器政策的唯一名称。
- (可选)对于说明,输入说明。
- 对于入站查询转发,指定外部客户端是否将 使用入站端点查询 VPC 工作负载。
- 对于 DNS64,根据需要启用或停用 IPv6 合成。
- 对于日志,根据需要启用或停用 DNS 日志记录。
- 对于 VPC 网络 ,选择服务器政策适用的 VPC 网络。
在备用 DNS 服务器下,输入外部或本地域名服务器的目标 IPv4 地址。
对于转发路径 ,选择出站端点 。
在出站端点 下,选择一个或多个端点来路由所有 非专用 VPC 查询:
- 最少选择数量:选择至少一个出站端点。
- 单个 VPC 限制:所有选定的端点都必须 属于同一 VPC 网络。
- 高可用性 (HA) 最佳实践:对于跨区域灾难 恢复和自动故障切换,请在该 VPC 网络中配置并选择至少两个位于不同区域的 端点。
点击创建 (或对于现有政策,点击保存 )。
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:您的项目 IDREGION_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:您的项目 IDPOLICY_NAME:要更新的 DNS 服务器政策的名称REGION_1和REGION_2:部署端点的区域ENDPOINT_NAME_1:要与 DNS 服务器政策关联的第一个端点的名称ENDPOINT_NAME_2:要与 DNS 服务器政策关联的第二个端点的名称
查看出站端点
如需列出或描述某个区域中的出站端点,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往 Cloud DNS 页面。
前往出站端点 标签页,以查看项目中的所有出站端点及其区域、网络、子网、IP 地址和健康状况。
gcloud
如需列出某个区域中的所有出站端点,请运行 gcloud beta dns outbound-endpoints list 命令:
gcloud beta dns outbound-endpoints list \
--project=PROJECT_ID \
--location=REGION
替换以下内容:
PROJECT_ID:您的项目 IDREGION:部署端点的区域
如需查看特定出站端点的详细信息,请运行 gcloud beta dns outbound-endpoints describe 命令:
gcloud beta dns outbound-endpoints describe ENDPOINT_NAME \
--project=PROJECT_ID \
--location=REGION
替换以下内容:
ENDPOINT_NAME:出站端点的名称PROJECT_ID:您的项目 IDREGION:部署端点的区域
API
如需列出某个区域中的所有出站端点,请发送 GET 请求:
GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints
替换以下内容:
PROJECT_ID:您的项目 IDREGION:部署端点的区域
如需查看特定出站端点的详细信息,请发送 GET 请求:
GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME
替换以下内容:
PROJECT_ID:您的项目 IDREGION:部署端点的区域ENDPOINT_NAME:出站端点的名称
删除出站端点
如需删除出站端点,您必须先将其与引用它的任何转发区域或 DNS 服务器政策取消关联。如需了解详情, 请参阅管理与出站端点关联的网络资源。
将出站端点与所有转发区域和 DNS 服务器政策取消关联后,请按以下步骤删除该端点:
控制台
在 Google Cloud 控制台中,前往 Cloud DNS 页面。
前往出站端点 标签页。
选择要删除的出站端点,然后点击删除 。
gcloud
运行 gcloud beta dns outbound-endpoints delete 命令:
gcloud beta dns outbound-endpoints delete ENDPOINT_NAME \
--project=PROJECT_ID \
--location=REGION
替换以下内容:
ENDPOINT_NAME:要删除的出站端点的名称PROJECT_ID:您的项目 IDREGION:部署端点的区域
API
使用 outboundEndpoints.delete 方法:
DELETE https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME
替换以下内容:
PROJECT_ID:您的项目 IDREGION:部署端点的区域ENDPOINT_NAME:要删除的出站端点的名称
问题排查
如需查找诊断和解决与出站 端点相关的错误的方法,请参阅问题排查。
后续步骤
- 详细了解出站端点。