AWS:公用子网+VPN网关



问题

我们可以制作一个既有igw-id(互联网网关id)又有vgw-id(VPN网关id)的路由表吗?如果我们不能/不应该做,为什么?

示例

10.0.0.0/16 --> Local  
172.16.0.0/12 --> vgw-id  
0.0.0.0/0 --> igw-id 

参考

https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario3.html
(我主要参考"概述"部分和"替代路由"部分。)

解释

上面的这个网页展示了一个VPC有一个公用子网、一个私有子网和一个VPN网关的场景。在这个例子中,VPN网关总是从私有子网中的实例访问(这意味着它的路由表没有记录"igw-id")。我想知道为什么一个路由表没有两个";igw-id";以及";vgw-id";。

是的,我们可以同时拥有igwvgw。事实上,上面的例子非常适合公共子网,它可以通过直接连接或站点到站点VPN连接到您的公司网络,还可以访问互联网并可以从互联网访问。

现在,不管你是否想要,这都是一个架构决策。在AWS给出的示例场景中,他们试图通过拥有一个公共子网(带有igw)来隔离子网,该子网可以包含可从互联网访问的服务,以及一个用于其他后端服务(例如:数据库)的私有子网。这些后端服务可以使用站点到站点VPN从公司网络访问,这就是子网具有vgw的原因。

是的,您可以有一个包含您指定的3条路由的路由表。但是,请记住,使用路由0.0.0.0/0 --> igw-id,internet上的主机可以启动与该子网中实例的连接。通常,您希望保护子网中允许路由到本地网络的实例的安全,而不是将其暴露在互联网上。如果这些实例需要连接到互联网,AWS建议您的VPC使用NAT设备。

虽然这在技术上是可能的,但不这样做的主要原因是一个称为网络分割的概念。它基本上遵循";纵深防御;网络层应该以"分层"的方式分离;"公共";和一个";私人的";部分(也经常使用更多的区域,如用于数据存储的第三层和用于管理其他三层的基础设施的第四层)。

由于你的公共子网直接暴露在互联网上,当你配置错误时,它最有可能被破坏。如果您的公共子网中有通往VPN网关的路由,那么一次入侵也会使攻击者攻击您的预处理环境。

这就是为什么在体系结构中添加一个或两个网络层是最佳做法。即使公共层受到威胁,他们仍然需要进入私有层中的实例,然后才能攻击您的预处理环境。

建议您的公用子网在可能的情况下只包含弹性负载平衡器或类似的组件。这是减少应用服务器攻击面的一个很好的方法(减少暴露不需要的端口等的机会)

在这里可以找到一个很好的指南。它不包括vpn,但你可以将它们作为应用层的一部分。

最新更新