IBM Cloud Docs
向 VPN 网关添加连接

向 VPN 网关添加连接

您可以在 创建 VPN 网关 时或在供应一个 VPN 网关之后添加连接。 配置 VPN 连接时,可以选择使用自动协商进行连接,或者使用预定义的定制 IKE 或 IPsec 策略。 有关更多信息,请参阅 关于策略协商

为连接指定的 IKE 第 1 阶段和第 2 阶段(IPsec)安全选项必须与 VPC 外部网络对等网关上设置的选项相同。

在控制台中添加连接

要将 VPN 连接添加到现有 VPN 网关,请执行以下步骤:

  1. 高亮显示 VPN 网关表中要处理的网关行,然后单击操作菜单操作菜单 操作中的新建连接

    或者,在网关的详细信息页面上,可以单击“VPN 连接”部分中的 创建

  2. 通过指定以下信息来定义此网关与 VPC 外部网络之间的连接:

    • VPN 连接名称- 输入连接名称,如 my-connection

    • 对等网关地址- 指定 VPC 外部网络的 VPN 网关的 IP 地址。

      配置 VPN 连接后,不能将对等网关地址类型从 IP 地址更改为 FQDN,或从 FQDN 更改为 IP 地址。

    • 建立方式-选择 双向仅对等

      • 双向模式从 VPN 网关的任一侧启动 IKE 协议协商(或重新输入密钥过程)。
      • 仅对等 方式允许对等方对此 VPN 网关连接启动 IKE 协议协商。 建立连接后,对等方还负责启动密钥更新过程。

      如果同级设备位于 NAT 设备后面并且没有公共 IP 地址,请确保仅指定 同级

    • 预共享密钥- 为 VPC 外部网络指定 VPN 网关的身份验证密钥。 预共享密钥是十六进制数字的字符串,或者是可打印的 ASCII 字符的口令。 要与大多数对等网关类型兼容,此字符串必须遵循以下规则:

      • 可以是数字,小写或大写字符或以下特殊字符的组合: - + & ! @ # $ % ^ * ( ) . , :
      • 字符串的长度必须为 6-128 个字符。
      • 不能以 0x0s 开头。
    • 分配流量(仅限基于路由的 VPN)- 当 VPC 路由的下一跳是 VPN 连接时,启用在 VPN 网关连接的 Up 隧道之间分配流量。 如果未选择此复选框,VPN 网关将使用小公网 IP 的隧道作为主出口路径,只有当主出口路径被禁用时,流量才会通过次要路径。 更多信息,请参阅 用例 4:为基于路由的 VPN 分配流量

    • 本地 IBM CIDR (仅限基于策略的 VPN)-在要通过 VPN 隧道连接的 VPC 中指定一个或多个 CIDR。

    • 对等 CIDR (仅限基于策略的 VPN)-指定要通过 VPN 隧道连接的另一网络中的一个或多个 CIDR。 不允许本地子网和对等子网之间的子网范围重叠。

  3. 要配置 VPN 网关如何发送消息来检查对等网关是否处于活动状态,请在 “失效对等检测” 部分指定以下信息。

    • Action- 对等网关停止响应时要采取的措施。 例如,如果希望网关立即重新协商连接,请选择重新启动
    • Interval (secs)- 检查对等网关是否处于活动状态的频率。 默认情况下,信息每 2 秒发送一次。
    • 超时(秒)- 等待对等网关响应的时间。 默认情况下,如果对等网关在 10 秒内没有收到响应,就会被认为处于非活动状态。
  4. 策略 部分中,指定用于连接的阶段 1 和阶段 2 协商的因特网密钥交换 (IKE) 和 Internet Protocol 安全性 (IPsec) 选项。

    • 如果希望网关尝试自动建立连接,请选择自动
    • 如果需要执行特定的安全要求,或者如果对方网络的 VPN 网关不支持自动协商尝试的安全建议,请选择或创建自定义策略。
  5. 高级选项 部分中,可以定制本地和同级 IKE 标识,而不是使用缺省 IKE 标识。 最多可以指定一个同级 IKE 标识。

    对于基于策略的 VPN 网关,最多可以配置一个本地 IKE 身份。 对于基于路由的 VPN 网关,如果要配置本地 IKE 身份,必须提供两个。 您可以为成员提供值,也可以让输入字段为空。

    • 本地 IKE 标识-选择本地 IKE 标识的类型,然后输入其值。 例如,您可以输入单个4 octe IPv4 地址(9.168.3.4 )、FQDN(my-vpn.example.com )、主机名(my-host )或 base64-encoded 密钥ID(MTIzNA== )。

      • 静态路由方式由处于主动/主动方式的两个成员组成,其中第一身份适用于第一成员,第二身份适用于第二成员。 如果未指定本地 IKE 标识,那么类型为 IPv4 地址,值为成员的 VPN 连接隧道的公共 IP 地址。

      • 策略方式由处于活动/备用方式的两个成员组成。 本地 IKE 身份适用于活动成员。 如果未指定值,则本地 IKE 标识为 VPN 网关的公共 IP 地址。

    • 对等 IKE 标识-选择对等 IKE 标识的类型,然后输入其值。 例如,可以输入 IPv4 地址 (9.168.3.4)、FQDN (my-vpn.example.com)、主机名 (my-host) 或 base64-encoded 密钥 ID (MTIzNA==)。

      对等 IKE 身份适用于活动成员。 如果未指定值,请使用对等网关的 IPv4 地址或 FQDN。

  6. 查看“摘要”面板,然后单击 创建 VPN 连接

