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



