创建 VPN 网关
您可以为 VPC 创建 IBM Cloud VPN,将 VPC 安全地连接到另一个专用网络,如内部网络或另一个 VPC。
在开始之前,请查看 VPN 网关的规划注意事项 和 VPN 网关的已知限制、问题和约束。
在控制台中创建 VPN 网关
要在控制台中创建 VPN 网关,请按照以下步骤操作:
-
在浏览器中打开 IBM Cloud 控制台,并登录您的账户。
-
选择导航菜单
,然后单击基础设施
> 网络 > VPN。
-
确保选择 站点到站点网关> VPN 网关 选项卡。
-
在“VPC 的 VPN”页面上,单击 创建,然后选择 站点到站点 网关磁贴。
-
指定以下信息:
-
区域- 选择要配置 VPN 网关的区域。
-
VPN 网关名称-输入 VPN 网关的名称,例如
my-vpn-gateway。 -
资源组- 为 VPN 网关选择一个资源组。
-
标记-(可选) 添加标记以标识此 VPN 网关。
-
访问管理标记-(可选) 向资源添加访问管理标记以帮助组织访问控制关系。 访问管理标记唯一受支持的格式为
key:value。 有关更多信息,请参阅 使用标记控制对资源的访问。 -
虚拟私有云-选择 VPN 网关的 VPC。
-
子网- 选择您要创建 VPN 网关的子网。 请参阅 规划注意事项 以获取重要的子网信息。
-
方式-选择基于策略的 VPN 或基于路由的 VPN。 有关 VPN 类型的更多信息,请参阅 VPN 功能。
-
ASN- VPN 网关的数字标识符。 此值用于识别 BGP 对等互联的本地网络,并在与本地设备设置 BGP 会话时使用。
-
Advertised CIDRs(可选)- 向远程 VPN 对等体公布 IPv4 网络范围的 CIDR 范围值。
动态路由需要 ASN 值。 如果不指定 ASN,VPN 网关将以
64520的默认 ASN 创建。 将 VPN 网关连接到中转网关后,就不能更改本地 ASN 值了。
-
-
在 VPC 的 VPN 连接 部分中,切换开关以在此网关与 VPN 外部的网络之间建立连接。 在配置网关后,您还可以添加一个 VPN 连接。 在连接详细信息部分,指定以下信息:
-
VPN 连接名称- 输入连接名称,例如
my-connection。 -
连接类型- 选择静态或动态连接类型。
-
对等网关地址-通过 VPC 外部网络的 VPN 网关的公共 IP 地址或 FQDN 指定对等设备。
-
对等 ASN(仅基于动态路由)- 如果选择动态作为连接类型,则必须指定对等 ASN。 此值用于标识与 VPN 交换路由的远程对等网络。
某些 ASN 值受到限制,不能用作对等 ASN,包括
0,13884,36351,64512,64513,65100,65200–65234,65402–65433,65500或4201065000–4201065999。 这些值要么是保留值,要么是专用 ASN 范围的一部分,可能会导致路由冲突。 -
建立方式-选择 双向 或 仅对等。
- 双向模式允许从VPN网关的任一侧发起IKE协议协商(或密钥更新过程)。
- 仅对等 方式允许对等方对此 VPN 网关连接启动 IKE 协议协商。 建立连接后,对等方还负责启动密钥更新过程。
如果同级设备位于 NAT 设备后面并且没有公共 IP 地址,请确保仅指定 同级。
-
预共享密钥- 指定 VPC 外部网络的 VPN 网关的身份验证密钥。 预共享密钥是十六进制数字的字符串,或者是可打印的 ASCII 字符的口令。 要与大多数对等网关类型兼容,此字符串必须遵循以下规则:
- 可以是数字,小写或大写字符或以下特殊字符的组合:
- + & ! @ # $ % ^ * ( ) . , : - 字符串的长度必须为 6-128 个字符。
- 不能以
0x或0s开头。
- 可以是数字,小写或大写字符或以下特殊字符的组合:
-
分配流量(仅限基于路由的 VPN)- 当 VPC 路由的下一跳是 VPN 连接时,启用此选项可在 VPN 网关的活动隧道之间自动分配流量。 当两个 VPN 隧道连接到远程对等网络时,该选项有助于最大限度地提高吞吐量。 如果不启用该选项,VPN 网关会选择公共 IP 较小的隧道作为主路径,只有在主隧道瘫痪时才切换到辅助隧道。 更多信息,请参阅 用例 4:为基于路由的 VPN 分配流量。
-
本地子网(仅限基于策略的 VPN) ——指定 VPC 中一个或多个您希望通过 VPN 隧道连接的子网。
-
对等子网(仅限基于策略的 VPN) ——指定对等网络中一个或多个您希望通过 VPN 隧道连接的子网。
不允许本地子网和对等子网之间的子网范围重叠。
-
-
在隧道详细信息部分(仅基于动态路由),指定使用 BGP 进行动态路由所需的隧道和对等接口 IP。
-
隧道接口 IP- 指定分配给 VPN 隧道 VPN 网关侧的 IP 地址。
-
对等接口 IP- 指定分配给 VPN 隧道远程网络侧的 IP 地址。 该地址是您的内部设备或对等 VPN 网关。
隧道和对等接口 IP 必须连续,并属于同一个
/30子网。 该子网提供四个 IP 地址,但第一个(网络地址)和最后一个(广播地址)被保留。 例如,在子网192.168.0.0/30中,可用 IP 为192.168.0.1和192.168.0.2。 如果将192.168.0.1分配给隧道 1 接口,则必须将192.168.0.2分配给对等 1 接口。 同样,对于隧道 2,使用不同的/30子网,如192.168.0.4/30。 在这种情况下,将192.168.0.5分配给隧道 2 接口,将192.168.0.6分配给对等网络 2 接口。 此外,用于建立 IPsec 连接的隧道 IP 不能与为 Transit Gateway 连接选择的 CIDR 范围重叠。
-
-
在 死亡对等检测 部分中,配置 VPN 网关如何发送消息以检查对等网关是否处于活动状态。 指定以下信息:
- 操作-对等网关停止响应时要执行的失效对等检测操作。 例如,如果希望网关立即重新协商连接,请选择重新启动。
- 间隔(秒) ——检查对等网关是否处于活动状态的频率。 默认情况下,每2秒发送一次消息。
- 超时(秒) ——等待对等网关响应的时间长度。 默认情况下,如果在 10 秒内未收到响应,则该对等网关将不再被视为处于活动状态。
-
在 策略 部分中,指定用于连接的阶段 1 和阶段 2 协商的因特网密钥交换 (IKE) 和 Internet Protocol 安全性 (IPsec) 选项。
- 如果希望网关尝试自动建立连接,请选择 “自动”。
- 选择或创建自定义策略,如果
- 您需要执行特定的安全要求。
- 另一个网络上的 VPN 网关不支持在设置过程中自动协商的安全建议。
您为该连接指定的 IKE 和 IPsec 安全选项必须与 VPC 外部网络的对等网关上设置的选项完全一致。
-
在“高级选项”部分中,可以定制本地和同级 IKE 标识,而不是使用缺省 IKE 标识。 最多可以指定一个同级 IKE 标识。
对于基于策略的 VPN 网关,最多可以配置一个本地 IKE 身份。 对于基于路由的 VPN 网关,如果要配置本地 IKE 身份,必须提供两个。 您可以为成员提供值,也可以将输入框留空。
-
本地 IKE 标识-选择本地 IKE 标识的类型,然后输入其值。 例如,您可以输入单个4个八位字节的 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。
-
从 CLI 创建 VPN 网关
开始之前,请 设置 CLI 环境。
要从 CLI 创建 VPN 网关,请输入以下命令:
ibmcloud is vpn-gateway-create VPN_GATEWAY_NAME SUBNET
[--mode policy | route]
[--advertised-cidrs IPv4_NETWORK_RANGE]
[--local-asn ASN_NUMBER]
[--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME]
[--output JSON] [-q, --quiet]
其中:
VPN_GATEWAY_NAME- VPN网关的名称。
SUBNET- 这是子网的标识。
--mode- VPN 网关的方式。 其中一个:
policy,route。 --advertised-cidrs- IPv4 网络范围,向远程 VPN 对等设备公布地址。
--local-asn- 标识您用于 BGP 对等互联的本地网络。
--resource-group-id- 资源组的标识。 此选项与
--resource-group-name互斥。 --resource-group-name- 资源组的名称。 此选项与
--resource-group-id互斥。 --output- 以 JSON 格式输出。
-q, --quiet- 用于禁止详细输出的选项。
命令示例
-
创建具有特定子网标识的基于路由的 VPN 网关:
ibmcloud is vpn-gateway-create my-vpc-gateway fee82deba12e4c0fb69c3b09d1f12345 --mode route -
使用“缺省”资源组创建基于策略的 VPN 网关:
ibmcloud is vpn-gateway-create my-vpc-gateway fee82deba12e4c0fb69c3b09d1f12345 --mode policy --resource-group-name Default -
通过将特定资源组标识与 JSON 格式的输出配合使用,创建基于路由的 VPN 网关:
ibmcloud is vpn-gateway-create my-vpc-gateway fee82deba12e4c0fb69c3b09d1f12345 --mode route --resource-group-id fee82deba12e4c0fb69c3b09d1f12345 --output JSON -
创建基于路由的 VPN 网关,使用已公布的 CIDR 和本地 ASN 进行动态连接:
ibmcloud is vpn-gateway-create my-vpc-gateway fee82deba12e4c0fb69c3b09d1f12345 --mode route --advertised-cidrs 192.168.3.0/24 --local-asn 64520 -
列出所有 VPN 网关:
ibmcloud is vpn-gateways ic vpn-gateways -
获取指定 VPN 网关的详细信息:
ic vpn-gateway my-vpc-gateway -
用本地 ASN 更新 VPN 网关:
ic vpn-gateway-update my-vpc-gateway --name my-vpc-gateway --local-asn 64521 -
列出 VPN 网关的广告 CIDR:
ibmcloud is vpn-gateway-advertised-cidrs my-vpc-gateway -
检查指定的已发布 CIDR 是否存在于 VPN 网关上:
ibmcloud is vpn-gateway-advertised-cidr my-vpc-gateway --cidr 10.45.0.0/26 -
将已公告的 CIDR 添加到 VPN 网关:
ibmcloud is vpn-gateway-advertised-cidr-add my-vpc-gateway --cidr 10.45.0.0/26 -
从 VPN 网关中删除已发布的 CIDR:
ibmcloud is vpn-gateway-advertised-cidr-delete my-vpc-gateway 10.45.0.0/26 -
列出 VPN 网关的所有服务连接:
ibmcloud is vpn-gateway-service-connections my-vpc-gateway -
获取指定 VPN 网关的服务连接详情:
ibmcloud is vpn-gateway-service-connection my-vpc-gateway --service-connection-id 72fd9e00-3117-4b2e-984d-9361a9a97801
使用 API 创建 VPN 网关
要使用 API 创建 VPN 网关,请按照以下步骤操作:
-
使用正确的变量设置 API 环境。
-
存储要在 API 命令中使用的其他变量。 例如,
ResourceGroupId-使用get resource groups命令查找资源组标识,然后填充变量:
export ResourceGroupId=<your_resourcegroup_id>SubnetId-使用get subnet命令查找子网标识,然后填充变量:
export SubnetId=<your_subnet_id> -
启动所有变量时,创建 VPN 网关:
- 要创建基于策略的 VPN 网关,请使用以下命令:
curl -X POST "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2" \ -H "Authorization: Bearer $iam_token" \ -d '{ "name": "my-new-vpn-gateway", "mode": "policy", "subnet": { "id": "'$SubnetId'" }, "resource_group": { "id": "'$ResourceGroupId'" } }'- 要为基于静态路由的 VPN 连接创建 VPN 网关,请使用以下命令:
curl -X POST "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2" \ -H "Authorization: Bearer $iam_token" \ -d '{ "name": "my-new-vpn-gateway", "mode": "route", "subnet": { "id": "'$SubnetId'" }, "resource_group": { "id": "'$ResourceGroupId'" } }'- 要为基于路由的动态 VPN 连接创建 VPN 网关,请使用以下命令:
curl -X POST "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2" \ -H "Authorization: Bearer $iam_token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "X-Correlation-ID: 9852c2ff-c20a-4082-98da-cd689bcd5a11" \ -d '{ "name": "my-new-vpn-gateway", "subnet": { "id": "'"$SubnetId"'" }, "mode": "route", "local_asn": 64520, "advertised_cidrs": [ "192.168.0.0/24" ], "resource_group": { "id": "'"$ResourceGroupId"'" } }'- 要列出 VPN 网关的所有广告 CIDR,请使用以下命令:
curl -X GET "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2/$vpn_gateway_id/advertised_cidrs/$cidr?__QUERY__" \ -H "Authorization: Bearer $iam_token"- 要从 VPN 网关删除已公布的 CIDR,请使用以下命令:
curl -X DELETE "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2/$vpn_gateway_id/advertised_cidrs/$cidr?__QUERY__" \ -H "Authorization: Bearer $iam_token" \- 要在 VPN 网关上设置已公布的 CIDR,请使用以下命令:
curl -X PUT "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2/$vpn_gateway_id/advertised_cidrs/$cidr?__QUERY__" \ -H "Authorization: Bearer $iam_token"
要查看站点到站点 VPN 网关的整套 API,请参阅 VPC API 参考。
使用 Terraform 创建 VPN 网关
以下示例使用 Terraform 创建 VPN 网关:
resource "ibm_is_vpn_gateway" "is_vpn_gateway" {
name = "my-vpn-gateway"
subnet = ibm_is_subnet.is_subnet.id
mode = "route"
}
有关更多信息,请参阅 Terraform 注册表。
后续步骤
创建 VPN 网关后,可以执行以下操作:
- 创建 IKE 策略 (如果您决定使用定制 IKE 策略而不是自动协商)。
- 创建 IPsec 策略 (如果您决定使用定制 IPsec 策略而不是自动协商)。
- 如果在配置 VPN 网关时尚未创建 VPN 连接,请创建一个。 有关更多信息,请参阅 向 VPN 网关添加连接。
- 在基于策略的模式下为 VPN 网关 配置路由传播。
- 要创建基于路由的 VPN,请首先 创建路由表,然后 使用 VPN 连接类型创建路由。
- 对于基于路由的动态 VPN 连接,请将中转网关连接到 VPN 网关。 请参阅 创建中转网关。