从 CLI 添加连接

开始之前,请 设置 CLI 环境

要从 CLI 创建 VPN 连接,请输入以下命令:

ibmcloud is vpn-gateway-connection-create CONNECTION_NAME VPN_GATEWAY PEER PRESHARED_KEY
[--vpc VPC] [--admin-state-up true | false] [--dead-peer-detection-action restart | clear | hold | none]
[--distribute-traffic true | false]
[--dead-peer-detection-interval INTERVAL] [--dead-peer-detection-timeout TIMEOUT] [--ike-policy IKE_POLICY_ID]
[--ipsec-policy IPSEC_POLICY_ID] [--peer-cidr CIDR1 --peer-cidr CIDR2 ... --local-cidr CIDR1 --local-cidr CIDR2 ...]
[[--local-ike-identity-type fqdn | hostname | ipv4_address | key_id --local-ike-identity-value VALUE] |
[--local-ike-identities LISTENER_POLICIES_JSON | @LISTENER_POLICIES_JSON_FILE]]
[--peer-ike-identity-type fqdn | hostname | ipv4_address | key_id --peer-ike-identity-value VALUE]
[--establish-mode bidirectional | peer_only] [--output JSON] [-q, --quiet]
ibmcloud is vpn-gateway-connection-create CONNECTION_NAME VPN_GATEWAY PEER PRESHARED_KEY

其中:

CONNECTION_NAME
连接的名称。
VPN_GATEWAY
VPN 网关的 ID。
PEER
对等 VPN 网关的 IP 地址或 FQDN。
PRESHARED_KEY
预共享密钥。
--vpc
VPC 的标识或名称。 只有在此 VPC 中通过名称指定唯一资源时才需要使用此功能。
--admin-state-up
如果设置为 false,则会关闭 VPN 网关连接。 这可以是 truefalse
--dead-peer-detection-action
死对等点检测操作。 这可以是 restartclearholdnone。(缺省值: restart)。
--dead-peer-detection-interval
死同级检测时间间隔 (以秒为单位) (缺省值: 2)。
--dead-peer-detection-timeout
死对等检测超时 (以秒为单位) (缺省值: 10)。
--distribute-traffic
当 VPC 路由的下一跳是 VPN connection.This 时,设置为 true 可在 VPN 网关连接的 Up 隧道之间分配流量, truefalse。 更多信息,请参阅 为基于路由的 VPN 分配流量
--ike-policy
IKE 策略的 ID。
--ipsec-policy
IPsec 策略的 ID。
--local-ike-identity-type
本地 IKE 标识的类型。 这可以是 fqdnhostnameipv4_addresskey_id
--local-ike-identity-value
本地 IKE 标识的值。
--local-ike-identities
本地 IKE 身份的标识。 JSON 或 JSON 文件中的 LOCAL_IKE_IDENTITIES_JSON | @LOCAL_IKE_IDENTITIES_JSON_FILE
-peer-cidr
资源的对等 CIDR。
-local-cidr
资源的本地 CIDR。
-peer-ike-identity-type
对等 IKE 身份的类型。 这可以是 ipv4_addressfqdnhostnamekey_id
--peer-ike-identity-value
对等 IKE 身份的值。

