使用 VPC/VPN 閘道對雲端資源進行安全的專用內部部署存取

本教程將產生費用。 使用 成本估算器 根據您的預計使用情況產生成本估算。

IBM 提供了多種方法來使用 IBM Cloud 中的資源安全地延伸內部部署電腦網路。 這使您能夠在需要時配置雲端資源並在不再需要時刪除它們,從而受益於彈性。 此外,您可以輕鬆、安全地將內部部署功能連接至 IBM Cloud 服務。

本指導教學提供自動化來建立資源,以示範內部部署伺服器與雲端資源 (例如 IBM Cloud® Virtual Private Cloud 虛擬服務實例 (VSI) 及 IBM Cloud 資料服務) 之間的「虛擬專用網路 (VPN)」連線功能。 也會配置雲端資源的 DNS 解析。 熱門的 strongSwan「VPN 閘道」用來代表內部部署 VPN 閘道。

目標

  • 從內部部署資料中心存取虛擬私有雲 (VPC) 環境
  • 使用私有端點網關安全地存取雲端服務
  • 使用 DNS 內部部署透過 VPN 存取雲端資源

下圖顯示本指導教學所建立的資源

架構
教學的架構圖

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. 取得工作區清單,記下 ID 直欄,並設定 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 及 Object Storage 的 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 儲存庫中的 疑難排解 小節。

選擇性地展開指導教學

想要新增或延伸此指導教學? 以下是一些構想:

  • GitHub 儲存庫 中,有一個可以部署使用資料庫及雲端物件儲存體的應用程式。 如需如何部署的指示,請參閱 README。
  • 如果您已部署應用程式,請為應用程式 新增 DNS 區域
  • 在多個 Virtual Servers for VPC 上執行應用程式,並新增 負載平衡器 以配送入埠微服務資料流量。

移除資源

  1. 導覽至 Schematics 工作區,按一下工作區
  2. 點選動作... > 銷毀資源
  3. 點選操作... > 刪除工作區