本页面介绍了如何创建、更新出站端点,以及如何将出站端点与转发可用区和 DNS 服务器政策相关联,以便使用 VPC 网络中的专用 IP 地址直接转发 DNS 查询。通过使用此方法,您可以更精细地控制出站流量。如需详细了解出站端点,请参阅出站端点概览。
准备工作
-
在 Cloud de Confiance 控制台的项目选择器页面上,选择或创建 Cloud de Confiance 项目。
选择或创建项目所需的角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要拥有 Project Creator 角色 (
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予角色。
-
启用 Cloud DNS、Compute Engine 和 Network Services API(如果尚未启用)。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。
确保您有一个 VPC 网络,该网络可连接到您的本地或外部 DNS 域名服务器。在您计划部署出站端点的每个区域中,您的 VPC 网络必须在目标区域中有一个常规子网和一个活跃的区域级代理专用子网(--purpose=REGIONAL_MANAGED_PROXY 和 --role=ACTIVE,最小大小为 /26 或 64 个地址)。如需了解详情,请参阅创建和管理 VPC 网络。
此外,请确保您的本地网络具有区域级代理专用子网 IP 地址范围的返回路由,并配置本地防火墙规则,以允许来自区域级代理专用子网 IP 地址范围的入站 DNS 查询(UDP 和 TCP 端口 53)。
创建出站端点
如需创建出站端点,请执行以下操作:
控制台
在 Cloud de Confiance 控制台中,前往 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/VPC_NETWORK_NAME或VPC_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:端点的可选说明
更新出站端点
如需更新出站端点,请按以下步骤操作:
控制台
在 Cloud de Confiance 控制台中,前往 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:出站端点的更新说明
将端点与转发区域相关联
控制台
在 Cloud de Confiance 控制台中,前往 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": {
"targetNameServers": [
{
"ipv4Address": "TARGET_IP_ADDRESS"
}
],
"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:(可选)转发可用区的更新说明TARGET_IP_ADDRESS:外部或本地 DNS 域名服务器的目标 IPv4 地址(或domainName: TARGET_FQDN)REGION_1和REGION_2:部署端点的区域(forwardingConfig中列出的所有出站端点都必须属于同一 VPC 网络)ENDPOINT_NAME_1:要与转发可用区关联的第一个端点的名称ENDPOINT_NAME_2:要与转发可用区关联的第二个端点的名称
将端点与 DNS 服务器政策相关联
控制台
在 Cloud de Confiance 控制台中,前往 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": {
"targetNameServers": [
{"ipv4Address": "TARGET_IP_ADDRESS"}
],
"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 服务器政策的名称TARGET_IP_ADDRESS:外部或本地备用域名服务器的目标 IPv4 地址REGION_1和REGION_2:端点部署到的区域ENDPOINT_NAME_1:要与 DNS 服务器政策关联的第一个端点的名称ENDPOINT_NAME_2:要与 DNS 服务器政策关联的第二个端点的名称
查看出站端点
如需列出或描述某个区域中的出站端点,请按以下步骤操作:
控制台
在 Cloud de Confiance 控制台中,前往 Cloud DNS 页面。
前往出站端点标签页,查看项目中的所有出站端点、其区域、网络、子网、IP 地址和健康状况。点击出站端点的名称,查看该特定端点的详细信息,例如其说明、常规子网、端点 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 服务器政策解除关联后,请按照以下步骤删除该端点:
控制台
在 Cloud de Confiance 控制台中,前往 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:要删除的出站端点的名称
问题排查
如需查找诊断和解决与出站端点相关的错误的方法,请参阅问题排查。
后续步骤
- 详细了解出站端点。