網頁

2023/8/15

AWS GCP VPC HA VPN連線設定

AWS和GCP的VPC透過HA VPN(High Availability VPN)連線設定。





事前要求


AWS

參考「AWS VPC 建立VPC」建立AWS的VPC。

參考「AWS VPC 建立subnet」建立AWS VPC的subnet。

範例已建立的AWS VPC資訊如下:



範例已建立的AWS VPC subnet資訊如下:




GCP

參考「GCP 建立VPC network」建立GCP VPC與subnet。注意建立時的下面設定:

  • [Sunbets]項目下的[Subnet creation mode]選擇[Custom],建立一個subnet。
  • [Firewall rules]勾選所有防火牆規則。

  • [Dynamic routing mode]選擇[Global],即VPC的Cloud Routers會看所有區域(region)的Cloud Router的routes。


範例已建立的GCP VPC資訊如下:





下面開始分別在GCP console和AWS console設定AWS VPC和GCP VPC的VPN連線。

建立GCP Cloud Router

前往GCP [Hybrid Connectivity],在左側選單點選[Cloud Routers]進入Cloud Routers頁面。



在Cloud Routers頁面點選[CREATE ROUTER]開始建立Cloud Router。

  • [Name]輸入Cloud Router的名稱。
  • [Network]選擇要連線的GCP VPC名稱。
  • [Region]選擇同VPC的region。
  • [Google ASN]填入65001可用範圍64512-65534, 4200000000-4294967294),此為設定BGP路由中Google的自治系統編號(ASN)。待會這會填入AWS Customer gateway的[BGP ASN]

按[CREATE]完成建立。



建立好的GCP Cloud Router如下。




建立GCP Cloud VPN Gateway

前往[Hybrid Connectivity],在左側選單點選[VPN]進入VPN頁面。



在VPN頁面點選[CLOUD VPN GATEWAY]頁籤,點擊[CREATE VPN GATEWAY]按鈕開始建立VPN Gateway。



在[Create VPN Gateway]頁面,

  • [Name]輸入VPN gateway的名稱。
  • [Network]選擇要連線的GCP VPC名稱。
  • [Region]選擇同VPC subnet的region。
  • [VPN tunnel inner ip stack type]選擇[IPv4(single-stack)]。

按[CREATE]完成建立。



建立好的GCP Cloud VPN Gateway如下。



Cloud VPN Gateway有兩個Interface IP如下,待會要填入到AWS的Custoemr Gateway的[IP address]:

  • Interface: 0 - 34.157.69.138
  • Interface: 1 - 34.157.202.209


建立AWS Customer Gateway

這邊一共要建立兩個Customer gateway,下面為建立第一個的範例。

前往[VPC],在左側選單[Virtual private network(VPN)]項目下點選[Customer gateways]進入[Customer gateways]頁面。



在[Customer gateways]頁面點擊右上角的[Create customer gateway]按鈕開始建立AWS Customer Gateway。

在[Create customer gateway]頁面

  • [Name tag]輸入Customer gateway的名稱。
  • [BGP ASN]填入GCP Cloud Router的ASN,為65001
  • [IP address]填入GCP Cloud VPN gateway的Interface IP,這邊填Interface: 0的IP為34.157.69.138

其餘欄位保持預設,按[Create customer gateway]按鈕完成建立。



建立好的兩個AWS Customer gateway如下。




建立AWS Virtual Private Gateway

前往[VPC],在左側選單[Virtual private network(VPN)]項目下點選[Virtual private gateways]進入[Virtual private gateways]頁面。



在[Virtual private gateways]頁面點擊右上角的[Create virtual private gateway]按鈕開始建立AWS Virutal private gateway。

在[Create virtual private gateway]頁面

  • [Name tag]輸入Virtual private gateway的名稱。
  • [Autonomous System Number(ASN)]選擇[Amazon default ASN],即預設的Amazon ASN為64512

按[Create virtual private gateway]按鈕完成建立。



進入建立好Virtual private gateway,點選右上角[Action]選單的[Attach to VPC]附加到要VPN連線的AWS VPC。

下面是建立好並且附加到AWS VPC的Virtual private gateway。可以看到[Amazon ASN]為64512,這後面在設定GCP tunnel的BGP session的[Peer ASN]需要填入。




建立AWS VPN connections

這邊一共要建立兩個VPN connection(分別對應到一個Customer gateway),下面為建立第一個的範例。

前往[VPC],在左側選單[Virtual private network(VPN)]項目下點選[Site-to-Site VPN connections]進入[VPN connections]頁面。



在[VPN connections]頁面點擊右上角的[Create virtual private gateway]按鈕開始建立AWS Virutal private gateway。

在[Create VPN connection]頁面

  • [Name tag]輸VPN connection的名稱。
  • [Target gateway type]選擇[Virutal private gateway]。
  • [Virtual private gateway]選擇剛建立的Virtual private gateway。
  • [Customer gateway]選擇[Existing]。
  • [Customer gateway ID]選擇剛建立的第一個Customer gateway。

其餘欄位維持預設,按[Create VPN connection]按鈕完成建立。



下面是建立好的兩個VPN connection。



每個VPN connection會有兩條tunnel,所以這邊兩個VPN connection會有一共四條tunnel。

