如何允许同一防火墙组中的EC2实例之间进行交互

时间:2011-08-09 14:12:25

标签: amazon-ec2 firewall iptables

场合

我们采取以下设计:

App servers      DB servers
- Server A       - Server X
- Server B       - Server Y
- Server C       - Server Z

每个应用服务器都在app-server-groupdb-server-group中。每个数据库服务器仅在db-server-group

虽然我假设同一防火墙组中的服务器可以相互连接,但事实证明它们没有:p。


Requirities

  • 服务器A,B和C应该能够连接到X,Y,Z
  • db-server-group
  • 之外,根本不应该访问服务器X,Y和Z.
  • 服务器A,B和C应该可以从app-server-group外部访问(在端口80)。
  • 服务器A,B,C,X,Y和/或Z永远不应该是硬编码的。所以我不希望任何例外[A,B,C,X,Y,Z] - 防火墙规则。这是因为它需要具有容错能力并且可以自动扩展。可能发生A下降,并且相同的实例D(具有新IP)上升,它应该能够立即连接到X,Y,Z,而不改变防火墙规则。所以没有IP别名(弹性IP)......
  • 只要IP没有硬编码,我就可以使用IP表。
  • 对X,Y和Z使用身份验证(通过用户/通行证)是不可选的。底层数据库不提供此功能。

问题

我怎样才能使这项工作=)?

1 个答案:

答案 0 :(得分:3)

您是对的,分配给db-server-group的所有服务器都应该能够访问db-server-group SG中所有服务器上打开的端口。你确定你打开了正确的端口吗?你确定盒子本身没有阻止你的防火墙(例如,如果你正在运行Windows,则为Windows防火墙)。

根据您的要求,听起来您不希望在Db服务器安全组中安装App服务器。您只需将db-server-security组上的端口打开到app-server-group即可。该规则的来源类似于sg-xxxxxxxx而不是IP地址。您可以在AWS管理控制台中的app-server-group的详细信息选项卡上找到名为“group id”的sg-xxxxxxx值。如果您正在运行MS sql server,则需要在1433上允许tcp流量。如您所愿,在允许流量通过时不会涉及IP地址或其他身份验证。

然后,您将在app-server-group上将端口80打开为源0.0.0.0。