使用 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 身份验证。您还可以向现有会话添加身份验证、更改会话使用的密钥,或者移除身份验证。

如需配置 MD5 身份验证,您必须使用 Google Cloud CLI 或 API。

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能

  4. 安装初始化 Google Cloud CLI。
  5. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  6. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能

  7. 安装初始化 Google Cloud CLI。
  1. 如果您使用的是 Google Cloud CLI,请运行以下命令来设置项目 ID。此页面上的 gcloud 说明假定您已设置项目 ID。
    gcloud config set project PROJECT_ID
        
  1. 运行以下命令,确认已设置该 ID:
    gcloud config list --format='text(core.project)'
        

创建使用身份验证的会话

对于某些网络连接产品,您可以在创建资源时配置 BGP 对等端以使用 MD5 身份验证。这些产品包括高可用性 VPN 和专用互连。

如需了解详情,请参阅以下部分:

如果要创建第 2 层合作伙伴互连 VLAN 连接,请先创建连接,然后更新 BGP 对等端以添加 MD5 身份验证。如需了解如何在更新 BGP 会话时添加身份验证,请参阅以下部分。如果您有第 3 层连接,请联系您的服务提供商以了解相关说明。

向现有会话添加身份验证

如果要向现有 BGP 对等端添加身份验证,请执行以下步骤之一。添加身份验证时,请确保您使用的密钥与对等路由器使用的密钥相同。

gcloud

如需使用 gcloud CLI 更新会话,请使用 gcloud beta compute routers update-bgp-peer 命令:

  gcloud beta 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/beta/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 路由器上更新密钥时,请确保您使用的密钥与对等路由器使用的密钥相同。

gcloud

要更新会话,请使用 gcloud beta compute routers update-bgp-peer 命令。

  gcloud beta 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 之外的所有键。

  POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
  {
    "md5AuthenticationKeys": [
      {
        "name": "KEY_NAME"
      }
    ],
    "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 路由器详细信息

要设置 BGP 会话的持续监控,请使用 Cloud Logging。Logging 记录 BGP 事件中 MD5 身份验证状态的相关信息,该事件是信息日志的一部分。

gcloud

如需使用 gcloud CLI 检查会话,请使用 gcloud beta compute routers get-status 命令。

  gcloud beta 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/beta/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。)

从会话中移除身份验证

如果要从会话中移除 MD5 身份验证,请执行以下步骤之一。

gcloud

如需移除 MD5 身份验证,请使用 gcloud beta compute routers update-bgp-peer 命令:

   gcloud beta 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/beta/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
  {
    "md5AuthenticationKeys": [
        "name": "KEY_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_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_FOR_UNCHANGED_PEER:您要保持原样的 BGP 对等端的 MD5 身份验证密钥 BGP 自治系统的名称

移除使用身份验证的会话

有时,您可能希望移除使用 MD5 身份验证的对等互连会话。如果您使用的是 gcloud CLI,请使用与未经身份验证的对等端相同的过程。但是,如果您使用的是 API,则此过程会略有不同。

gcloud

如需移除 MD5 身份验证,请使用 gcloud beta compute routers update-bgp-peer 命令:

   gcloud beta 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 数组中移除密钥并移除 bgpPeer 本身。

例如,假设 Cloud Router 路由器有两个对等端,并且您想要移除其中一个对等端。在此情况下,请使用如下所示的请求:

  PATCH https://compute.googleapis.com/compute/beta/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"
      }
    ],
  }
 

替换以下值:

  • 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)

例如,假设您创建了以下对等端:

  PATCH https://compute.googleapis.com/compute/beta/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/beta/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"
      }
    ],
  }
 

后续步骤