點選第一個VPN connection,點選下方的[Tunnel detail]頁籤顯示兩條tunnel的資訊。



點選第二個VPN connection,點選下方的[Tunnel detail]頁籤顯示兩條tunnel的資訊。



Tunnel的[Outside IP address]待會需要填入GCP Peer VPN Gateway的interface。

Tunnel的[Inside IPv4 CIDR]待會設定GCP VPN tunnel的BGP session的[Cloud Router BGP IP address]和[BGP peer IP address]會用到。


取得AWS VPN connection tunnel pre-shared key

選擇一個VPN connection,點選頁面右上方的[Actions],選擇[Modify VPN tunnel options]。



在[Modify VPN tunnel options]頁面,
[VPN tunnel outside IP address]選擇其中一個tunnel的outside IP addresss,
然後在下方[Pre-shared key]欄位會出現此tunnel的pre-shared key,這待會在設定GCP VPN tunnel的BGP routing options會用到。



由於有兩個VPN connection共四條tunnel,所以會有四個pre-shared key。


建立GCP Peer VPN gateway

前往GCP [Hybrid Connectivity],在左側選單點選[VPN]進入[VPN]頁面。



在[VPN]頁面點選[PEER VPN GATEWAYS]頁籤,點擊[CREATE PEER VPN GATEWAY]按鈕開始建立Peer VPN gateway。



在[Creaet peer VPN Gateway]頁面,

  • [Name]填入Peer VPN gateway名稱。
  • [Interfaces]選擇[four interfaces],出現的四個欄位分別填入AWS VPN connection共四條tunnel的[Outside IP address]。

按[CREATE]按鈕完成建立。



建立好的GCP Peer VPN gateway與設定的四個interface IP address。




建立GCP Cloud VPN tunnel

前往GCP [Hybrid Connectivity],在左側選單點選[VPN]進入[VPN]頁面。



在[VPN]頁面點選[CLOUD VPN TUNNELS]頁籤,點擊[CREATE VPN TUNNEL]按鈕開始建立VPN tunnel。



在[Add VPN tunnel]頁面,

  • [Name]選擇前面建立的Cloud VPN gateway名稱。

按[CONTINUE]繼續。



在[Add VPN tunnels]步驟,

  • [Peer VPN gateway]選擇[On-prem or Non Google Cloude]。
  • [Peer VPN gateway name]下拉選單選擇之前建立的Peer VPN gateway名稱。
  • [High availability]選擇[Create 4 VPN tunnels]。可以看到下面特別註明AWS VPN連線需要四條tunnel。


接續[Add VPN tunnels]步驟下的[Routing options]項目。

  • [Cloud Router]選擇剛建立的的Cloud Router名稱。
  • 根據上面[High availability]的選擇,所以接著要設定四個tunnel,下面為第一個tunnel範例,依此類推:
    • [Name]輸入tunnel名稱。
    • [IKE pre-shared key]填入此tunnel的[associated peer VPN gateway interface]對應的AWS VPN connection的tunnel [Outside IP address]的pre-shared key。

設定好按[CREATE & CONTINUE]繼續。




設定GCP VPN tunnel BGP session

在[Configure BGP sessions]步驟,點選右側的[CONFIGURE BGP SESSION]開始為每一個tunnel設定BGP session。



在[CREATE BGP session]頁面,

  • [Name]填入BGP session的名稱。
  • [Peer ASN]填入AWS Virtual private gateway的[Amazon ASN],為64512
  • [Allocate BGP IPv4 address]選擇[Manually]手動填入。這邊要使用對應的AWS VPN connection tunnel的[Inside IPv4 CIDR]範圍內的IP。範例第一個tunnel的[Inside IPv4 CIDR]為169.254.127.76/30,所以有169.254.127.77169.254.127.78兩個可用IP address。
    • [Cloud Router BGP IPv4 address]填入169.254.127.78。此為GCP tunnel的BGP IP。
    • [BGP peer IPv4 address]填入169.254.127.77。此為AWS VPN connection tunnel的BGP IP。
  • 設定好按[SAVE AND CONTINUE]繼續後面BGP session的設定。

在[Configure BGP sessions]設定好全部的BGP session後,按[SAVE BGP CONFIGURATION]儲存。



返回[VPN]頁面的[CLOUD VPN TUNNELS]頁籤,若BGP session沒任何問題,過一陣子可看到如下結果,分別建立了四個tunnel的[VPN tunnel status]狀態為[Established]、[BGP session status]狀態為[BGP established]。



前往AWS VPN connection,在各VPN connection的[Tunnel details]頁籤可看到tunnel的[Status]為[Up]。




到此便完成AWS VPC和GCP VPC的VPN連線。步驟非常繁瑣,設定時需要仔細和耐心。


3 則留言:

  1. 好奇要使用 AWS & GCP 之間的 VPN 的用途? 是讓 AWS/GCP 特定服務走 VPN 互相溝通?

    回覆刪除
  2. 我想是跨雲端平台備援與部署,以及跨雲端服務的運用。例如GCP的VM可以透過VPN和AWS的EC2或其他服務互通。

    回覆刪除
  3. oh~Hybrid Cloud 這樣就複雜了, 這段我偶爾用就很煩躁了, 特別是要處理網路延遲要算效能這條路千萬不要走...

    回覆刪除