使用站点间 VPN 将 VPC landing zone 连接到网络
在本教程中,您使用 IBM Cloud VPN for VPC 通过站点到站点 VPN 隧道将 VPC landing zone 可部署体系结构安全地连接到本地网络。 配置 strongSwan VPN 网关以连接到 VPN for VPC。
strongSwan 是基于开放式源代码 IPsec 的 VPN 解决方案。 有关strongSwan,的更多信息,请参阅 简介strongSwan。
目标
您已部署其中一个 IBM Cloud 登录区域可部署体系结构,例如 Red Hat OpenShift Container Platform on VPC landing zone,VPC landing zone 或 VSI on VPC landing zone。 虚拟服务器已创建并正常工作。
缺省情况下,由于安全合规性原因,对 VPC landing zone 拓扑的网络访问被锁定,因此您无法访问管理或工作负载 VSI。 如何在工作负载 VPC 中的工作负载 VSI 中部署应用程序?
答案是通过管理 VPC 分配操作员访问权。 您有多个选项来授予操作员访问权,具有不同级别的安全性,合规性和易启用性。
- Client to Site with IBM Cloud VPN 服务器和 VPN 客户端-在设备上配置 VPN 客户端应用程序,以创建与使用 IBM Cloud VPN 服务器的 VPC 网络的安全连接。 VPN 服务器服务具有生产使用的高可用性方式,由 IBM管理。
- 站点到站点 VPC VPN 网关-通过使用基于静态路由的 VPN 或基于策略的 VPN 在 VPC 与本地专用网络或其他 VPC 之间设置 IPsec 站点到站点隧道,配置本地 VPN 以连接到 IBM Cloud VPN 网关。
- Direct Link-您可以在本地网络与 IBM Cloud Direct Link之间建立直接网络连接。
- 通过使用 Transit Gateway 从另一个 IBM Cloud VPC 访问 VPC 可通过使用 IBM Cloud Transit Gateway来实现。
在本教程中,我们可以了解如何设置与内部部署网络的站点到站点 VPN 连接。
准备工作
- 部署 VPC landing zone 可部署体系结构的实例。 有关更多信息,请参阅 部署登录区域可部署体系结构。
- 使用不同虚拟私有云 (VPC),子网,缺省 ACL 规则以及允许 SSH 访问的安全组中的任何基于 Linux的操作系统创建 VSI。 确保为 VSI 分配了用于对机器进行 SSH 访问的浮动 IP。 为了模拟本地网络,这些步骤假定 VSI 部署到单独的 VPC 上。
本教程基于以下假设:
- 操作系统是CentOS。 有关其他 VPN 配置的更多信息,请参阅 配置内部部署 VPN 网关。
- VPN 网关部署在名为
management-vpc
的登录区域 VPC 上。 - 您的可部署体系结构包含
management-vpc
中的 VSI,该 VSI 受 IBM Cloud 目录中的 VSI on VPC landing zone 可部署体系结构支持。
设置 Strongswan
有关如何在CentOS,以外的操作系统上安装strongSwan的更多信息,请参阅 安装文档。
-
启用 IP 转发:
-
用文本编辑器打开
/etc/sysctl.conf
文件,添加以下一行:net.ipv4.ip_forward = 1
-
保存并关闭该文件。
-
使用以下命令应用更改:
sudo sysctl -p
-
-
安装 strongSwan:
sudo dnf install epel-release -y
sudo dnf install strongswan -y
-
启动 strongSwan 服务,并使其能够在系统启动时启动:
systemctl start strongswan
systemctl enable strongswan
systemctl status strongswan
-
配置安全网关:
-
打开
/etc/strongswan/ipsec.conf
文件:在以下示例中,针对 strongSwan VPN 网关的 IP 地址为
169.45.x.x
的内部部署子网10.160.x.x/26
与具有 VPN for VPC 网关 IP 地址169.61.x.x
的可部署体系结构 VPN 网关和管理 VSI 子网10.10.30.0/24,10.20.10.0/24
之间定义了连接。conn all type=tunnel auto=start esp=aes256-sha256! ike=aes256-sha256-modp2048! left=%any leftsubnet=10.160.x.x/26 #<== c. Subnet CIDR of your on-premises network rightsubnet=10.10.30.0/24,10.20.10.0/24 #<== d, e. Subnet CIDR of the deployable architecture VPN gateway. Subnet CIDR of the Management VSI right=169.61.x.x #<== f. Public IP of the VPN gateway leftauth=psk rightauth=psk leftid="169.45.x.x" #<== g. Public IP of your strongSwan server keyexchange=ikev2 lifetime=10800s ikelifetime=36000s dpddelay=30s dpdaction=restart dpdtimeout=120s
-
单击 导航菜单 图标
,然后从 计算 部分单击 VPC 基础结构 > 虚拟服务器实例。
-
指定本地网络的子网:
- 选择安装了 strongSwan 网关的 VSI。
- 在 网络接口 部分中,单击为其分配了浮动 IP 的接口的子网名称。
- 将本地网络的子网 IP 范围复制到
ipsec.conf
文件中的leftsubnet
属性。
-
指定管理 VSI 的 CIDR:
- 单击 网络 部分中的 子网 以打开“VPC 的子网”页面。
- 搜索与管理 VPC 关联的子网 (在我们的示例中为
management-vpc
)。 - 从子网列表中,单击已部署管理 VSI 的子网名称。
- 将子网 IP 范围列复制到
ipsec.conf
文件中的rightsubnet
属性。
-
指定登录区域 VPN 网关的 CIDR:
-
单击 网络 部分中的 VPN 以打开“VPC 的 VPN”页面。
-
确保选择了 站点到站点网关 > VPN 网关 选项卡。
-
选择与登录区域可部署体系结构关联的站点到站点 VPN (在我们的示例中,
management-gateway
)。 -
在“VPN 网关详细信息”页面上,单击 子网 以查看有关与 VPN 网关关联的子网的详细信息。
-
复制可部署体系结构 VPN 网关的子网 IP 范围列。
将 IP 范围复制到
ipsec.conf
文件中rightsubnet
属性的开头。 使用逗号将此范围与管理 VSI 的 CIDR 分隔开,如示例中所示。
-
-
指定 VPN 网关的公共 IP 地址:
- 在 VPC 的 VPN 页面上,确保选中 站点到站点网关 > VPN 网关 选项卡。
- 再次选择与登录区域可部署体系结构关联的站点到站点 VPN (在我们的示例中,
management-gateway
)。 - 在“VPN 网关详细信息”页面中,单击任何公共 IP 以将其复制并粘贴到
ipsec.conf
文件的right
属性中。
-
验证 strongSwan 服务器的公共 IP:
- 单击 计算 部分中的 虚拟服务器实例。
- 单击安装了 strongSwan 网关的 VSI 的名称。
- 单击与您在 网络接口 部分的步骤 1 中选择的子网关联的浮动 IP。
- 将 IP 地址粘贴到
leftid
属性中以标识 strongSwan 服务器的 IP 地址。
-
-
配置用于对等认证的预共享密钥 (PSK)。
-
在命令行上,发出以下命令以生成强大的 PSK 供同级使用:
head -c 24 /dev/urandom | base64
-
将 PSK 添加到
/etc/strongswan/ipsec.secrets
文件。# <Public IP of your strongSwan server> <Public IP of the Landing Zone VPN gateway> : PSK "***********" 169.45.x.x 169.61.x.x : PSK "***********"
-
-
启动 strongSwan 服务并检查连接状态。
systemctl restart strongswan
❯ strongswan status Security Associations (0 up, 1 connecting): all[1]: CONNECTING, 10.160.x.x[%any]...169.61.x.x[%any]
状态显示“0 已启动,1 正在连接”是正常情况,因为尚未设置登录区域端的连接。
编辑 ACL 以允许来自 strongSwan 的连接
-
在 IBM Cloud 控制台中,单击 导航菜单 图标
,然后从 网络 部分单击 VPC 基础结构 > 访问控制表 。
-
选择与登录区域可部署体系结构 VPC 关联的 ACL
management-acl
(在我们的示例中为management-vpc
)。 -
为内部部署子网和公共 IP 创建入站规则以访问 VPN 子网。
-
单击入站规则部分中的 创建。
-
添加两个具有以下值的入站规则:
入站 ACL 规则 优先级 允许或拒绝 协议 源 目标 1 允许 全部 strongSwan VSI 公共 IP LZ s2s VPN 网关的子网 2 允许 全部 strongSwan VSI 子网 CIDR LZ VPC CIDR 3 允许 全部 LZ VPC CIDR strongSwan VSI 子网 CIDR 4 允许 全部 strongSwan VSI 公共 IP 管理 VSI 子网 CIDR
-
-
为 VPN 子网和公共 IP 创建出站规则以访问内部部署子网。
-
单击“出站规则”部分中的 创建。
-
添加两个具有以下值的出站规则:
出站 ACL 规则 优先级 允许或拒绝 协议 源 目标 1 允许 全部 LZ s2s VPN 网关的子网 strongSwan VSI 公共 IP 2 允许 全部 LZ VPC CIDR strongSwan VSI 子网 CIDR 3 允许 全部 strongSwan VSI 子网 CIDR LZ VPC CIDR 4 允许 全部 管理 VSI 子网 CIDR strongSwan VSI 公共 IP
-
在 IBM Cloud VPN 中创建 VPN 连接
-
单击 导航菜单 图标
,然后从 网络 部分单击 VPC 基础结构 > VPN。
-
选择与登录区域可部署体系结构关联的站点间 VPN (在我们的示例中为
management-gateway
)。 -
在“网关详细信息”页面上,单击“VPN 连接”部分中的 创建。
-
通过指定以下信息来定义此网关与 VPC 外部网络之间的连接:
- VPN 连接名称:输入连接名称,如
my-connection
。 - 对等网关地址: 指定 strongSwan 服务器的浮动 IP 地址。
- 预共享密钥: 指定 VPN 网关的认证密钥。 确保使用 strongSwan 私钥中提到的相同预共享密钥。
- 创建 IKE 策略:
- 从“VPC 的 VPN 连接”页面中,选择 创建 IKE 策略。
- 指定以下信息:
- 名称:输入 IKE 策略的名称。
- 资源组: 选择此 IKE 策略的资源组。
- IKE 版本: 将 IKE 协议版本设置为
2
。 - 加密: 用于 IKE 阶段 1 的加密算法。 将加密设置为
aes256
。 - 认证: 用于 IKE 阶段 1 的认证算法。 将认证设置为
sha256
。 - Diffie-Hellman 组: 要用于 IKE 阶段 1 的 DH 组。 将 DH 组设置为
14
- 密钥生存期: 阶段 1 隧道的生存期 (以秒为单位)。 将密钥生存期设置为
36000
- 单击创建。
- 创建 IPsec 策略:
- 从 VPC 页面的 VPN 连接中,选择 创建 IPsec 策略。
- 指定以下信息:
- 名称:输入 IPsec 策略的名称。
- 资源组: 选择此 IPsec 策略的资源组。
- 加密: 用于 IKE 阶段 2 的加密算法。 将加密设置为
aes256
。 - 认证: 用于 IKE 阶段 2 的认证算法。 将认证设置为
sha256
。 - 完美前向保密:禁用 PFS。
- Diffie-Hellman 组 (如果已启用 PFS): 要用于 IKE 阶段 2 密钥交换的 DH 组。 禁用 PFS 时,缺省情况下,DH 组设置为
14
。 - 密钥生存期: 阶段 2 隧道的生存期 (以秒为单位)。 将生存期设置为
10800
。
- 单击创建。
- VPN 连接名称:输入连接名称,如
-
单击创建 VPN 连接。
在 UI 中创建路由
遵循以下步骤来创建路由以控制目标网络流量的定向方式。
- 单击 导航菜单 图标
,然后从 网络 部分单击 VPC 基础结构 > 路由表。
- 选择管理 VPC (在我们的示例中,
management-vpc
)。 - 单击与
management-vpc
关联的缺省路由表。 - 在“检修路线”部分中,单击 创建。
- 在创建路由页面,指定以下信息:
-
区域: 选择部署 VPN 网关的区域。
-
名称:键入新路由的名称。
您可以使用随机名称的组合来创建名称。
-
目标 CIDR: 指定 strongSwan VSI 网络的子网 CIDR。
-
操作: 如果路由目标位于 VPC 中,或者本地专用子网与 VPN 网关连接,请选择 交付。
-
下一个中继段类型: 单击 VPN 连接,然后选择在上一步中创建的 VPN 连接。
-
- 单击保存。
- 同样,为管理 VSI 区域创建单独的路径。
- 区域: 选择在其上部署管理 VSI 的区域。
- 名称:键入新路由的名称。
- 目标 CIDR: 指定 strongSwan VSI 网络的子网 CIDR。
- 操作: 如果路由目标位于 VPC 中,或者本地专用子网与 VPN 网关连接,请选择 交付。
- 下一个中继段类型: 单击 VPN 连接,然后选择在上一步中创建的 VPN 连接。
- 单击保存。
检查 Strongswan 状态
完成上述步骤后,请在 strongSwan VSI 中检查 strongSwan 进程的状态。
-
重新启动strongSwan服务。
systemctl restart strongswan
-
检查连接状态。
❯ strongswan status Security Associations (1 up, 0 connecting): all[1]: ESTABLISHED 59 minutes ago, 10.160.x.x[169.45.x.x]...169.61.x.x[169.61.x.x] all{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: cfbbd5d9_i c864dc75_o all{1}: 10.160.x.x/24 === 10.10.10.0/24 10.20.10.0/24
测试站点间网关设置
执行以下步骤以验证您是否具有有效的站点间网关。
-
访问 strongSwan VSI。 在计算机上,在命令行上发出以下命令:
ssh -i <private-key> root@<Floating IP of strongswan VSI>
-
完成以下步骤访问管理 VSI:
- 转至 VPC 的 虚拟服务器实例。 复制标注为
<management-server-2>
(在此示例中为10.20.10.4 ) 的 VSI 的专用 IP ("Reserved IP")。 - 在 strongSwan VSI 上,ping 管理 VSI。
❯ ping 10.20.10.4 PING 10.20.10.4 (10.20.10.4) 56(84) bytes of data. 64 bytes from 10.20.10.4: icmp_seq=1 ttl=62 time=99.5 ms 64 bytes from 10.20.10.4: icmp_seq=2 ttl=62 time=99.4 ms 64 bytes from 10.20.10.4: icmp_seq=3 ttl=62 time=99.4 ms ^C --- 10.20.10.4 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 99.415/99.462/99.502/0.035 ms
- 您还可以通过 SSH 连接到
<management-server-2>
。 将与用于将登录区域部署到 strongSwan VSI 的公用密钥对应的专用密钥复制到该 VSI,并在 strongSwan 命令行上运行以下命令:
ssh -i <private-key> root@10.20.10.4
- 转至 VPC 的 虚拟服务器实例。 复制标注为
摘要
将站点到站点 VPN 设置为管理 VPC 后,可以通过管理 VSI 访问工作负载 VPC,并指定必要的 ACL 规则。 通过与工作负载 VPC 建立的连接,可以在工作负载 VSI 上部署应用程序。