Building a VPN Between GCP and AWS
接續前一篇 Compare GCP VPC Network with 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
- CIDR asia-east1:
- 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
- Region:
流程
以下是整個設定流程:
- GCP: 獲取一個 Public (Static) IP
- AWS: 建立 Customer Gateway
- AWS: 建立 Virtual Private Gateway
- AWS: 建立 VPN Connections
- GCP: 建立 VPN Connections
- 確認 VPN Tunnel 狀態
- 測試
步驟可以跟架構圖的編號對應。
1. GCP: 獲取一個 Public (Static) IP
到 GCP Console:
- VPC network -> External IP addresses
- 點選
Reserve a static address
,取得一個 Public (Static) IP。
- 這邊例子 region 選
asia-east1
設定如下圖:
這個例子取得的 IP 是: 35.185.130.167
,記下來,下一個步驟會使用。
2. AWS: 建立 Customer Gateway
到 AWS Console:
- 到 VPC,確認 Region 正確,這裡是例子是
N. Virginia (us-east-1)
- 選擇 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
- IKE version:
- 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,順利狀態如下:
GCP to AWS:
AWS to GCP:
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。用生活的例子來說:
規劃 (Topology)
:公路要先規劃有哪些主幹線、支線,哪些主幹道中哪一些會交錯?這裡的規劃會跟成本有直接關係。可控性 (Controllable)
:這些道路可否管控流量?閘道?紅綠燈?單行道?紅綠燈多遠距離設計一個?執行政策 (Strategies and Policies)
:哪些車可以上快速道路?假日車流如何疏導?活動如何管制車輛?罰款如何?酒駕怎麼辦?
交通建設的技術,會隨時代改變、進步,但是這三個問題不會隨著技術前進而消失,而是會轉化成其他的形式。
會使用 Hybrid Cloud 通常都是要把服務從既有的 Data Center 搬到 Cloud 的中、大型企業,當把服務搬到 Cloud 時,勢必都需要考慮原本的網路和 Cloud Networking 的整合與串接,串好後就會面臨前面提的三個問題。更多相關的經驗,請參考:Plan and Design Multiple VPCs in Different Regions 的分享,未來有機會再整理 GCP VPC Networking 規劃心得。
更多 GCP 加值服務歡迎隨時聯繫 GCP 專門家,也可以至 GCP 技術部落格 查看更多 GCP 最新消息與技術內容!
延伸閱讀
- Experience GCP
- Compare GCP VPC Network with AWS
- Plan and Design Multiple VPCs in Different Regions
- Ops as Code using Serverless