技術部落格

集結國內外精選文章,掌握最新雲端技術新知與應用

iKala Cloud / 基礎架構 / [Hybrid] 用 Classic VPN 靜態路由連接 AWS 和 GCP 的 VPC

[Hybrid] 用 Classic VPN 靜態路由連接 AWS 和 GCP 的 VPC

NOTICE: 2022/03/21 以後,GCP Classic VPN 已經 deprecate BGP 了,所以不鼓勵使用 Classic VPN,而 AWS 則是已經沒有 Classic VPN 的選項,都改成 Site-to-site VPN 了

架構

※ IP CIDR 僅供參考
※ 中間的 VPN Connection 是 1 ≥ 條 VPN tunnel(s)
※ AWS VPN Gateway == GCP Cloud VPN

"

圖中的顏色意義:
•  藍色:預先準備好,包含 VPC Networking、CIDR、VM Instance
•  紅色:本文介紹過程中建立的資源與設定
•  紫色:本文介紹過程中,可能需要修改的,像是 Firewall / Security Groups

預先準備

  • GCP 一組 reserved static IP
  • 確認 GCP 的 VM 有套用允許 ICMP 或 SSH 連入的 firewall
  • 確認 AWS 的 VM 有套用允許 ICMP 或 SSH 連入的 security group,subnet 有套用允許 ICMP 或 SSH 連入得 NACL

GCP 建立 VPN Gateway

Networking > Hybrid Connectivity > VPN > Create VPN gateway (or VPC setup wizard)

選擇 Classic VPN

填寫以下資料,填寫好以後,可以先放著,因為下面的 Tunnels 需要 AWS 那邊的資料才能完成建立 (或是可以先不要建立 tunnel,之後再回頭建立)

  • Name:VPN gateway 的名稱
  • Network:VPN gateway 要套用的 VPC network
  • Region:VPN gateway 要放置的 region
  • IP address:一組先建立好的 reserved static IP

填寫以下資料,填寫好以後,可以先放著,因為下面的 Tunnels 需要 AWS 那邊的資料才能完成建立 (或是可以先不要建立 tunnel,之後再回頭建立)

AWS 建立 Customer gateway

customer gateway 是用來指向對象雲 VPC 的 (參考架構圖)

在 VPC > Virtual Private Network (VPN) > Customer Gateways > Create customer gateway

填寫

  • Name: customer gateway 的名稱
  • IP address: 這個前面在 GCP VPN gateway 中指派的 reserved static IP

(BGP ASN 因為我們要用的是靜態路由,不需要自建 GCP Cloud Router,所以保留預設即可)

AWS 建立 Virtual Private Gateway

這個就是 AWS 的 VPN gateway

填寫

  • Name tag:Virtual private gateway 名稱
  • ASN: 選擇 Amazon default ASN

附加 VPG 到要套用的 VPC 上

這邊還要啟用此 VPC > Route table 中的 Route propagation

原本的 route table

進入 Edit route propagation

打勾 Enable

AWS 建立 Site-to-site VPN connections

這一步就是要建立 VPN tunnel 了,AWS VPN 一個 connection 單元會至少包含兩個 tunnels

填寫

  • Name tag
  • Target gateway type: 選擇 virtual private gateway,並選擇剛剛建立好的 virtual private gateway
  • Customer gateway: 選擇 Exist,並選擇剛剛建立好的 customer gateway
  • Routing options: 因為我們要使用靜態路由,所以選擇 Static

Static IP prefix: 這裡要填寫 GCP 那邊我們建立 VPN gateway 的 network internal IP CIDR [1]

(Local IPv4 network CIDR 和 Remote IPv4 CIDR 可以不用設,設置效果會跟之後在 GCP 要設定的 policy base 一樣,只允許特定網段通過 VPN tunnel)

下載 configuration 檔案以便查看 IKE pre-shared key

※ 在這邊取得同一個 tunnel 的 IKE1 和 IKE2 的 pre-shared key 會是一樣的,差別只在於不同實體 VPN 裝置廠商實作的安全級別差異,比較新的會採用 IKE2

其中一個 tunnel 的 pre-shared key

GCP 完成 tunnel 建立

回到 GCP 這邊剛剛停的步驟,填寫

  • Remote peer IP address:這個是 上面其中一組 AWS VPN tunnel 的 Outside IP address
  • IKE pre-shared key:上面其中一組 AWS VPN tunnel 的 pre-shared key
  • Routing policy:因為我們是要選用 static routing,可以選擇 Route-based 或 Policy-based (建議使用 route-based)
    → 這兩者個差異應該是 policy-based 會把進來的 traffic 如果 target 不是 local subnetwork IP range 指定的網段的話給擋掉[3]

Remote network IP ranges:這邊要填寫 AWS 那邊套用 VPN 的 VPC 或 subnet 的 private IP CIDR (不是填寫 tunnel 的 Inside IPv4 CIDR 喔!) [2]

完成建立

建立好以後等待一下,GCP 這邊的 tunnel 會發送握手封包給 AWS 那邊的 tunnel,大概幾分鐘後,如果 GCP tunnel 的 status 變成綠色 Established,就是打通了

AWS 那邊可能刷新的慢一點,但成功以後 Status 也會呈現綠色 Up

測試

先查看各 instance 的 Private IP

GCP

AWS

從 AWS 的 instance ping GCP 的 instance IP

從 GCP 的 instance ping AWS 的 instance IP

查看 Route table

AWS route table

剛剛因為有啟用 Route propagation,所以 VPN tunnel 通了以後,customer gateway 的網段 (也就是 GCP VPC 的 IP CIDR) 會被加入 route table

這個指的就是此 VPC 中的流量如果 target 是那個 GCP 那個網段,就會送去 Virtual private gateway (等等反之 GCP 那邊查看 Route 也有一筆)

GCP route

在 VPC network > Routes,應該會自動多一條是目的地為 172.31.0.0/16 的路由,也就是 AWS VPC 的網段

這個指的就是此 VPC 中的流量如果 target 是那個 AWS 那個網段,就會送去 VPN gateway

Attachment

[1]

[2]

 

[3] policy-based 要自己定義 traffic selector [1],比較安全,但是如果要擴展 ip range,tunnel 需要打掉重建。https://cloud.google.com/network-connectivity/docs/vpn/concepts/choosing-networks-routing#ts-tun-routing

結論

本文整理如何用 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 

 

分享本文:
FacebookLineTwitter
回到頂端