我们目前正在 VPC 内运行 AWS Lambda 函数,例如,已经设置了与 MongoDB Atlas 的对等连接,以便 VPC 内的 AWS Lambda 与我们 MongoDB Atlas 托管的数据库进行通信。
现在出现了一个要求,即我们通过 AWS Lambda 触发的 VPC 内的特定服务也在同一 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 监控器配置到多个实例,以防止单点故障。
或者您可以简单地安排一侧的系统定期发送 ping - 通过 cron 作业或计划任务。
但是,另一种选择是将您自己的 IPSec 网关部署到 AWS - 可以在实例本身上运行,也可以在另一个实例上运行,然后您可以更新子网上的路由表以通过此实例路由到 AWS 外的子网。这使您可以更好地控制 IPSec 设置和行为 - 但与本机 AWS 服务相比,管理起来可能更复杂。