源安全组在AWS中未按预期工作

the*_*est 28 security amazon-ec2 amazon-web-services

我有一个EC2节点,node1(安全组SG1),它应该可以从端口9200上的另一个EC2节点node2(安全组SG2)访问.现在,当我在SG1中添加一个带有端口9200的入站规则并指定SG2作为源自定义IP部分,我无法从node2访问node1.另一方面,如果我在SG1中指定入站规则,其源为0.0.0.0/0或节点2的IP,则它可以正常工作.我的做法有什么问题?

Ant*_*ace 42

您是否尝试连接到node1的公共或私人地址?从文档:

将安全组指定为规则的源或目标时,该规则会影响与安全组关联的所有实例.例如,允许传入流量基于与源安全组关联的实例的私有IP地址.

我之前因为试图连接到EC2实例的公共地址而被烧毁......实际上听起来与你的设置非常相似.当您连接入站规则以使源是安全组时,您必须通过源实例的私有地址进行通信.

有些事情要注意:

  • 在EC2 Classic中,私有IP地址可以在EC2实例的停止/启动时更改.如果您使用的是EC2 classic,您可能需要查看有关弹性DNS名称的讨论,以获得更加静态的寻址解决方案.
  • 如果在VPC中设置环境,则私有IP地址是静态的.您还可以更改正在运行的实例的安全组成员身份.

  • 那么,如何将安全组中的一组实例列入白名单呢? (2认同)

Sil*_*Fox 19

原因: Inter安全组通信适用于私有寻址.如果使用公共IP地址,防火墙规则将无法识别源安全组.

解决方案:您应该使用公共DNS记录来解决您的实例 - 当您的某个实例查询DNS名称时,这实际上会指向私有IP地址.

例如,如果您的实例具有公共IP 203.0.113.185和私有IP 10.1.234.12,则会为您提供公共DNS名称ec2-203-0-113-185.eu-west-1.compute.amazonaws.com.

ec2-203-0-113-185.eu-west-1.compute.amazonaws.com203.0.113.185如果在外部查询,或10.1.234.12在内部查询,将解析为.这将使您的安全组能够按预期工作.

这样您就可以使用弹性IP,因为您只需使用弹性IP的公共DNS条目.此外,让DNS解析为内部IP意味着您不会在实例之间为数据带来带宽费用:

通过其公共NAT IP地址访问其他实例的实例将收取区域或Internet数据传输费用,具体取决于实例是否位于同一区域.