IBM Cloud Docs
使用站点间 VPN 将 VPC landing zone 连接到网络

使用站点间 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 zoneVPC landing zoneVSI 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来实现。

Architecture diagram of site-to-site-VPN connection with strongSwan
VPC landing zone connected to a network with a site-to-site VPN and strongSwan

在本教程中,我们可以了解如何设置与内部部署网络的站点到站点 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的更多信息,请参阅 安装文档

  1. 启用 IP 转发:

    1. 用文本编辑器打开 /etc/sysctl.conf 文件,添加以下一行:

      net.ipv4.ip_forward = 1
      
    2. 保存并关闭该文件。

    3. 使用以下命令应用更改:

      sudo sysctl -p
      
  2. 安装 strongSwan:

    sudo dnf install epel-release -y
    
    sudo dnf install strongswan -y
    
  3. 启动 strongSwan 服务,并使其能够在系统启动时启动:

    systemctl start strongswan
    
    systemctl enable strongswan
    
    systemctl status strongswan
    
  4. 配置安全网关:

    1. 打开 /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
      
    2. 单击 导航菜单 图标 导航菜单图标,然后从 计算 部分单击 VPC 基础结构 > 虚拟服务器实例

    3. 指定本地网络的子网:

      1. 选择安装了 strongSwan 网关的 VSI。
      2. 网络接口 部分中,单击为其分配了浮动 IP 的接口的子网名称。
      3. 将本地网络的子网 IP 范围复制到 ipsec.conf 文件中的 leftsubnet 属性。
    4. 指定管理 VSI 的 CIDR:

      1. 单击 网络 部分中的 子网 以打开“VPC 的子网”页面。
      2. 搜索与管理 VPC 关联的子网 (在我们的示例中为 management-vpc)。
      3. 从子网列表中,单击已部署管理 VSI 的子网名称。
      4. 将子网 IP 范围列复制到 ipsec.conf 文件中的 rightsubnet 属性。
    5. 指定登录区域 VPN 网关的 CIDR:

      1. 单击 网络 部分中的 VPN 以打开“VPC 的 VPN”页面。

      2. 确保选择了 站点到站点网关 > VPN 网关 选项卡。

      3. 选择与登录区域可部署体系结构关联的站点到站点 VPN (在我们的示例中,management-gateway)。

      4. 在“VPN 网关详细信息”页面上,单击 子网 以查看有关与 VPN 网关关联的子网的详细信息。

      5. 复制可部署体系结构 VPN 网关的子网 IP 范围列。

        将 IP 范围复制到 ipsec.conf 文件中 rightsubnet 属性的开头。 使用逗号将此范围与管理 VSI 的 CIDR 分隔开,如示例中所示。

    6. 指定 VPN 网关的公共 IP 地址:

      1. 在 VPC 的 VPN 页面上,确保选中 站点到站点网关 > VPN 网关 选项卡。
      2. 再次选择与登录区域可部署体系结构关联的站点到站点 VPN (在我们的示例中,management-gateway)。
      3. 在“VPN 网关详细信息”页面中,单击任何公共 IP 以将其复制并粘贴到 ipsec.conf 文件的 right 属性中。
    7. 验证 strongSwan 服务器的公共 IP:

      • 单击 计算 部分中的 虚拟服务器实例
      • 单击安装了 strongSwan 网关的 VSI 的名称。
      • 单击与您在 网络接口 部分的步骤 1 中选择的子网关联的浮动 IP。
      • 将 IP 地址粘贴到 leftid 属性中以标识 strongSwan 服务器的 IP 地址。
  5. 配置用于对等认证的预共享密钥 (PSK)。

    1. 在命令行上,发出以下命令以生成强大的 PSK 供同级使用:

      head -c 24 /dev/urandom | base64
      
    2. 将 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 "***********"
      
  6. 启动 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 的连接

  1. 在 IBM Cloud 控制台中,单击 导航菜单 图标 导航菜单图标,然后从 网络 部分单击 VPC 基础结构 > 访问控制表

  2. 选择与登录区域可部署体系结构 VPC 关联的 ACL management-acl (在我们的示例中为 management-vpc)。

  3. 为内部部署子网和公共 IP 创建入站规则以访问 VPN 子网。

    1. 单击入站规则部分中的 创建

    2. 添加两个具有以下值的入站规则:

      入站 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
  4. 为 VPN 子网和公共 IP 创建出站规则以访问内部部署子网。

    1. 单击“出站规则”部分中的 创建

    2. 添加两个具有以下值的出站规则:

      出站 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 连接

  1. 单击 导航菜单 图标 导航菜单图标,然后从 网络 部分单击 VPC 基础结构 > VPN

  2. 选择与登录区域可部署体系结构关联的站点间 VPN (在我们的示例中为 management-gateway)。

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

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

    • VPN 连接名称:输入连接名称,如 my-connection
    • 对等网关地址: 指定 strongSwan 服务器的浮动 IP 地址。
    • 预共享密钥: 指定 VPN 网关的认证密钥。 确保使用 strongSwan 私钥中提到的相同预共享密钥。
    1. 创建 IKE 策略:
      1. 从“VPC 的 VPN 连接”页面中,选择 创建 IKE 策略
      2. 指定以下信息:
        • 名称:输入 IKE 策略的名称。
        • 资源组: 选择此 IKE 策略的资源组。
        • IKE 版本: 将 IKE 协议版本设置为 2
        • 加密: 用于 IKE 阶段 1 的加密算法。 将加密设置为 aes256
        • 认证: 用于 IKE 阶段 1 的认证算法。 将认证设置为 sha256
        • Diffie-Hellman 组: 要用于 IKE 阶段 1 的 DH 组。 将 DH 组设置为 14
        • 密钥生存期: 阶段 1 隧道的生存期 (以秒为单位)。 将密钥生存期设置为 36000
      3. 单击创建
    2. 创建 IPsec 策略:
      1. 从 VPC 页面的 VPN 连接中,选择 创建 IPsec 策略
      2. 指定以下信息:
        • 名称:输入 IPsec 策略的名称。
        • 资源组: 选择此 IPsec 策略的资源组。
        • 加密: 用于 IKE 阶段 2 的加密算法。 将加密设置为 aes256
        • 认证: 用于 IKE 阶段 2 的认证算法。 将认证设置为 sha256
        • 完美前向保密:禁用 PFS。
        • Diffie-Hellman 组 (如果已启用 PFS): 要用于 IKE 阶段 2 密钥交换的 DH 组。 禁用 PFS 时,缺省情况下,DH 组设置为 14
        • 密钥生存期: 阶段 2 隧道的生存期 (以秒为单位)。 将生存期设置为 10800
      3. 单击创建
  5. 单击创建 VPN 连接

