與多個雲端或資料中心的 AWS VPC 和 VPN 連接,其中資料中心具有重疊的 IP 位址範圍

與多個雲端或資料中心的 AWS VPC 和 VPN 連接,其中資料中心具有重疊的 IP 位址範圍

問題陳述

我對使用 AWS Cloud VPC 的業務連續性計劃有以下要求 -

  1. 在我們開發人員的 AWS VPC 私人子網路中,我們將為每個開發人員提供工作空間(即 AWS 安全桌面即服務)
  2. 從這些工作區,每個開發人員都可以使用 VPN 連接到不同的遠端雲,即公有雲 GCP/AWS/Azure 甚至本地資料中心。這些不同的遠端資料中心或公有雲可能具有重疊的 IP 位址範圍,我們無法控制這些 IP 範圍管理。
  3. 開發人員可以使用 VPN 在工作區輕鬆切換和連接不同的雲

AWS 原生服務/功能並不能直接提供協助

站對站 VPN- 為了滿足這些要求,AWS 站台到站台 VPN 傳輸網路超出了範圍,因為它不允許重疊的 IP 範圍。
採用間接的方式來解決重疊的IP 位址範圍,AWS 文檔中有一個冗餘的站點到站點VPN 計劃,但它是針對故障轉移場景的,我需要所有遠端雲端都可以隨時連接,即始終處於活動狀態。

中轉網關- AWS Transit Gateway 沒有幫助,因為理想情況下它不允許重疊的 IP 範圍多雲網路。
有一種方法可以進行路由分段,即在Transit Gateway 中使用多個路由表來分離互連雲的單獨組合的路由路徑,但這種方法需要使用Transit Gateway 附件進行此類分段,並且AWS VPC 不能有多個附件。
另外,即使我們做了類似的事情,可能會在EC2 實例上使用軟體VPN(不確定是否可能),我不確定我們是否可以輕鬆地從每個工作區進行連接並切換到所有不同的雲,因為開發人員的AWS VPC 子網路路由表目標中不能有重疊的 IP 範圍。


我的解決方案

我的網路計劃
在同一子網路中,我正在考慮使用基於軟體的 IPSec VPN 方法,即在 EC2 上的一個實例中將具有 VPN 服務,如 Strongswan 和用於 SNAT 的 Iptable 規則。此方法的靈感來自於 AWS Support Answer為 VPN 流量配置 NAT
對於每個雲端/資料中心,都會有一個帶有軟體 IPSec VPN 和 IPtable 規則的 EC2 執行個體設定。
在遠端,也會有一個 VPN 網關,就像 AWS VGW 和客戶網關配對一樣。
對於使用 VPN 從工作區到正確遠端雲端的流量,我必須在子網路的路由表中進行條目,其中「目標」作為遠端雲端的 IP 位址範圍,「目標」作為 VPN EC2 執行個體的 eni id。
這種方法有問題同樣,對於具有重疊 IP 位址的遠端雲,我無法在開發人員的 AWS VPC 子網路路由表中新增條目。

為了解決這個問題,我正在考慮做類似IP 範圍操作的事情,其中​​我將為每個重疊的遠端雲完全編造或不真實的IP 範圍,即對於真實IP 範圍為192.168.xy/16 的雲,不真實的IP 範圍將為10.10。
之後,我將為每個遠端雲端擁有單獨的 EC2 VPN 伺服器。然後,對於任何遠端雲端的路由,路由表中的條目將以 10.10.pq/16 作為目標,以 EC2 VPN 伺服器的 eni id 作為目標。
在 EC2 VPN 伺服器上,我們將設定 Iptable 規則,它將執行諸如 PREROUTING DNAT 和 POSTROUTING SNAT 之類的操作,用於僅 IP 轉發,如下所示堆疊溢位問答
工作區的開發人員必須了解虛幻 IP 和真實 IP 之間的映射,並使用虛幻 IP 發送流量。 EC2 VPN 伺服器 Iptables 規則必須使用自訂腳本進行更新,以便此對應可保持最新映射的更新。

我不確定我上述的方法的正確性或有效性。

我上述方法暗示的另一個問題
它也讓人懷疑,即使我連接到遠端雲端中具有特定 IP 的實例,但存取其他雲端服務(如無伺服器功能或 API)或託管/抽象服務(如 DB/LB)又如何呢?
不過,這可以透過使用開發人員 VPC 中的 IGW 發送流量或連接到遠端雲端中的堡壘主機來完成。


其他方法,我在網路上搜尋到的正在設置一個自定義的多雲覆蓋網絡,這看起來令人畏懼或火箭科學。
我也不確定 OpenVPN 等開源 VPN 或防火牆/網路軟體等 pfsense 是否可以幫助其某些本機功能來解決我原來的問題。

我僅在 AWS 雲端上工作時獲得了所有網路或 VPN 知識,並且不太熟悉電腦科學中一般網路的深度。

請協助解決這些問題。

相關內容