我們目前正在 VPC 內運行 AWS Lambda 函數,例如,已經設定了與 MongoDB Atlas 的對等連接,以便讓 VPC 內的 AWS Lambda 與 MongoDB Atlas 託管的資料庫進行通訊。
現在出現了一個要求,即我們的 VPC 中由 AWS Lambda 觸發且也在同一 VPC 中運行的特定服務必須透過 VPN 存取本機網路功能/主機。此外,該網路需要能夠回應該服務的訊息,因此我認為需要站點到站點的連線。
客戶向我們提供了 IKE 第一階段參數、IKE 第二階段參數 (IPSEC)、其本地對等 IP 位址、接受的 VPN 通訊連接埠以及本地加密域。
他們現在要求我們提供遠端對等 IP 位址和遠端加密域。
問題1:我們正在嘗試在 VPC 中的 AWS 上實現可行的目標(我正在閱讀有關此問題的相互矛盾的帖子。
問題2:我是否正確假設隧道啟動必須從客戶這邊進行,然後我們使用網路監控輪詢來保持隧道處於活動狀態?
答案1
關於問題1。
假設您指的是透過基於 IPSec 的 VPN 進行連線以安全地連接到位於 AWS 外部的資源的能力。答案是肯定的。然而,AWS 的本機實作確實有一些限制。首先,無法指定第 1 階段或第 2 階段配置設定的任何方面。相反,AWS 為您提供了下載一系列製造商的預先配置設定的能力,而且還提供了一些很好的通用範例。
一些好的資源是:
AWS 託管 VPN 連接- 提供有關 AWS VPN 網關服務的詳細信息
您的客戶入口網站- 提供有關 AWS 外部設備所需設定的信息
關於問題2。
這是事實,如果隧道因某種原因斷開,AWS 端無法啟動它(如果你問我,這是一個非常煩人的限制)。然而,有一些方法可以解決這個問題。某些設備支援發送保活資料包以保持隧道正常運作。例如,Cisco ASA 可以利用 IP SLA 功能透過隧道傳送 SLA 訊息以保持其正常運作。摘自ASA 設定範例:
為了讓隧道保持活動或始終開啟狀態,ASA 需要將流量傳送到 acl-amzn 中定義的子網路。 SLA 監控可以設定為向子網路中的目標傳送 ping,並使隧道保持活動狀態。該流量需要傳送到將回傳回應的目標。這可以透過從外部介面向 ASA 發送 ping 到目標來手動測試。 ping 的可能目標是 VPC 內的實例。為了實現冗餘,可以將多個 SLA 監視器配置到多個實例,以防止單點故障。
或者,您可以簡單地安排一側的系統透過 cron 作業或排程任務定期發送 ping。
然而,另一種選擇是將您自己的IPSec 網關部署到AWS 中- 可以在實例本身上運行,也可以在另一個實例上運行,然後您可以更新子網路上的路由表,以透過此實例路由到AWS 外的子網路。這使您可以更好地控制 IPSec 設定和行為 - 但與本機 AWS 服務相比,管理起來可能更複雜。