创建 VPN 服务器
创建 VPN 服务器以允许来自因特网的客户机连接到 VPC 网络,同时维护安全连接。
您可以使用控制台、CLI 或 API 创建 VPN 服务器。
准备工作
在供应 VPN 服务器之前,请按以下顺序完成以下先决条件:
-
查看 VPN 服务器的规划注意事项。
-
决定使用哪种 VPN 客户端验证模式:基于证书、用户 ID 和密码,或两者兼而有之。 有关更多信息,请参阅 设置客户机到站点认证。
-
在所选 VPC 中 创建 VPC 和至少一个子网。
为了实现高可用性,请在两个不同的专区中创建 VPC 和两个子网。 VPN 服务器位于两个子网中。
在控制台中创建 VPN 服务器
在控制台中创建客户端到站点 VPN 服务器:
-
完成“开始之前”部分中的所有先决条件。
-
从浏览器打开 IBM Cloud 控制台并登录账户。
-
选择导航菜单
,然后单击基础设施 > 网络 > VPN。
-
单击页面右上角的 创建。
-
在“VPN 类型”部分中,单击 客户机到站点服务器。
VPN 类型部分 “位置”部分显示 VPC 所在的区域以及将供应 VPN 服务器的位置。
-
在详细信息部分,请指定以下信息:
-
VPN 服务器名称-输入 VPN 服务器的名称,例如
my-vpn-server
。 -
资源组- 为 VPN 服务器选择一个资源组。
-
标记-(可选) 添加标记以组织,跟踪使用成本或管理对资源的访问权。
-
访问管理标记-(可选) 向资源添加访问管理标记以帮助组织访问控制关系。 访问管理标记唯一受支持的格式为
key:value
。 有关更多信息,请参阅 使用标记控制对资源的访问。 -
虚拟私有云-选择 VPN 服务器的 VPC。
-
客户机 IPv4 地址池-输入 CIDR 范围。 从该地址池为客户端分配其会话的 IP 地址。
VPN 详细信息
-
-
在子网部分,指定以下信息:
-
选择 VPN 服务器模式:
- 高可用性模式 - 在不同区域的两个子网中部署 VPN 服务器。 最适合用于客户端 VPN 访问至关重要的多区域部署和解决方案。
- 独立模式 - 在单一子网和区域内部署 VPN 服务器。 最适合用于不需要多区域灾备的单一区域部署。
-
指定 VPC 的子网 (独立方式) 或子网 (HA 方式)。
VPN 子网部分
-
-
在“身份验证”部分,指定以下信息:
-
VPN 服务器认证-从 Secrets Manager中选择服务器 SSL 证书。 填写所有必填字段。
VPN 服务器认证部分 -
客户机认证方式-选择此选项以通过使用客户机证书,用户标识和/或验证码来配置用户认证。
-
客户端证书 - 您可以选择客户端证书并配置用户 ID 和密码,以获得最佳安全性。 用户 ID 和密码提供了一个额外的安全层,需要额外的登录凭证才能访问账户。
(可选) 您可以上载 PEM 格式的证书撤销列表 (CRL)。 上传 CRL 后,PEM 文件会显示为 VPN 服务器的名称。
-
用户标识和验证码-为 VPN 客户端用户配置已添加的认证。 此认证方法提供了额外的安全层,可与 IBM Cloud IAM 集成以完成客户机认证。 验证完成后,系统会将代码传递给 openVPN 客户端进行验证。
VPN 客户端认证部分 -
-
-
在“安全组”部分中,至少选择一个安全组。
要在计划部署 VPN 服务器的子网和通过 VPN 通道通信的其他 VPC 子网上配置一个或多个安全组及其规则,或有选择地配置访问控制列表 (ACL),请参阅 配置与 VPN 服务器一起使用的 ACL。
VPN 安全组部分 您可以在从 VPN 服务器的详细信息页面 ("安全组" 选项卡) 进行供应后附加安全组。
-
在附加配置部分,指定以下信息:
-
DNS 服务器 IP 地址-(可选) 指定一个或两个 DNS 服务器 IP 地址以进行域名解析。
-
空闲超时会话(秒)- 如果 VPN 服务器在此时间间隔失效前没有流量,则会自动断开连接。 该值范围为
0
至28800
秒。 缺省值为600
秒。 -
传输协议-选择下列其中一个协议,然后输入有效的 VPN 端口 (
1 - 65535
)。- UDP 是一个无连接协议,可执行错误检查,但会丢弃错误的包。 比 TCP 更快。
- TCP 是面向连接的协议,具有错误检查和错误恢复功能。 比 UDP 更可靠。
-
隧道方式-指定下列其中一项:
-
全隧道 - 所有流量都通过 VPN 接口流向 VPN 隧道。
-
分离隧道 - 专用流量通过 VPN 接口流向 VPN 隧道,公共流量通过现有 LAN 接口流向 VPN 隧道。
VPN 附加配置部分
-
-
从 CLI 创建 VPN 服务器
开始之前,请 设置 CLI 环境。
要从 CLI 创建 VPN 服务器,请输入以下命令:
ibmcloud is vpn-server-create --subnets SUBNETS --client-ip-pool CLIENT_IP_POOL --cert CERT (--client-auth-methods certificate | username | certificate,username | username,certificate) [--client-ca CLIENT_CA] [--client-crl CLIENT_CRL] [--client-dns CLIENT_DNS] [--client-idle-timeout CLIENT_IDLE_TIMEOUT] [--enable-split-tunnel false | true] [--port PORT] [--protocol udp | tcp] [--security-group SECURITY_GROUP1 --security-group SECURITY_GROUP2 ...] [--name NAME] [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] [--output JSON] [-q, --quiet]
命令选项
-
- -子网:以逗号分隔的子网 ID,用于配置此 VPN 服务器。 在不同区域使用子网以实现高可用性,最多可设置两个子网。
-
- -client-ip-pool:VPN 客户端 IPv4 地址池,以 CIDR 格式表示。 请求不得与 VPC 中的任何现有地址前缀或者以下任何保留的地址范围重叠:127.0.0.0/8(IPv4 回送地址)、161.26.0.0/16(IBM 服务)、166.8.0.0/14(云服务端点)、169.254.0.0/16(IPv4 链路本地地址)和 224.0.0.0/4(IPv4 多点广播地址)。 客户端 IP 地址池的 CIDR 的前缀长度必须介于 /9(8,388,608 个地址)和 /22(1024 个地址)之间。 建议使用包含启用最大并发连接数所需的两倍数量的 IP 地址的 CIDR 块。
-
- -cert:此 VPN 服务器的证书实例 CRN。
- --client-auth-methods: 客户机认证方法的逗号分隔列表。 下列其中一项: certificate,username,certificate,username,username,certificate。
-
- -client-ca:用于 VPN 客户端证书颁发机构 (CA) 的证书实例的 CRN。
- -- client-crl:CRL | @CRL-file。 证书吊销列表内容,以 PEM 格式编码。
-
- -client-dns:以逗号分隔的 DNS 服务器地址,将提供给连接到此 VPN 服务器的 VPN 客户端。 最多可设置两个 DNS 服务器。
-
- -client-idle-timeout(客户闲置超时):在 VPN 服务器断开连接之前,VPN 客户端闲置的秒数。 指定 0 以防止服务器断开空闲客户端的连接(默认值:600 )。
-
- -enable-split-tunnel(启用分路隧道 ):表示此 VPN 服务器上是否启用了分离隧道。 其中一个: false,true (缺省值: false)。
-
- -端口:此 VPN 服务器使用的端口号(默认值:443 )。
-
- -协议:此 VPN 服务器要使用的传输协议。 udp 和 tcp 之一 (缺省值: udp)。
-
- -安全组:安全组 ID。
-
- -name:vpn 服务器的新名称。
-
- -资源组 ID:资源组 ID。 该选项与 --resource-group-name 互斥。
-
- -resource-group-name:资源组名称。 该选项与 --resource-group-id 互斥。
- --output:指定输出格式,仅支持 JSON。 JSON 之一。
- -q, --quiet: 禁止冗长输出。
命令示例
ibmcloud is vpn-server-create --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0,0736-4b871e22-e819-4f87-bb17-e457a88246a2 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.165.7.0/20 --client-auth-methods certificate --client-ca crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc
ibmcloud is vpn-server-create --name myvpnserver --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0,0736-4b871e22-e819-4f87-bb17-e457a88246a2 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.166.7.0/20 --client-auth-methods username
ibmcloud is vpn-server-create --name myvpnserver2 --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.167.7.0/20 --client-auth-methods username --client-dns 9.9.9.9,8.8.8.8 --protocol tcp --port 8888 --enable-split-tunnel true --client-idle-timeout 1200
ibmcloud is vpn-server-create --name myvpnserver3 --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.168.7.0/20 --client-auth-methods username --security-group r006-e32f671c-463d-4f93-88e3-2dd0413476b4 --security-group r006-3af7a9db-d9bc-43d4-bced-93e0a33fee25
ibmcloud is vpn-server-create --subnets 0736-4b871e22-e819-4f87-bb17-e457a88246a2 --client-ip-pool 192.170.0.0/22 --client-dns 172.34.1.100 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/0046b57b897f419080c4ed3e011b86d4:5f1a72bc-b4c2-413f-bd22-011cfa4be5db:certificate:c81627a1bf6f766379cc4b98fd21ccd6 --client-auth-methods certificate,username --client-ca crn:v1:bluemix:public:cloudcerts:us-south:a/0046b57b897f419080c4ed3e011b86d4:5f1a72bc-b4c2-413f-bd22-011cfa4be5db:certificate:c81627a1bf6f766379cc4b98fd21ccd6 --client-crl @./openvpn/crl.pem --name vpnswithcrl --security-group r006-5744b689-e5c4-461d-9f9b-ce5e7e8dbed6
使用 API 创建 VPN 服务器
要使用 API 创建客户机到站点 VPN 服务器,请执行以下步骤:
-
使用正确的变量设置 API 环境。
-
存储要在 API 命令中使用的任何其他变量; 例如:
-
ResourceGroupId
-使用get resource groups
命令查找资源组标识,然后填充变量:export ResourceGroupId=<your_resourcegroup_id>
-
SubnetId
-使用get subnet
命令查找子网标识,然后填充变量:export SubnetId=<your_subnet_id>
-
-
启动所有变量时,创建 VPN 服务器:
curl -X POST "$vpc_api_endpoint/v1/vpn_servers?version=$api_version&generation=2" \ -H "Authorization: $iam_token" \ -d '{ "certificate": { "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc" }, "client_ip_pool": "192.168.50.0/22", "name": "my-new-vpn-server", "subnets": [ { "id": "0716-046c3fd3-1cc5-40f6-b0ad-bbc305308f6d" }, { "id": "0717-30ff71ff-3e90-42a9-aa93-96a062081f18" } ], "client_authentication": [ { "method": "certificate", "client_ca": { "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc" } }, { "method": "username", "identity_provider": { "provider_type": "iam" } } ] "resource_group": { "id": "'$ResourceGroupId'" } }'
后续步骤
- 要验证是否已成功创建 VPN 服务器,请等待几分钟,然后转至 客户机到站点服务器 表,以确保 VPN 服务器状态为
Stable
,运行状况状态为Healthy
。 - 创建 VPN 路由。
- 设置 VPN 客户机环境并连接到 VPN 服务器。