IBM Cloud Docs
使用 VPC/VPN 网关对云资源进行安全的专用内部部署访问

使用 VPC/VPN 网关对云资源进行安全的专用内部部署访问

本教程将产生费用。 使用“成本估算器”根据您的预计使用量生成成本估算。

IBM 提供了多种方法来使用 IBM Cloud 中的资源安全地扩展内部部署计算机网络。 这样,您就可以在需要时灵活调配云资源,并在不再需要时移除这些资源。 此外,您可以轻松、安全地将内部部署功能连接到 IBM Cloud 服务。

本教程提供了用于创建资源的自动化功能,这些资源演示内部部署服务器与云资源 (例如 IBM Cloud® Virtual Private Cloud 虚拟服务实例 (VSI) 和 IBM Cloud 数据服务) 之间的虚拟专用网 (VPN) 连接。 还配置了针对云资源的 DNS 解析。 流行的 strongSwan VPN 网关用于表示内部部署 VPN 网关。

目标

  • 从本地数据中心访问虚拟私有云 (VPC) 环境
  • 使用专用端点网关安全地访问云服务
  • 使用内部部署 DNS 通过 VPN 访问云资源

下图显示了本教程创建的资源

架构*" caption-side="bottom"}{: caption="*

Terraform 配置将创建以下资源:

  1. 基础结构 (VPC,子网,具有规则的安全组,Network ACL 和 VSI)。
  2. Object Storage 和 Databases for PostgreSQL 专用端点网关到数据服务。
  3. strongSwan 开放式源代码 IPsec 网关软件以内部部署方式用于建立与云环境的 VPN 连接。
  4. 供应 VPC/VPN 网关以允许内部部署资源与云资源之间的专用连接。
  5. 本地 DNS 解析器连接到云 DNS 解析器位置,以允许 TLS 访问云资源,包括 通过 VPN 访问虚拟专用端点网关

准备工作

本教程需要:

  • IBM Cloud CLI,
    • IBM Cloud Schematics 插件 (schematics),
  • jq 以查询 JSON 文件,
  • git 以 (可选) 克隆源代码存储库,
  • Terraform CLI (可选) 在桌面上运行 Terraform,而不是 Schematics 服务。

您将在 教程入门 指南中找到有关为您的操作环境下载和安装这些工具的指示信息。

本教程中的本地数据中心将使用 VPC 中的 VSI 进行模拟。

连接 VPC 的首选机制是 Transit Gateway。 使用 VPC,VSI 和 VPN 模拟本地环境仅用于说明。

此外:

  • 检查用户许可权。 确保您的用户帐户具有创建和管理 VPC 资源所需的足够许可权。 有关所需权限的列表,请参阅 授予 VPC 资源所需的权限
  • 您需要 SSH 密钥来连接到虚拟服务器。 如果您没有 SSH 密钥,请参阅创建密钥的指示信息

使用 Schematics 来创建资源

  1. 登录到 IBM Cloud
  2. 浏览至 创建 Schematics 工作空间,在 指定模板 部分下,验证:
    1. 存储库 URLhttps://github.com/IBM-Cloud/vpc-tutorials/tree/master/vpc-site2site-vpn
    2. Terraform 版本terraform_v1.2
  3. 工作空间详细信息下,
    1. 提供工作区名称:vpnsts
    2. 选择 Resource GroupLocation
    3. 点击下一步
  4. 验证详细信息,然后点击创建
  5. 变量 部分下,通过单击溢出菜单并为每行选择 编辑 来提供必需值 (resource_group_namessh_key_name)。 变量 maintenance 的值必须设置为 true。
  6. 滚动到页面顶部并单击“应用计划”。 请检查日志以查看所创建服务的状态。

通过单击下面并选择具有匹配前缀的实例来浏览已创建的资源。 在上面的图中找到所有资源。

验证连接

