为什么我不能通过公共IP ping一个aws实例,即使我可以ping私有IP就好了?

时间:2017-01-05 13:50:23

标签: amazon-web-services amazon-ec2

我有两个实例(实例A和实例B)都是同一安全组的一部分(比如sg-1)。

安全组具有以下入站规则集:

  • 类型:所有流量
  • 协议:全部
  • 港口范围:全部
  • 资料来源:sg-1

我可以使用实例B的私有IP从实例A ping实例B,但是当我使用实例B的公共地址时,我没有得到任何响应。

我缺少什么?

编辑:
如果我将上述安全配置中的源更改为“Anywhere”,请ping到公共IP工作。

1 个答案:

答案 0 :(得分:4)

只有在ping实例B private地址时没有得到回复时,您才会感到惊讶。

您的子网路由表会将公共地址路由到您的VPC之外。当它退出VPC并且流量重新进入时,源地址将是公共IP,而不是私有IP 。路由表首先出现在安全组之前。当您将流量发送到另一台计算机时:

  • DNS名称已解析为IP
  • 在您的情况下,您指定了IP,因此不会发生DNS解析
  • 如果地址属于某个路由表规则,则会相应地路由
  • 当您指定专用IP时,它很可能在内部路由,安全组允许流量,您可以ping通
  • 指定公共IP时,很可能会将其路由出去。在不查看子网路由表的情况下,很难猜测流量的来源。向我们展示路由表,我可以告诉你究竟发生了什么。 在这种情况下,源地址将是公共IP,而不是私有IP
  • 使用traceroutelft跟踪网络跃点