如何透過 VPN 串接 GCP 和 AWS 的 VPC
接續前一篇 VPC Network:GCP 和 AWS 功能比較 的整理,繼續整理如何透過 VPN 把 GCP 和 AWS 的 VPC 串接起來,形成 Hybrid Cloud 架構。
架構
整個架構圖如下:
圖中的顏色意義:
• 藍色:預先準備好,包含 VPC Networking、CIDR、VM Instance
• 紅色:本文介紹過程中建立的資源與設定
• 紫色:本文介紹過程中,可能需要修改的,像是 Firewall / Security Groups
本文設定過程中, GCP and AWS 網路資訊:
• GCP VPC Networking:
• CIDR asia-east1: 10.0.0.0/16
• VM Instance: 10.1.0.3
• AWS VPC:
• Region: N. Virginia (ue-east-1)
• VPC CIDR: 172.30.0.0/16
• Public Subnet: 172.30.3.0/24
• EC2 Instance: 172.30.3.94
流程
以下是整個設定流程:
1. GCP: 獲取一個 Public (Static) IP
2. AWS: 建立 Customer Gateway
3. AWS: 建立 Virtual Private Gateway
4. AWS: 建立 VPN Connections
5. GCP: 建立 VPN Connections
6. 確認 VPN Tunnel 狀態
7. 測試
* 註記:”步驟可以跟架構圖的編號對應。”
1. GCP: 獲取一個 Public (Static) IP
到 GCP Console:
1. VPC network -> External IP addresses
2. 點選 Reserve a static address,取得一個 Public (Static) IP。
• 這邊例子 region 選 asia-east1
設定如下圖:
這個例子取得的 IP 是: 35.185.130.167,記下來,下一個步驟會使用。
2. AWS: 建立 Customer Gateway
到 AWS Console:
1. 到 VPC,確認 Region 正確,這裡是例子是 N. Virginia (us-east-1)
2. 選擇 VPN Connections -> Customer Gateways -> Create Customer Gateway,建立如下圖:
• Name:填入容易了解的識別名稱
• Routing:選 Static
• IP Address:填上一個步驟的 Public IP
設定如下圖:
3. AWS: 建立 Virtual Private Gateway
接續前一個步驟,在 VPC 裡繼續建立 Virtual Private Gateway。選擇 VPN Connections -> Virtual Private Gateway -> Create Virtual Private Gateway
• Name:填入容易了解的識別名稱
• ASN:選 Amazon default ASN
設定如下圖:
完成後,把 VGW attached 到 VPC。
到 Route Table 設定需要使用的 Subnet,打開 Route Propagation,Route Table 會自動交換,否則就要自行設定 Route Rules。設定如下圖:
4. AWS: 建立 VPN Connections
接續前一個步驟,在 VPC 裡繼續建立 VPN Connections。選擇 VPN Connections -> VPN Connections -> Create VPN Connections:
• Name:填入容易了解的識別名稱
• Virtual Private Gateway: 選擇步驟三的 VPG
• Customer Gateway:選擇步驟二的 CGW
• Static IP Prefix: 填入 GCP VPC Networking 的 CIDR,這裡的例子是 10.1.0.0/16
• Tunnel Options: 讓 AWS 自己產生。
設定如下圖:
建立完成後,在 VPN Connections 裡點選剛剛建立的,然後下載 Download Configuration (.txt),Vender 選擇 Generic 就好,再設定檔立面找到以下資訊,下一個步驟會使用。
• IPSec Tunnel #1
• IKE version: IKEv1
• Pre-Shared Key: _s8_w69MhhEB**************
• Virtual Private Gateway: 52.7.24.140
• Tunnel 一般會建立兩個,作為 HA,這邊我只做一個。
設定如下圖:
5. GCP: 建立 VPN Connections
回到 GCP Console 建立 VPN Connections。選擇 Networking -> Hybrid Connectivity -> VPN
VPN Gateway 選擇以下的項目
• Network
• Region
• IP Address: 步驟一建立的 Public (Static) IP
設定如下圖:
VPN Tunnel設定以下,資訊來自於步驟四 VPN Config 裡
• Remote peer IP Address: VPN Config 的 Virtual Private Gateway,這邊例子是 52.7.24.140
• IKE Version: VPN Config 的設定,這邊例子是 IKEv1
• Shared Secret: VPN Config 的設定
• Routing Options 選擇 Policy-based
• Remote network IP ranges: AWS VPC 的 CIDR
• 選擇 GCP subnetworks
6. 確認 VPN Tunnel 狀態
步驟五設定好的之後存檔,等約五到十分鐘,確認連線狀態,順利的話狀態如下圖:
GCP VPN Tunnels:
AWS VPN Connection:
7. 測試
兩邊機器相互 ping,順利狀態如下:
Troubleshooting
過程中如果有問題,可以依序檢查以下的設定:
• AWS:
• VPN Tunnel Status
• Route Table
• Network ACLs
• Security Groups: 可以先開 0.0.0.0/0
• GCP
• VPN Tunnel Status
• Firewall Rules: 增加 0.0.0.0/0 icmp 掛到 VM instance
結論
本文整理如何用 VPN 串接 GCP / AWS 的 VPC,確認技術的可行性,實際上的應用要考慮的更多。
現在 SaaS 越來越流行,很多人會以為 IaaS 不重要,或者忽略。但是企業整體營運還是要面對 IT 基礎設施 (Infrastructure),而最根本的就是 Network Topology 的問題,這些問題包含了 1) 規劃、2) 可控性、3) 執行政策 三個面向,本質上是沒有改變,不會因此而 NoOps。用生活的例子來說:
1. 規劃:公路要先規劃有哪些主幹線、支線,哪些主幹道中哪一些會交錯?
2. 可控性:這些道路可否管控流量?閘道?紅綠燈?單行道?紅綠燈多遠距離設計一個?
3. 執行政策:哪些車可以上快速道路?假日車流如何疏導?活動如何管制車輛?罰款如何?酒駕怎麼辦?
交通建設的技術,會隨時代改變、進步,但是這三個問題不會隨著技術前進而消失,而是會轉化成其他的形式。
會使用 Hybrid Cloud 通常都是要把服務從既有的 Data Center 搬到 Cloud 的中、大型企業,當把服務搬到 Cloud 時,勢必都需要考慮原本的網路和 Cloud Networking 的整合與串接,串好後就會面臨前面提的三個問題。更多相關的經驗,請參考:Plan and Design Multiple VPCs in Different Regions 的分享,未來有機會再整理 GCP VPC Networking 規劃心得。
延伸閱讀
• Experience GCP
• Compare GCP VPC Network with AWS
• Plan and Design Multiple VPCs in Different Regions
• Ops as Code using Serverless
參考資料
• Automated Network Deployment: Building a VPN Between GCP and AWS
• AWS Managed VPN Connections
(本文來自合作部落客 Rick:Complete Think,GCP 專門家授權轉載。)
相關文章