在 UI 中创建路由

遵循以下步骤来创建路由以控制目标网络流量的定向方式。

  1. 单击 导航菜单 图标 导航菜单图标,然后从 网络 部分单击 VPC 基础结构 > 路由表
  2. 选择管理 VPC (在我们的示例中,management-vpc)。
  3. 单击与 management-vpc 关联的缺省路由表。
  4. 在“检修路线”部分中,单击 创建
  5. 在创建路由页面,指定以下信息:
    • 区域: 选择部署 VPN 网关的区域。

    • 名称:键入新路由的名称。

      您可以使用随机名称的组合来创建名称。

    • 目标 CIDR: 指定 strongSwan VSI 网络的子网 CIDR。

    • 操作: 如果路由目标位于 VPC 中,或者本地专用子网与 VPN 网关连接,请选择 交付

    • 下一个中继段类型: 单击 VPN 连接,然后选择在上一步中创建的 VPN 连接。

  6. 单击保存
  7. 同样,为管理 VSI 区域创建单独的路径。
    • 区域: 选择在其上部署管理 VSI 的区域。
    • 名称:键入新路由的名称。
    • 目标 CIDR: 指定 strongSwan VSI 网络的子网 CIDR。
    • 操作: 如果路由目标位于 VPC 中,或者本地专用子网与 VPN 网关连接,请选择 交付
    • 下一个中继段类型: 单击 VPN 连接,然后选择在上一步中创建的 VPN 连接。
  8. 单击保存

检查 Strongswan 状态

完成上述步骤后,请在 strongSwan VSI 中检查 strongSwan 进程的状态。

  1. 重新启动strongSwan服务。

    systemctl restart strongswan
    
  2. 检查连接状态。

    ❯ 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
    

测试站点间网关设置

执行以下步骤以验证您是否具有有效的站点间网关。

  1. 访问 strongSwan VSI。 在计算机上,在命令行上发出以下命令:

    ssh -i <private-key> root@<Floating IP of strongswan VSI>
    
  2. 完成以下步骤访问管理 VSI:

    1. 转至 VPC 的 虚拟服务器实例。 复制标注为 <management-server-2> (在此示例中为10.20.10.4 ) 的 VSI 的专用 IP ("Reserved IP")。
    2. 在 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
    
    1. 您还可以通过 SSH 连接到 <management-server-2>。 将与用于将登录区域部署到 strongSwan VSI 的公用密钥对应的专用密钥复制到该 VSI,并在 strongSwan 命令行上运行以下命令:
    ssh -i <private-key> root@10.20.10.4
    

摘要

将站点到站点 VPN 设置为管理 VPC 后,可以通过管理 VSI 访问工作负载 VPC,并指定必要的 ACL 规则。 通过与工作负载 VPC 建立的连接,可以在工作负载 VSI 上部署应用程序。