Schematics 工作空间输出包含可用于验证 VPN 连接的变量。

  1. 获取工作空间列表,记录标识列,设置 shell 变量:

    ibmcloud schematics workspace list
    
  2. 设置 WORKSPACE_ID 变量:

    WORKSPACE_ID=YOUR_WORKSPACE_ID
    
  3. 获取云资源的环境变量:

    ibmcloud schematics output --id $WORKSPACE_ID --output json | jq -r '.[0].output_values[].environment_variables.value'
    
  4. 输出结果如下 将这些结果复制/粘贴到 shell 中,以便在环境中设置这些结果:

    IP_FIP_ONPREM=169.48.x.x
    IP_PRIVATE_ONPREM=10.0.0.4
    IP_PRIVATE_CLOUD=10.1.1.4
    IP_FIP_BASTION=52.118.x.x
    IP_PRIVATE_BASTION=10.1.0.4
    IP_DNS_SERVER_0=10.1.0.5
    IP_DNS_SERVER_1=10.1.1.6
    IP_ENDPOINT_GATEWAY_POSTGRESQL=10.1.1.9
    IP_ENDPOINT_GATEWAY_COS=10.1.1.5
    HOSTNAME_POSTGRESQL=a43ddb63-dcb1-430a-a2e4-5d87a0dd12a6.6131b73286f34215871dfad7254b4f7d.private.databases.appdomain.cloud
    HOSTNAME_COS=s3.direct.us-south.cloud-object-storage.appdomain.cloud
    PORT_POSTGRESQL=32525
    
  5. 现在,您可以通过 SSH 登录到遵循不同路径的每个实例,包括通过 VPN 跳转。 该图显示了这些步骤所执行的通信路径。

    如果 SSH 密钥不是 SSH 的缺省值,那么可以设置选项 -I PATH_TO_PRIVATE_KEY_FILE 或参阅 SSH 参考手册以获取更多帮助。

验证连接
验证连接

  1. 测试对本地 VSI 的访问权:
    ssh root@$IP_FIP_ONPREM
    
  2. 测试对云堡垒的访问:
    ssh root@$IP_FIP_BASTION
    
  3. 通过防御测试对云 VSI 的访问:
    ssh -J root@$IP_FIP_BASTION root@$IP_PRIVATE_CLOUD
    
  4. 通过内部部署,VPN 隧道,堡垒测试对云 VSI 的访问:
    ssh -J root@$IP_FIP_ONPREM,root@$IP_FIP_BASTION root@$IP_PRIVATE_CLOUD
    
  5. 通过堡垒,通过云 VSI,通过 VPN 隧道测试对内部部署 VSI 的访问:
    ssh -J root@$IP_FIP_BASTION,root@$IP_PRIVATE_CLOUD root@$IP_PRIVATE_ONPREM
    

验证 DNS 解析

内部部署 DNS 解析已配置为使用 IBM Cloud VPC DNS 解析器位置。 这允许通过名称访问云服务并将其解析为专用端点网关的 IP 地址。

通过虚拟端点网关测试对 Postgresql 和对象存储器的 DNS 解析。 下面的图中显示了正在验证的两个路径:

验证 DNS 解析
验证 DNS 解析

  1. 访问本地 VSI。

    ssh root@$IP_FIP_ONPREM
    
  2. 复制并粘贴先前捕获的三个 (3) 变量: HOSTNAME_POSTGRESQLHOSTNAME_COSPORT_POSTGRESQL

  3. 运行 dig 命令以通过虚拟端点网关确认对数据库实例的解析。

    dig $HOSTNAME_POSTGRESQL
    
  4. 通过发出 telnet 命令来验证与数据库的连接。 它应该显示“已连接”。

    telnet $HOSTNAME_POSTGRESQL $PORT_POSTGRESQL
    
  5. 连接到数据库后,发出 Ctrl+C 以断开连接。

  6. 运行 dig 命令以通过虚拟端点网关确认对云对象存储器实例的解析。

    dig $HOSTNAME_COS
    
  7. 通过发出 telnet 命令来验证与云对象存储器实例的连接。 它应该显示“已连接”。

    telnet $HOSTNAME_COS 443
    
  8. 连接到云对象存储器实例后,发出 Ctrl+C 以断开连接。

如果存在问题,请参阅 GitHub 存储库中的 troubleshoot 部分。

(可选) 展开教程

想要补充或扩展本教程吗? 下面是一些构想:

  • GitHub 存储库 中,有一个可以部署的应用程序使用数据库和云对象存储器。 有关如何部署的指示信息,请参阅自述文件。
  • 如果已部署应用程序,请为该应用程序 添加 DNS 区域
  • 在多个 Virtual Servers for VPC 上运行应用程序,并添加 负载均衡器 以分发入站微服务流量。

除去资源

  1. 浏览至 Schematics 工作空间,单击工作空间
  2. 单击操作...> 销毁资源
  3. 单击操作...> 删除工作区