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

时间:2014-06-15 18:38:00

标签: security amazon-web-services amazon-ec2

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

3 个答案:

答案 0 :(得分:39)

您是否尝试连接到node1的公共或私人地址?来自documentation

  

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

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

有些事情需要注意:

  • 在EC2 Classic中,私有IP地址可以在EC2实例的停止/启动时更改。如果您使用的是EC2 classic,您可能需要查看this discussion on Elastic DNS Names以获得更静态的寻址解决方案。
  • 如果您在VPC中设置环境,private IP addresses are static。您还可以更改正在运行的实例的安全组成员身份。

答案 1 :(得分:16)

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

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

e.g。如果您的实例具有公共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.com将解析为203.0.113.185,如果在内部查询,则10.1.234.12将解析为{{1}}。这将使您的安全组能够按预期工作。

这样您就可以使用弹性IP,因为您只需使用弹性IP的公共DNS条目。另外,having the DNS resolve to the internal IP means that you are not incurring bandwidth charges for your data between instances

  

通过其公共NAT IP访问其他实例的实例   地址是根据区域或互联网数据传输收取的   关于实例是否在同一地区。

答案 2 :(得分:-1)

公共DNS对我不起作用。 我所做的是使用另一个实例的安全组创建自定义入站规则。