基于策略的 VPN 网关只能具有一个本地 IKE 身份。

如果基于路由的 VPN 网关指定了本地 IKE 标识,那么必须至少有两个; 第一个标识适用于 VPN 网关的第一个成员,第二个标识适用于第二个成员。

--establish-mode
这可以是 bidirectionalpeer_only。 双向模式从 VPN 网关的任一侧启动 IKE 协议协商(或重新输入密钥过程)。 仅对等方式允许对等方对此 VPN 网关连接启动 IKE 协议协商。 建立连接后,对等方还负责启动密钥更新过程。 如果未进行再加密,那么 VPN 网关连接将在其生存期到期后除去。
-output
指定输出将采用 JSON 格式。
-q, --quiet
禁止详细输出。

命令示例

  • 使用其必需的配置值为特定网关标识创建 VPN 连接: ibmcloud is vpn-gateway-connection-create my-connection fee82deba12e4c0fb69c3b09d1f12345 169.21.50.5 lkj14b1oi0alcniejkso --local-cidr 10.240.0.0/24 --peer-cidr 192.168.1.0/24

  • 为基于路由的 VPN 网关创建 VPN 连接,并启用 流量分发功能ibmcloud is vpn-gateway-connection-create CONNECTION_NAME VPN_GATEWAY PEER PRESHARED_KEY --distribute-traffic true

  • 创建具有相同核心参数和指定 DPD 配置的 VPN 连接: ibmcloud is vpn-gateway-connection-create my-connection fee82deba12e4c0fb69c3b09d1f12345 169.21.50.5 lkj14b1oi0alcniejkso --local-cidr 10.240.0.0/24 --peer-cidr 192.168.1.0/24 --dead-peer-detection-action clear --dead-peer-detection-interval 33 --dead-peer-detection-timeout 100

  • 使用相同的核心参数和具有指定标识的定制策略创建 VPN 连接: ibmcloud is vpn-gateway-connection-create my-connection fee82deba12e4c0fb69c3b09d1f12345 169.21.50.5 lkj14b1oi0alcniejkso --local-cidr 10.240.0.0/24 --peer-cidr 192.168.1.0/24 --ipsec-policy 72251a2e-d6c5-42b4-97b0-b5f8e8d1f479 --ike-policy 72251a2e-d6c5-42b4-97b0-b5f8e8d1f480

  • 创建具有对等 FQDN 的 VPN 连接,并指定本地和对等 IKE 身份: ibmcloud is vpn-gateway-connection-create my-connection fee82deba12e4c0fb69c3b09d1f12345 on-prem.my-company.com lkj14b1oi0alcniejkso --local-cidr 10.240.0.0/24 --peer-cidr 192.168.1.0/24 --local-ike-identities '[{"type":"key_id","value":"MTIzNA=="}]' --peer-ike-identity-type fqdn --peer-ike-identity-value on-prem.my-company.com --establish-mode peer_only

  • 创建允许同级为此 VPN 网关连接启动 IKE 协议协商的 VPN 连接: ibmcloud is vpn-gateway-connection-create my-connection fee82deba12e4c0fb69c3b09d1f12345 169.21.50.5 lkj14b1oi0alcniejkso --establish-mode peer_only --local-ike-identities '[{type:ipv4_address,value:2.2.2.2},{type:fqdn,value:sadsadasd.com}]' --peer-ike-identity-type key_id --peer-ike-identity-value MTIzNA==

  • 使用高级配置选项创建 VPN 连接: ibmcloud is vpn-gateway-connection-create to-prem ${gateway_id} on-prem.test.com test123 --local-cidr 10.10.20.0/28 --peer-cidr 192.168.0.0/24 --peer-ike-identity-type ipv4_address --peer-ike-identity-value 192.168.0.1 --establish-mode peer_only

从 CLI 将本地 CIDR 添加到 VPN 网关连接

开始之前,请 设置 CLI 环境

要从 CLI 将本地 CIDR 添加到 VPN 网关连接,请输入以下命令:

此命令仅受策略方式 VPN 网关支持。

ibmcloud is vpn-gateway-connection-local-cidr-add VPN_GATEWAY CONNECTION PREFIX_ADDRESS PREFIX_LENGTH [--vpc VPC] [--output JSON] [-q, --quiet]

其中:

