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

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 安装 Google Cloud CLI。
  5. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. 确保您的 Google Cloud 项目已启用结算功能

  8. 安装 Google Cloud CLI。
  9. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  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 对等端添加身份验证,请执行以下步骤之一。添加身份验证时,请确保您使用的密钥与对等路由器使用的密钥相同。

Google Cloud 不显示 MD5 身份验证密钥,并且仅在成功配置后显示密钥名称。

  • 如果您通过 gcloud 或界面配置 MD5 身份验证,Google Cloud 会自动生成 PEER_NAME-key 形式的密钥名称。
  • 如果您通过 API 配置 MD5 身份验证,则可以指定密钥名称。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。

    前往“Cloud Router 路由器”

  2. 名称字段中,点击相应 Cloud Router 路由器的名称。

  3. 路由器详情页面上,点击要修改的 BGP 会话的名称。

  4. BGP 会话详情页面中,点击 修改

  5. 如需添加 MD5 身份验证,请执行以下操作:

    1. MD5 身份验证部分中,选择启用。页面会更新以包含文本字段。
    2. 输入安全密钥,或生成新的安全密钥,然后点击生成并复制
    3. 记下密钥。离开此页面后,您将无法检索密钥。

  6. 点击保存

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 身份验证,则可以指定密钥名称。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。

    前往“Cloud Router 路由器”

  2. 名称字段中,点击相应 Cloud Router 路由器的名称。

  3. 路由器详情页面上,点击要修改的 BGP 会话的名称。

  4. BGP 会话详情页面中,点击 修改

  5. MD5 身份验证部分中,点击更新 MD5 身份验证密钥

  6. MD5 身份验证密钥字段中,输入新的 Secret 身份验证密钥,或点击生成并复制以填充该字段。

  7. 记下密钥。离开此页面后,您将无法检索密钥。

  8. 点击保存

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 路由器详细信息

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。

    前往“Cloud Router 路由器”

  2. 名称字段中,点击相应 Cloud Router 路由器的名称。

  3. 路由器详情页面上,查找 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 身份验证,请执行以下步骤之一。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。

    前往“Cloud Router 路由器”

  2. 名称字段中,点击相应 Cloud Router 路由器的名称。

  3. 路由器详情页面上,点击要修改的 BGP 会话的名称。

  4. BGP 会话详情页面中,点击 修改

  5. 对于 MD5 身份验证,点击停用

  6. 点击保存。系统会显示停用 MD5 身份验证密钥对话框。

  7. 在确认对话框中,点击确认

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 身份验证的对等互连会话,请执行以下步骤之一。

控制台

  1. 在 Google Cloud Console 中,前往 Cloud Router 路由器页面。

    前往“Cloud Router 路由器”

  2. 选择要从中移除 BGP 会话的路由器。
  3. 对于 BGP 会话,选择要移除的 BGP 会话。
  4. 在页面顶部,点击 删除,然后确认删除。

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"
      }
    ],
  }
 

后续步骤