究竟是什么导致私有子网中的 EC2 实例无法从互联网访问?

问题描述 投票:0回答:1

我到处都读到(包括官方文档),无法从互联网访问私有子网中的 EC2 实例,即使它具有公共 IP。

假设我有一个

10.0.0.0/16
VPC,其中包含
10.0.0.0/20
公有子网和
10.0.0.128/20
私有子网,其中包含具有公有 IP 的 EC2 实例。

据我所知,在此配置中,发送到 EC2 实例的数据包将:

  • 由 VPC 的互联网网关接收,该网关将执行 NAT 并通过其专用网络接口发出该数据包(我猜
    10.0.0.1
  • 由于规则规定,目标为
    10.0.0.0/16
    的数据包应转发到本地网络
  • ,因此该数据包可以路由到 EC2 实例。

但是,EC2 实例无法回复该数据包(例如,为了建立 TCP 连接),因为它没有到 Internet 网关或 NAT 实例的路由。

因此,根据我的说法,“即使具有公共 IP,也无法从互联网访问私有子网中的 EC2 实例”这一说法并不正确,它实际上是可访问的(如果网络 ACL 和安全组允许)流量),但它无法响应任何请求

我的推理正确吗?

amazon-web-services amazon-vpc private-subnet
1个回答
0
投票

在评论中,建议我测试并回答我自己的问题:

  • 在私有子网中创建具有公共 IP 的 EC2 实例
  • 修改其安全组以允许端口 53 (UDP) 上的传入流量
  • 已验证 VPC NACL 允许所有流量
  • 连接到实例并运行
    sudo nc -ul 53
  • 在端口 53 上将包含一些文本的 UDP 数据包从我自己的计算机发送到公共 IP

该文本出现在 EC2 实例上,这意味着正如我所想,“无法从互联网访问私有子网中的 EC2 实例”这句话是部分正确。如果我们想将数据发送到此配置中的 EC2 实例:

  • 即发即忘UDP这样的协议仍然有效
  • 基于连接的协议(如TCP)将无法工作,因为实例无法响应
© www.soinside.com 2019 - 2024. All rights reserved.