VPN_GATEWAY
VPN 网关的 ID。
CONNECTION
VPN 连接的 ID 或名称。
PREFIX_ADDRESS
CIDR 的前缀地址部分。
PREFIX_LENGTH
CIDR 的前缀长度部分。
--output value
以 JSON 格式输出。
-q, --quiet
禁止详细输出。

命令示例

为具有必需配置值的特定连接名称添加本地 CIDR: ibmcloud is vpn-gateway-connection-local-cidr-add my-vpn-gateway my-connection 3.3.3.0/24

从 CLI 将对等 CIDR 添加到 VPN 网关连接

开始之前,请 设置 CLI 环境

要从 CLI 将对等 CIDR 添加到 VPN 网关连接,请输入以下命令:

此命令仅受策略方式 VPN 网关支持。

ibmcloud is vpn-gateway-connection-peer-cidr-add VPN_GATEWAY CONNECTION PREFIX_ADDRESS PREFIX_LENGTH [--vpc VPC] [--output JSON] [-q, --quiet]

其中:

VPN_GATEWAY
VPN 网关的标识。
CONNECTION
VPN 连接的标识或名称。
PREFIX_ADDRESS
CIDR 的前缀地址部分。
PREFIX_LENGTH
CIDR 的前缀长度部分。
--output value
以 JSON 格式输出。
-q, --quiet
禁止冗长输出。

命令示例

为具有所需配置值的特定连接名称添加对等 CIDR: ibmcloud is vpn-gateway-connection-peer-cidr-add my-vpn-gateway my-connection 4.4.4.0/24

添加与 API 的连接

要使用 API 创建 VPN 连接,请执行以下步骤:

  1. 使用正确的变量设置 API 环境

  2. 存储要在 API 命令中使用的任何其他变量,例如:

    • vpnGatewayId-VPN 网关标识。

      export vpnGatewayId=<your_vpn_gateway_id>
      
    • ikePolicyId-此 IKE 策略的唯一标识。

      export ikePolicyId=<your_ike_policy_id>
      
    • ipsecPolicyId-此 IPsec 策略的唯一标识。

      export ipsecPolicyId=<your_ipsec_policy_id>
      
  3. 启动所有变量时,创建 VPN 网关连接。 例如:

       curl -X POST "$vpc_api_endpoint/v1/vpn_gateways/$vpnGatewayId/connections?version=$api_version&generation=2" \
         -H "Authorization: $iam_token" \
         -d '{
             "name": "my-vpn-connection",
             "psk": "'$psk'",
             "dead_peer_detection": {
                 "action": "restart",
                 "interval": 2,
                 "timeout": 10
             },
             "local": {
                 "cidrs": "'$localCidrs'"
             },
             "peer": {
                 "cidrs": "'$remoteCidrs'",
                 "address": "7.8.9.10"
             }
             "ike_policy": {
                 "id": "'$ikePolicyId'"
             },
             "ipsec_policy": {
                 "id": "'$ipsecPolicyId'"
             }
         }'
    
  4. (可选) 要使用高级配置选项创建连接:

    curl -X POST "$vpc_api_endpoint/v1/vpn_gateways/$vpnGatewayId/connections?version=$api_version&generation=2"  \
          -H "Authorization: $iam_token"      -d '{  \
          "name": "my-advanced-vpn-connection",
          "establish_mode": "peer_only",
          "psk": "'$psk'",
          "dead_peer_detection": {
              "action": "restart",
              "interval": 2,
              "timeout": 10
          },
          "local": {
              "cidrs": "'$localCidrs'",
              "ike_identities": [
                  {
                      "type": "key_id",
                      "value": "dGVzdGtleQ=="
                  }
              ]
          },
          "peer": {
              "cidrs": "'$remoteCidrs'",
              "ike_identity": {
                  "type": "hostname",
                  "value": "cisco-asa"
              },
              "fqdn": "on-prem.test.com"
          }
          "ike_policy": {
              "id": "'$ikePolicyId'"
          },
          "ipsec_policy": {
              "id": "'$ipsecPolicyId'"
          },
          "distribute_traffic":true
      }'
    

使用 API 将本地 CIDR 添加到 VPN 网关连接

要使用 API 将本地 CIDR 添加到 VPN 网关连接,请执行以下步骤:

此 API 仅受策略方式 VPN 网关支持。

  1. 使用正确的变量设置 API 环境

  2. 存储要在 API 命令中使用的任何其他变量,例如:

    • vpnGatewayId-VPN 网关标识。

      export vpnGatewayId=<your_vpn_gateway_id>
      
    • connectionId-此 VPN 连接的唯一标识。

      export connectionId=<your_connection_id>
      
    • cidr_prefix- CIDR 的前缀地址部分。

      export cidr_prefix=<your_cidr_prefix>
      
    • prefix_length- CIDR 的前缀长度部分。

      export prefix_length=<your_prefix_length>
      
  3. 启动所有变量时,将本地 CIDR 添加到 VPN 网关连接。 例如:

       curl -X PUT "$vpc_api_endpoint/v1/vpn_gateways/$vpnGatewayId/connections/$connectionId/local_cidrs/${cidr_prefix}/${prefix_length}?version=$api_version&generation=2" \
         -H "Authorization: $iam_token"
    

使用 API 将对等 CIDR 添加到 VPN 网关连接

要使用 API 将对等 CIDR 添加到 VPN 网关连接,请执行以下步骤:

此 API 仅受策略方式 VPN 网关支持。

  1. 使用正确的变量设置 API 环境

  2. 存储要在 API 命令中使用的任何其他变量,例如:

    • vpnGatewayId-VPN 网关标识

      export vpnGatewayId=<your_vpn_gateway_id>
      
    • connectionId-此 VPN 连接的唯一标识

      export connectionId=<your_connection_id>
      
    • cidr_prefix- CIDR 的前缀地址部分

      export cidr_prefix=<your_cidr_prefix>
      
    • prefix_length- CIDR 的前缀长度部分。

      export prefix_length=<your_prefix_length>
      
  3. 启动所有变量时,将对等 CIDR 添加到 VPN 网关连接。 例如:

       curl -X PUT "$vpc_api_endpoint/v1/vpn_gateways/$vpnGatewayId/connections/$connectionId/peer_cidrs/${cidr_prefix}/${prefix_length}?version=$api_version&generation=2" \
         -H "Authorization: $iam_token"
    

使用 Terraform 添加连接

要使用 Terraform 添加连接,请运行以下命令:

   resource "ibm_is_vpn_gateway_connection" "is_vpn_gateway_connection" {
     name                 = "my-vpn-gateway-connection"
     vpn_gateway    = ibm_is_vpn_gateway.is_vpn_gateway.id
     peer_address   =  "7.8.9.10"
     preshared_key = var.presharedkey
     local_cidrs        = [var.localCIDR]
     peer_cidrs        = [var.peerCIDR]
   }

以下 Terraform 示例创建 VPN 网关连接:

resource "ibm_is_vpn_gateway_connection" "is_vpn_gateway_connection" {
  name           = "my-vpn-gateway-connection"
  vpn_gateway    = ibm_is_vpn_gateway.is_vpn_gateway.id
  preshared_key  = "VPNDemoPassword"
  establish_mode = "bidirectional"
  peer {
    cidrs   = [var.peerCIDR]
    address = "7.8.9.10"
  }
  local {
    cidrs = [var.localCIDR]
  }
  ike_policy   = ibm_is_ike_policy.is_ike_policy.id
  ipsec_policy = ibm_is_ipsec_policy.is_ipsec_policy.id
}

下面的 Terraform 示例为基于路由的 VPN 网关创建了一个 VPN 连接,并启用了 流量分发功能


resource "ibm_is_vpn_gateway_connection" "test_VPNGatewayConnection1" {
    name = "example-vpn-gateway-connection"
    vpn_gateway = "${ibm_is_vpn_gateway.example.id}"
    peer_address = "${ibm_is_vpn_gateway.example.public_ip_address}"
    preshared_key = "VPNDemoPassword"
    distribute-traffic = true
}

以下 Terraform 示例使用高级配置选项创建 VPN 连接:

resource "ibm_is_vpn_gateway_connection" "is_vpn_gateway_connection" {
  name           = "to-prem"
  vpn_gateway    = ibm_is_vpn_gateway.is_vpn_gateway.id
  preshared_key  = "test123"
  establish_mode = "peer_only"
  peer {
    cidrs   = ["192.168.0.0/24"]
    ike_identity {
      type  = "ipv4_address"
      value = "192.168.0.1"
    }
    fqdn = "on-prem.test.com"
  }
  local {
    cidrs = ["10.10.20.0/28"]
  }
}

有关更多信息,请参阅 Terraform 注册表

后续步骤

要创建基于路由的 VPN,请首先 创建路由表,然后 使用 VPN 连接类型创建路由