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
  • 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,順利狀態如下:

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。用生活的例子來說:

  1. 規劃 (Topology):公路要先規劃有哪些主幹線、支線,哪些主幹道中哪一些會交錯?這裡的規劃會跟成本有直接關係。
  2. 可控性 (Controllable):這些道路可否管控流量?閘道?紅綠燈?單行道?紅綠燈多遠距離設計一個?
  3. 執行政策 (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 最新消息與技術內容!

延伸閱讀

參考資料


Comments