使用 MD5 身份验证
Cloud Router 路由器使用边界网关协议 (BGP) 在 Virtual Private Cloud (VPC) 网络和对等网络之间交换路由。默认情况下,Cloud Router BGP 会话未经身份验证。但是,将 Cloud Router 路由器用于某些产品时,您可以选择将 BGP 会话配置为使用 MD5 身份验证。
可以使用 MD5 身份验证的产品包括:
您还可以将 MD5 身份验证用于第三方服务虚拟设备。如需了解详情,请参阅 Network Connectivity Center 文档中的路由器设备。
将会话配置为使用 MD5 身份验证时,您需要提供一个密钥共享密钥,即您在配置 Cloud Router 路由器时使用的密钥,以及在配置对等路由器时再次使用的密钥。完成所需的设置步骤后,Cloud Router 路由器会使用该密钥对 BGP 对等端进行身份验证。Cloud Router 路由器使用 RFC 2385 中描述的模型强制执行 MD5 身份验证。
您可以在创建对等端时添加 MD5 身份验证。您还可以向现有会话添加身份验证、更改会话使用的密钥,或者移除身份验证。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 如果您使用的是 Google Cloud CLI,请运行以下命令来设置项目 ID。此页面上的
gcloud
说明假定您已设置项目 ID。gcloud config set project PROJECT_ID
-
运行以下命令,确认已设置该 ID:
gcloud config list --format='text(core.project)'
创建使用身份验证的会话
对于某些网络连接产品,您可以在创建资源时配置 BGP 对等端以使用 MD5 身份验证。这些产品包括高可用性 VPN 和专用互连。
如需了解详情,请参阅以下部分:
如果要创建第 2 层合作伙伴互连 VLAN 连接,请先创建连接,然后更新 BGP 对等端以添加 MD5 身份验证。如需了解如何在更新 BGP 会话时添加身份验证,请参阅以下部分。如果您有第 3 层连接,请联系您的服务提供商以了解相关说明。
向现有会话添加身份验证
如需向现有 BGP 对等端添加身份验证,请执行以下步骤之一。添加身份验证时,请确保您使用的密钥与对等路由器使用的密钥相同。
Google Cloud 不显示 MD5 身份验证密钥,并且仅在成功配置后显示密钥名称。
- 如果您通过 gcloud 或界面配置 MD5 身份验证,Google Cloud 会自动生成
PEER_NAME-key
形式的密钥名称。 - 如果您通过 API 配置 MD5 身份验证,则可以指定密钥名称。
控制台
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
在名称字段中,点击相应 Cloud Router 路由器的名称。
在路由器详情页面上,点击要修改的 BGP 会话的名称。
在 BGP 会话详情页面中,点击
修改。如需添加 MD5 身份验证,请执行以下操作:
- 在 MD5 身份验证部分中,选择启用。页面会更新以包含文本字段。
- 输入安全密钥,或生成新的安全密钥,然后点击生成并复制。
- 记下密钥。离开此页面后,您将无法检索密钥。
点击保存。
gcloud
如需使用 gcloud CLI 更新会话,请使用 gcloud compute routers update-bgp-peer
命令:
gcloud compute routers update-bgp-peer ROUTER_NAME \ --peer-name=PEER_NAME \ --region=REGION \ --md5-authentication-key=SECRET_KEY
替换以下值:
ROUTER_NAME
:Cloud Router 路由器的名称PEER_NAME
:BGP 对等端的名称REGION
:Google Cloud 区域SECRET_KEY
:您的密文共享 MD5 身份验证密钥
API
要使用 API 更新会话,请使用 compute.routers.patch
方法。使用此方法向会话添加身份验证时,您的请求必须执行以下两项操作:
- 在
md5AuthenticationKeys
数组中为键添加一个条目。添加条目时,请同时提供键的名称和值。 - 更新
bgpPeers
数组以包含md5AuthenticationKeyName
字段的值。此字段按名称引用密钥。
修补 md5AuthenticationKeys
数组时,您必须提供数组中每一项的 name
(除非您要移除某些项)。但是,您无需为每一项的 key
字段提供值。如果省略此值,Cloud Router 路由器将保留之前使用的值。此行为旨在保护密钥的加密。它与其他修补方法不同,后者通常需要您为数组项上的每个字段指定一个值。
修补 bgpPeers
数组时,必须为每一项的每个字段提供值(除非您想要移除一些对等端或一些值)。
例如,假设 Cloud Router 路由器有两个对等端:一个使用 MD5 身份验证,另一个不使用。如果要保持第一个对等端不变,但向第二个对等端添加 MD5 身份验证,则可以使用如下所示的请求:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME { "md5AuthenticationKeys": [ { "name": "KEY_NAME_1", }, { "name": "KEY_NAME_2", "key": "SECRET_KEY" } ], "bgpPeers": [ { "name": "PEER_NAME_1", "md5AuthenticationKeyName": "KEY_NAME_1", "interfaceName": "INTERFACE_NAME_1", "ipAddress": "IP_ADDRESS_1", "peerIpAddress": "PEER_IP_ADDRESS_1", "peerAsn": "PEER_ASN_1" }, { "name": "PEER_NAME_2", "md5AuthenticationKeyName": "KEY_NAME_2", "interfaceName": "INTERFACE_NAME_2", "ipAddress": "IP_ADDRESS_2", "peerIpAddress": "PEER_IP_ADDRESS_2", "peerAsn": "PEER_ASN_2" } ], }
替换以下值:
PROJECT_ID
:Cloud Router 路由器所属的项目REGION
:Google Cloud 区域ROUTER_NAME
:Cloud Router 路由器的名称KEY_NAME_1
:当前正在使用的密钥的名称(按PEER_NAME_1
)KEY_NAME_2
:您要为PEER_NAME_2
添加的新密钥的名称。记下名称。如果您想稍后使用 API 进行更改,则需要该名称。SECRET_KEY
:您为PEER_NAME_2
添加的 Secret MD5 身份验证密钥PEER_NAME_1
:您未更改的 BGP 对等端的名称INTERFACE_NAME_1
:BGP 对等互连会话的接口名称不会更改IP_ADDRESS_1
:Cloud Router 路由器上的 IP 地址(适用于未更改的对等端)PEER_IP_ADDRESS_1
:未更改的对等端的 IP 地址PEER_ASN_1
:未更改的对等端的 BGP 自治系统编号 (ASN)PEER_NAME_2
:您要更新的 BGP 对等端的名称,以使用 MD5 身份验证INTERFACE_NAME_2
:BGP 对等互连会话的接口名称IP_ADDRESS_2
:Cloud Router 路由器上的 IP 地址PEER_IP_ADDRESS_2
:对等路由器的 IP 地址PEER_ASN_2
:此 BGP 对等体的 BGP 自治系统编号 (ASN)
更新身份验证密钥
如需更改 Cloud Router 路由器用于对等互连会话的密钥,请执行以下步骤之一。在 Cloud Router 路由器上更新密钥时,请确保您使用的密钥与对等路由器使用的密钥相同。
Google Cloud 不显示 MD5 身份验证密钥,并且仅在成功配置后显示密钥名称。
- 如果您通过 gcloud 或界面配置 MD5 身份验证,Google Cloud 会自动生成
PEER_NAME-key
形式的密钥名称。 - 如果您通过 API 配置 MD5 身份验证,则可以指定密钥名称。
控制台
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
在名称字段中,点击相应 Cloud Router 路由器的名称。
在路由器详情页面上,点击要修改的 BGP 会话的名称。
在 BGP 会话详情页面中,点击
修改。在 MD5 身份验证部分中,点击更新 MD5 身份验证密钥。
在 MD5 身份验证密钥字段中,输入新的 Secret 身份验证密钥,或点击生成并复制以填充该字段。
记下密钥。离开此页面后,您将无法检索密钥。
点击保存。
gcloud
要更新会话,请使用 gcloud compute routers update-bgp-peer
命令。
gcloud compute routers update-bgp-peer ROUTER_NAME \ --peer-name=PEER_NAME \ --region=REGION \ --md5-authentication-key=SECRET_KEY
替换以下值:
ROUTER_NAME
:Cloud Router 路由器的名称PEER_NAME
:BGP 对等端的名称REGION
:Google Cloud 区域SECRET_KEY
:您要使用的新 Secret MD5 身份验证密钥
API
要更新会话,请使用 compute.routers.patch
方法。例如,使用如下所示的请求。
此示例会替换整个对等数组,而不仅仅是已识别的特定对等数组。也就是说,它会移除 PEER_NAME
之外的所有对等端。它将移除 KEY_NAME
以外的所有密钥,并使用新值 UPDATED_SECRET_KEY
更新 KEY_NAME
。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME { "md5AuthenticationKeys": [ { "name": "KEY_NAME", "key": "UPDATED_SECRET_KEY" } ], "bgpPeers": [ { "name": "PEER_NAME", "md5AuthenticationKeyName": "KEY_NAME", "interfaceName": "INTERFACE_NAME", "ipAddress": "IP_ADDRESS", "peerIpAddress": "PEER_IP_ADDRESS", "peerAsn": "PEER_ASN" } ], }
替换以下值:
PROJECT_ID
:Cloud Router 路由器所属的项目REGION
:Google Cloud 区域ROUTER_NAME
:Cloud Router 路由器的名称KEY_NAME
:您要更新的密钥的名称;每当您使用 API 来处理 MD5 身份验证时,都必须按名称引用密钥UPDATED_SECRET_KEY
:您的新 Secret MD5 身份验证密钥PEER_NAME
:BGP 对等端的名称INTERFACE_NAME
:BGP 对等互连会话的接口名称IP_ADDRESS
:Cloud Router 路由器上的 IP 地址PEER_IP_ADDRESS
:对等路由器的 IP 地址PEER_ASN
:此 BGP 对等体的 BGP 自治系统编号 (ASN)
检查身份验证状态
请按照以下步骤检查 MD5 身份验证的状态。另请参阅查看 Cloud Router 路由器详细信息。
控制台
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
在名称字段中,点击相应 Cloud Router 路由器的名称。
在路由器详情页面上,查找 MD5 身份验证列。对于每个会话,此列中的值表示是否已启用 MD5 身份验证。
gcloud
如需使用 gcloud CLI 检查会话,请使用 gcloud compute routers get-status
命令。
gcloud compute routers get-status ROUTER_NAME \ --project=PROJECT \ --region=REGION \
替换以下值:
ROUTER_NAME
:Cloud Router 路由器的名称PROJECT
:项目的名称REGION
:Google Cloud 区域
输出包括 result.bgpPeerStatus[]
对象,其中包含有关 Cloud Router 路由器的 BGP 会话的信息。每个会话的相关数据包括以下两个字段:
md5AuthEnabled
- 一个布尔值字段,指示是否已为会话启用 MD5 身份验证statusReason
- 描述会话状态的字段
API
使用 routers.getRouterStatus
方法:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME/getRouterStatus
请替换以下内容:
PROJECT_ID
:Cloud Router 路由器所属的项目REGION
:Cloud Router 路由器所在的区域ROUTER_NAME
:Cloud Router 路由器的名称
输出包括每个 BGP 会话的相关信息。每个会话的相关数据包括以下两个字段:
md5AuthEnabled
:一个布尔值字段,指示是否已为会话启用 MD5 身份验证statusReason
:描述会话状态的字段。此字段仅在 MD5 身份验证出现问题时才显示。(在这种情况下,字段的值为MD5_AUTH_INTERNAL_PROBLEM
。)
如需设置 BGP 会话的持续监控,请使用 Cloud Logging。Logging 记录 BGP 事件中 MD5 身份验证状态的相关信息,该事件是信息日志的一部分。
从会话中移除身份验证
如果要从 BGP 会话中移除 MD5 身份验证,则必须从 Cloud Router 路由器和对等路由器中移除 MD5 身份验证。
如需从 Cloud Router 路由器的 BGP 会话中移除 MD5 身份验证,请执行以下步骤之一。
控制台
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
在名称字段中,点击相应 Cloud Router 路由器的名称。
在路由器详情页面上,点击要修改的 BGP 会话的名称。
在 BGP 会话详情页面中,点击
修改。对于 MD5 身份验证,点击停用。
点击保存。系统会显示停用 MD5 身份验证密钥对话框。
在确认对话框中,点击确认。
gcloud
如需移除 MD5 身份验证,请使用 gcloud compute routers update-bgp-peer
命令:
gcloud compute routers update-bgp-peer ROUTER_NAME \ --peer-name=PEER_NAME \ --region=REGION \ --clear-md5-authentication-key
替换以下值:
ROUTER_NAME
:Cloud Router 路由器的名称PEER_NAME
:BGP 对等端的名称REGION
:Google Cloud 区域
API
如需移除 MD5 身份验证,请使用 compute.routers.patch
方法。
使用 API 移除身份验证时,您的更新必须执行以下两项操作:
- 更新
md5AuthenticationKeys
数组 - 从相关的
bgpPeers
条目中移除md5AuthenticationKey
值
比方说,如果您的 Cloud Router 路由器有两个对等 BGP,并且您想要从其中一个 BGP 移除 MD5 身份验证。在此情况下,请使用如下所示的请求:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME { "md5AuthenticationKeys": [ "name": "KEY_NAME_FOR_UNCHANGED_PEER", ], "bgpPeers": [ { "name": "NAME_OF_UPDATED_PEER", "interfaceName": "INTERFACE_NAME_FOR_UPDATED_PEER", "ipAddress": "IP_ADDRESS_FOR_UPDATED_PEER", "peerIpAddress": "PEER_IP_ADDRESS_FOR_UPDATED_PEER", "peerAsn": "PEER_ASN_FOR_UPDATED_PEER" }, { "name": "NAME_OF_UNCHANGED_PEER", "interfaceName": "INTERFACE_NAME_FOR_UNCHANGED_PEER", "ipAddress": "IP_ADDRESS_FOR_UNCHANGED_PEER", "peerIpAddress": "PEER_IP_ADDRESS_FOR_UNCHANGED_PEER", "peerAsn": "PEER_ASN_FOR_UNCHANGED_PEER" "md5AuthenticationKeyName": "KEY_NAME_FOR_UNCHANGED_PEER" } ], ], }
替换以下值:
PROJECT_ID
:Cloud Router 路由器所属的项目REGION
:Cloud Router 所在的 Google Cloud 区域ROUTER_NAME
:Cloud Router 路由器的名称NAME_OF_UPDATED_PEER
:您要修改的对等互连会话的名称INTERFACE_NAME_FOR_UPDATED_PEER
:您要修改的 BGP 对等端的接口的名称IP_ADDRESS_FOR_UPDATED_PEER
:您要修改的对等端使用的 Cloud Router 路由器上的 IP 地址PEER_IP_ADDRESS_FOR_UPDATED_PEER
:您要修改的对等互连会话的对等路由器的 IP 地址PEER_ASN
:您要修改的此 BGP 对等端的 BGP 自治系统编号 (ASN)NAME_OF_UNCHANGED_PEER
:您要保持原样的对等互连会话的名称INTERFACE_NAME_FOR_UNCHANGED_PEER
:您要保持原样的 BGP 对等端的接口名称IP_ADDRESS_FOR_UNCHANGED_PEER
:您要保持原样的对等端使用的 Cloud Router 路由器上的 IP 地址PEER_IP_ADDRESS_FOR_UNCHANGED_PEER
:您要保持原样的对等互连会话的对等路由器的 IP 地址PEER_ASN_FOR_UNCHANGED_PEER
:您要保持原样的 BGP 对等端的 BGP 自治系统编号 (ASN)KEY_NAME_FOR_UNCHANGED_PEER
:您要保留的 BGP 对等体的 MD5 身份验证密钥的名称
移除使用身份验证的会话
要移除使用 MD5 身份验证的对等互连会话,请执行以下步骤之一。
控制台
在 Google Cloud Console 中,前往 Cloud Router 路由器页面。
- 选择要从中移除 BGP 会话的路由器。
- 对于 BGP 会话,选择要移除的 BGP 会话。
- 在页面顶部,点击 删除,然后确认删除。
gcloud
如需移除已启用 MD5 身份验证的 BGP 会话,请使用 gcloud compute routers remove-bgp-peer
命令。
如需了解详情,请参阅停用或移除 BGP 会话。
API
如需移除已启用 MD5 身份验证的 BGP 会话,请使用 compute.routers.patch
方法。
使用 API 移除具有 MD5 身份验证的 BGP 会话时,更新必须执行两项操作:从 md5AuthenticationKeys
数组中移除密钥并移除 bgpPeer
本身。
例如,假设 Cloud Router 路由器有两个对等端,并且您想要移除其中一个对等端。在此情况下,请使用如下所示的请求:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME { "md5AuthenticationKeys": [ "name": "KEY_NAME_FOR_RETAINED_PEER", ], "bgpPeers": [ { "name": "NAME_OF_RETAINED_PEER", "interfaceName": "INTERFACE_FOR_RETAINED_PEER", "ipAddress": "IP_ADDRESS_FOR_RETAINED_PEER", "peerIpAddress": "PEER_IP_ADDRESS_FOR_RETAINED_PEER", "peerAsn": "PEER_ASN_FOR_RETAINED_PEER", "md5AuthenticationKeyName": "KEY_NAME_FOR_RETAINED_PEER" } ], }
替换以下值:
PROJECT_ID
:Cloud Router 路由器所属的项目REGION
:Google Cloud 区域ROUTER_NAME
:Cloud Router 路由器的名称KEY_NAME_FOR_RETAINED_PEER
:您要保留的对等端使用的密钥的名称NAME_OF_RETAINED_PEER
:您要保留的 BGP 对等端的名称INTERFACE_FOR_RETAINED_PEER
:您要保留的 BGP 对等端的接口的名称IP_ADDRESS_FOR_RETAINED_PEER
:您要保留的对等端的 Cloud Router 路由器上的 IP 地址PEER_IP_ADDRESS_FOR_RETAINED_PEER
:您要保留的对等端的 IP 地址PEER_ASN_FOR_RETAINED_PEER
:您要保留的对等端的 BGP 自治系统编号 (ASN)KEY_NAME_FOR_RETAINED_PEER
:您要保留的 BGP 对等体的 MD5 身份验证密钥的名称
例如,假设您创建了以下对等端:
PATCH https://compute.googleapis.com/compute/v1/projects/project_id/regions/region_name/routers/cloud_router_name { "md5AuthenticationKeys": [ { "name": "first_key_name", "key": "first_secret_key_value" }, { "name": "second_key_name", "key": "second_secret_key_value" } ], "bgpPeers": [ { "name": "first_peer", "md5AuthenticationKeyName": "first_key_name", "interfaceName": "first_interface", "ipAddress": "first_address", "peerIpAddress": "first_peer_interface", "peerAsn": "first_peer_asn" }, { "name": "second_peer", "md5AuthenticationKeyName": "second_key_name", "interfaceName": "second_interface", "ipAddress": "second_address", "peerIpAddress": "second_peer_interface", "peerAsn": "second_peer_asn" } ], }
然后,如果您想移除第二个对等端,请使用如下所示的请求:
PATCH https://compute.googleapis.com/compute/v1/projects/project_id/regions/region_name/routers/cloud_router_name { "md5AuthenticationKeys": [ { "name": "first_key_name", } ], "bgpPeers": [ { "name": "first_peer", "md5AuthenticationKeyName": "first_key_name", "interfaceName": "first_interface", "ipAddress": "first_address", "peerIpAddress": "first_peer_interface", "peerAsn": "first_peer_asn" } ], }