在工作場景中,自己接觸到很多客戶透過VPN來連結多雲架構,於是決定實作連結AWS和GCP。
這篇文章整理 GCP Cloud VPN 與 AWS Site-to-Site VPN 的對接架構,並分別省錢版與企業版。
情境一:只是想連線測試或主管叫我省錢
這是省錢版,當你只是想測試連線功能,或主管叫你要省錢。
AWS 端設定
- 一個 Customer Gateway
- 填入GCP的固定IP
- 一個 Virtual Private Gateway
- 建立並與要測試連線的 VPC 關聯
- 一個 VPN Connection
- 因為 GCP Classic VPN Gateway 已經不支援BGP動態路由,因此設定 Routing options 時要選擇Static,並填上GCP要測試的 VPC 網段
- 確認Connection Static Route頁面有出現VPC網段
- 要測試連線的VPC子網路由表啟用Route Propagation(或手動加上要測試的網段)
GCP 端設定
- 一個固定IP
- 建立一個固定IP
- 一個Classic VPN Gateway
- 因為在GCP建立VPN Gateway預設會啟用HA設定(也就是給你兩個Interface),所以必須手動調整為建立Classic VPN Gateway
- 一條VPN Tunnel
- 按照AWS Tunnel 1 or 2的資訊來填入Remote peer IP address(也就是Outside IP address)、Remote network IP ranges(也就是Inside IPv4 CIDR)、IKE PSK Key(下載配置檔從裡面得到Key)
- Routes
- 當你看到兩邊的Tunnel都亮綠燈時,想要用Ping測試連線,卻發現怎麼連不上
- 因為前面是設定靜態路由,所以我們還需要手動加上回AWS的路由
- Destination IPv4 range > AWS子網網段
- Next hop > 選擇建立的VPN Tunnel
注意事項
- 注意Tunnel 的IKE version一致
- AWS預設一個 VPN Connection就會給你兩條Tunnel,你也不能更改,不管有沒有兩條都用都收一樣的錢(一個 Connection 跟兩個公有IP的錢)。
- 以上方案AWS Tunnel只會有一條有通,只要AWS或GCP Gateway IP所在的區域故障就會斷線,故不適合作為正式環境使用
情境二:企業正式系統連線
企業正式環境連線的作法,目標是任一雲端的單一地區故障都不會影響連線,提升連線高可用性。
GCP 端設定
在設定GCP VPN Gateway時,預設會使用 High Availability 的選項,也就是會產生兩個公開 IP(Interface 0 與 Interface 1),分別位於不同的可用地區,以提供保證的 SLA。
- 一個HA VPN Gateway
- GCP會自動分配兩個公有IP
- 一個Peer VPN Gateway
- 選擇 four interfaces,並填入 AWS 四條Tunnel產生的 Tunnel Outside IP
- 一個 Cloud Router
- 用於 BGP 動態路由
- 四條VPN Tunnel
- 對應 AWS 的 4 條線路
- 四個 BGP Sessions
- 每條 Tunnel 一個 BGP Session
AWS 端設定
每個 AWS Customer Gateway只能填寫一個 IP,並且每個 VPN Connection只能連接一個 Customer Gateway(代表 GCP 端的設備)和一個 Virtual Private Gateway(代表 AWS 端的設備)。
所以當今天 AWS 要對接 GCP VPN Gateway 的兩個 IP 時,我們在 AWS 端必須建立兩個 Customer Gateway,以及建立兩個 VPN Connection。
- 兩個 Customer Gateway
- 對應GCP HA VPN 的兩個 Interface IP
- 一個 Virtual Private Gateway
- 建立並與要測試連線的 VPC 關聯
- 兩個 VPN Connection
- 分別關聯上述的 CGW 與 VGW
關鍵參數對照
我們在 AWS 下載的VPN設定檔(通常選 Generic vendor),這份文件是從 AWS 的視角出發的。AWS 把 GCP 當作一般的客戶端機房,所以這份檔案是在告訴 GCP「你的 IP 應該設成這樣,你要連過來的目標 IP 是那樣」。
1. Outside IP 建立隧道
這組 IP 是在公共網路上使用,目的是為了讓兩邊的 VPN gateway 能找到對方並建立加密隧道。
- VPN Gateway Interface IP (GCP) ↔ Outside IP Address (AWS Customer Gateway 側)
- 對 GCP 來說,這是它自己的 VPN 接口公共 IP,但對 AWS 來說,這是它要連過去客戶端 (GCP)的公共 IP。
- Peer VPN Gateway Interface IP (GCP) ↔ Outside IP Address (AWS Virtual Private Gateway 側)
- GCP 把 AWS 當成對等端 (Peer),而 AWS 對自己內部的 VPN 節點稱為 Virtual Private Gateway (VGW)。所以 AWS 的公共 IP 就是 GCP 眼中的 Peer IP。
2. Inside IP 進行路由交換
加密隧道建立好了,兩邊會透過隧道內部的虛擬 IP 來溝通路由資訊,並使用 BGP 協定。這組 IP 通常是在 169.254.x.x 網段。
- Cloud Router BGP IP (GCP) ↔ Inside IP Address (AWS Customer Gateway 側)
- GCP 的 Cloud Router 負責跑 BGP 協議,它需要一個內部的 BGP IP。因為 AWS 把 GCP 當成客戶端,所以 AWS 設定檔中寫給 Customer Gateway 側的 Inside IP,就是 GCP 該設在 Cloud Router 上的 IP。
- Peer BGP IP (GCP) ↔ Inside IP Address (AWS Virtual Private Gateway 側)
- GCP 也需要知道對面的 BGP 是誰,在 AWS 設定檔中會註明 Virtual Private Gateway 側(即 AWS 自己)的內部 IP。對 GCP 來說,這就是它的 BGP Peer。
3. 為什麼BGP session的IP是選手動填入不是自動分配?
因為我們AWS已經把對應的IP設定好了,GCP 的BGP session只能配合他才能找到路。如果要選擇自動分配,GCP要作為連線設定方。
整體網路流通路徑
AWS EC2 ↔VPC Private Subnet ↔ Virtual Private Gateway ↔ Customer Gateway ↔ AWS VPN Tunnel 1/2 ↔ Internet(加密傳輸)↔ GCP VPN Tunnel 1/2 ↔ Peer VPN Gateway ↔ Cloud VPN Gateway ↔ VPC Subnet ↔ GCP Compute Engine
.png)
留言
張貼留言