使用 VPC/VPN 閘道對雲端資源進行安全的專用內部部署存取
本教程將產生費用。 使用 成本估算器 根據您的預計使用情況產生成本估算。
IBM 提供了多種方法來使用 IBM Cloud 中的資源安全地延伸內部部署電腦網路。 這使您能夠在需要時配置雲端資源並在不再需要時刪除它們,從而受益於彈性。 此外,您可以輕鬆、安全地將內部部署功能連接至 IBM Cloud 服務。
本指導教學提供自動化來建立資源,以示範內部部署伺服器與雲端資源 (例如 IBM Cloud® Virtual Private Cloud 虛擬服務實例 (VSI) 及 IBM Cloud 資料服務) 之間的「虛擬專用網路 (VPN)」連線功能。 也會配置雲端資源的 DNS 解析。 熱門的 strongSwan「VPN 閘道」用來代表內部部署 VPN 閘道。
目標
- 從內部部署資料中心存取虛擬私有雲 (VPC) 環境
- 使用私有端點網關安全地存取雲端服務
- 使用 DNS 內部部署透過 VPN 存取雲端資源
下圖顯示本指導教學所建立的資源
Terraform 配置將建立下列資源:
- 基礎架構 (VPC、子網路、具有規則的安全群組、Network ACL 及 VSI)。
- Object Storage 和 Databases for PostgreSQL 資料服務的專用端點閘道。
- strongSwan 開放程式碼 IPsec 閘道軟體以內部部署方式用於建立與雲端環境的 VPN 連線。
- 佈建「VPC/VPN 閘道」,以容許內部部署資源與雲端資源之間的專用連線功能。
- 內部部署 DNS 解析器會連接至雲端 DNS 解析器位置,以容許 TLS 透過 VPN 存取雲端資源,包括 存取虛擬專用端點閘道。
開始之前
本指導教學需要:
- IBM Cloud CLI,
- IBM Cloud Schematics 外掛程式 (
schematics),
- IBM Cloud Schematics 外掛程式 (
jq以查詢 JSON 檔案,git以選擇性地複製原始碼儲存庫,Terraform CLI以選擇性地在桌面上執行 Terraform,而非 Schematics 服務。
您將在 指導教學入門 手冊中找到針對您的作業環境下載及安裝這些工具的指示。
本指導教學中的內部部署資料中心將使用 VPC 內的 VSI 進行模擬。
連接 VPC 的偏好機制是 Transit Gateway。 使用 VPC、VSI 及 VPN 模擬內部部署環境僅用於圖解。
此外:
- 檢查使用者許可權。 您的使用者帳戶務必要有足夠的許可權以便建立及管理 VPC 資源。 有關所需權限的列表,請參閱 授予 VPC 資源所需的權限。
- 您需要 SSH 金鑰才能連接至虛擬伺服器。 如果您沒有 SSH 金鑰,請參閱建立金鑰的指示。
使用 Schematics 來建立資源
- 登入 IBM Cloud。
- 導覽至 建立 Schematics 工作區 在 指定範本 區段下,驗證:
- 儲存庫 URL 是
https://github.com/IBM-Cloud/vpc-tutorials/tree/master/vpc-site2site-vpn - Terraform版本是 terraform_v1.2
- 儲存庫 URL 是
- 在 工作區詳細資料下,
- 提供工作區名稱:vpnsts。
- 選擇
Resource Group和Location。 - 按一下 “下一步”。
- 驗證詳細信息,然後按一下 「建立」。
- 在 變數 區段下,按一下溢位功能表並針對每一列選取 編輯,以提供必要值 (resource_group_name、ssh_key_name)。 變數 maintenance 的值必須設為 true。
- 捲動到頁面頂部並點擊 “應用計劃”。 請檢查日誌,以查看所建立服務的狀態。
透過按下面並選取具有相符字首的實例,探索已建立的資源。 在上述圖表中尋找所有資源。
驗證連線功能
Schematics 工作區輸出包含可用來驗證 VPN 連線功能的變數。
-
取得工作區清單,記下 ID 直欄,並設定 Shell 變數:
ibmcloud schematics workspace list -
設定 WORKSPACE_ID 變數:
WORKSPACE_ID=YOUR_WORKSPACE_ID -
取得雲端資源的環境變數:
ibmcloud schematics output --id $WORKSPACE_ID --output json | jq -r '.[0].output_values[].environment_variables.value' -
輸出將如下所示。 將這些結果複製/貼上至 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 -
您現在可以透過 SSH 進入每一個遵循不同路徑的實例,包括透過 VPN 進行跳躍。 此圖顯示步驟所運用的通訊路徑。
如果 SSH 金鑰不是 SSH 的預設值,您可以設定選項
-I PATH_TO_PRIVATE_KEY_FILE,或參閱 SSH 參考手冊以取得更多說明。
- 測試內部部署 VSI 的存取權:
ssh root@$IP_FIP_ONPREM - 測試對雲端防禦主機的存取權:
ssh root@$IP_FIP_BASTION - 透過防禦主機測試對雲端 VSI 的存取權:
ssh -J root@$IP_FIP_BASTION root@$IP_PRIVATE_CLOUD - 透過內部部署、VPN 通道、防禦系統,測試對雲端 VSI 的存取權:
ssh -J root@$IP_FIP_ONPREM,root@$IP_FIP_BASTION root@$IP_PRIVATE_CLOUD - 透過防禦、透過雲端 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 解析。 下圖顯示正在驗證的兩個路徑:
-
存取內部部署 VSI。
ssh root@$IP_FIP_ONPREM -
複製並貼上先前擷取的三 (3) 個變數:
HOSTNAME_POSTGRESQL、HOSTNAME_COS、PORT_POSTGRESQL。 -
執行
dig指令,以透過「虛擬端點閘道」確認資料庫實例的解析。dig $HOSTNAME_POSTGRESQL -
發出
telnet指令來驗證資料庫的連線功能。 它應該會顯示「已連接」。telnet $HOSTNAME_POSTGRESQL $PORT_POSTGRESQL -
連接至資料庫之後,請發出
Ctrl+C以中斷連線。 -
執行
dig指令,以透過「虛擬端點閘道」確認雲端物件儲存空間實例的解析。dig $HOSTNAME_COS -
透過發出
telnet指令,驗證與雲端物件儲存體實例的連線功能。 它應該會顯示「已連接」。telnet $HOSTNAME_COS 443 -
連接至雲端物件儲存體實例之後,請發出
Ctrl+C以中斷連線。
如果有問題,請參閱 GitHub 儲存庫中的 疑難排解 小節。
選擇性地展開指導教學
想要新增或延伸此指導教學? 以下是一些構想:
- 在 GitHub 儲存庫 中,有一個可以部署使用資料庫及雲端物件儲存體的應用程式。 如需如何部署的指示,請參閱 README。
- 如果您已部署應用程式,請為應用程式 新增 DNS 區域。
- 在多個 Virtual Servers for VPC 上執行應用程式,並新增 負載平衡器 以配送入埠微服務資料流量。
移除資源
- 導覽至 Schematics 工作區,按一下工作區
- 點選動作... > 銷毀資源
- 點選操作... > 刪除工作區