我一直在尝试使用VPC将Web应用程序设置移植到EC2。该应用程序需要一个可从外部访问的Web服务器,该服务器与管理VPC子网内的数据库和其他数据资源的多个后端服务器通信。除此之外,我还需要一个计算头节点,它应该连接到VPC的另一个子网中托管的EC2工作节点的网格,只能通过头节点访问,头节点应该充当使用NAT的VPC的两个子网之间的路由器。 / p>
基本配置应类似于以下原理图:
-
- External Connection ----------+
- |
- Web Server (Externally Facing + VPC Subnet 1)
- |
- +---------------------+-----------------+
- | | |
- Data Services Server Database Server Compute Headnode
- (VPC Subnet 1) (VPC Subnet 1) (VPC Subnet 1 & 2)
- |
- +--------------+--------------+
- | | |
- Worker Node 01 Worker Node 02 Worker Node 03
- (VPC Subnet 2) (VPC Subnet 2) (VPC Subnet 2)
目前我已经能够配置两个子网并设置所需的EC2节点。
我已在两个子网内设置网络ACL,以防止子网1中的EC2实例通过在两个子网内设置规则直接与子网2内的任何IP通信,如下所示:
子网1:
99 ALL Traffic ALL ALL 10.81.82.0/24 DENY
100 ALL Traffic ALL ALL 0.0.0.0/0 ALLOW
* ALL Traffic ALL ALL 0.0.0.0/0 DENY
子网2:
80 ALL Traffic ALL ALL 10.81.82.0/24 ALLOW
100 ALL Traffic ALL ALL 0.0.0.0/0 ALLOW
* ALL Traffic ALL ALL 0.0.0.0/0 DENY
我似乎对此设置的问题是,我没有看到任何明显的方法允许连接到子网1和子网2的计算节点不优先于{{ 1}}子网1的规则超过子网2的10.81.82.0/24 DENY
规则。
我已经阅读了Amazon's VPC networking documentation的大多数页面,但是我仍在努力研究如何实现这种分层设置。任何有关正确方向的帮助或指示都会非常感激。
答案 0 :(得分:0)
您可以在此处使用安全组 将实例与安全组关联并控制实例级别的流量本身以及使用NACL可以使用流量播放的计算节点
此致 开发
答案 1 :(得分:0)
问题已解决。
事实证明,优先问题并非直接归因于网络ACL配置,而是网络配置(在子网安排方面)以及需要设置Web服务器和计算头节点来执行NAT不同的子网。
关于子网安排,通过仔细检查AWS文档,似乎必须建立如下网络:
然后我能够限制这些子网之间的流量,以便使用传入和传出数据的网络ACL按如下方式强制执行NAT层次结构:
90 ALL Traffic ALL ALL 10.0.2.0/24 DENY
,91 ALL Traffic ALL ALL 10.0.3.0/24 DENY
和100 ALL Traffic ALL ALL 0.0.0.0/0
90 ALL Traffic ALL ALL 10.0.1.0/24 DENY
,91 ALL Traffic ALL ALL 10.0.3.0/24 DENY
和100 ALL Traffic ALL ALL 0.0.0.0/0
90 ALL Traffic ALL ALL 10.0.1.0/24 DENY
,91 ALL Traffic ALL ALL 10.0.2.0/24 DENY
和100 ALL Traffic ALL ALL 0.0.0.0/0
由于我想在我的EC2上使用FreeBSD而不是Linux,因此我有一些令人头疼的问题需要设置所需的NAT实例。
我最终在2012年11月的FreeBSD Magazine期刊中找到了一个非常有用的指南。虽然Daemonology.net上详述的最新FreeBSD AMI不再需要其中的一些配置步骤,但基本配置步骤自发布以来未发生变化。
我想任何想要使用Linux AMI for NAT做类似事情的人会觉得这个过程有点容易,但是我没试过,我无法肯定地说。
无论如何,我希望这可以帮助任何有类似问题的人。