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.77
、169.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。
- [Cloud Router BGP IPv4 address]填入
- 設定好按[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連線。步驟非常繁瑣,設定時需要仔細和耐心。
好奇要使用 AWS & GCP 之間的 VPN 的用途? 是讓 AWS/GCP 特定服務走 VPN 互相溝通?
回覆刪除我想是跨雲端平台備援與部署,以及跨雲端服務的運用。例如GCP的VM可以透過VPN和AWS的EC2或其他服務互通。
回覆刪除oh~Hybrid Cloud 這樣就複雜了, 這段我偶爾用就很煩躁了, 特別是要處理網路延遲要算效能這條路千萬不要走...
回覆刪除