EC2 实例无法连接到公共 IP

EC2 实例无法连接到公共 IP

我绞尽脑汁想弄清楚我的 EC2 VPC 连接出了什么问题。我有两个 EC2 实例位于同一个公共子网中,并且有一个互联网网关。这两个实例都有一个公共(弹性)IP 地址。实例 A 可以在其私有 IP 地址上 ping 通 B,但无法 ping 通其公共 IP 地址。
我可以从家里 ping 通 B。

子网路由表如下:

目的地 目标
172.16.0.0/20 当地的
0.0.0.0/0 igw-xxxxx

实例 A 运行的是 Windows,并且它的路由表route print看起来正确:

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0       172.16.0.1       172.16.0.9     15

实例 B 正在运行 Linux,并且我已禁用其防火墙。

B 安全组有一条入站规则,允许来自 A 安全组的所有流量。

如果我向 B 安全组添加一条入站规则,允许来自任何地方的所有流量,那么它就可以正常工作。但我想只允许来自 A 安全组的流量。

答案1

您需要在 B 的安全组 (ICMP) 上允许 A 的弹性 IP 地址,因为当您使用其公共 IP 地址 ping B 时,流量不会被视为源自私有 IP 地址,而是来自公共 IP 地址。

事情的经过如下:

  • 您输入:(ping B公共 IP/EIP),
  • 您的 VPC 网络尝试将流量路由到公有 IP 地址,
  • 匹配的路线是0.0.0.0/0 (igw-xxxxx)
  • 流量从 VPC/AWS 路由出去,源 IP 将发生变化 (NAT)。因此数据包源 IP 将为EIPA,目标 IP 将为EIPB,
  • 数据包被路由回 AWS

请查看AWS文档:

当您将安全组指定为规则的来源时,系统将允许来自与源安全组关联的网络接口的流量,这些接口具有指定的协议和端口。系统将根据与源安全组关联的网络接口的私有 IP 地址(而非公有 IP 或弹性 IP 地址)来允许传入流量。

相关内容