私有子网中具有 public IP 的实例可以接收互联网流量吗?

Can an instance with public IP in private subnet receive internet traffic?

我的问题的简短版本

  1. 如果一个实例有一个 public ip 但它位于私有子网中,它可以接收入站流量吗? (假设没有防火墙阻止它)
  2. 当路由 table 中没有互联网网关的路由时,这是否意味着 (1) 它只是丢弃到互联网的出站流量或 (2) 之间没有“连接”路由 table 和互联网网关,因此,它也不接收来自互联网的入站流量?如果是(2),能否详细说明一下这个“联系”是如何建立的?

我的问题的较长版本

我正在观看 Whizlab 上的一门课程,其中讲师构建了下图中的网络结构,以演示中转网关如何为私有子网工作。我对什么阻止 green ec2_1 访问 blue ec2_2.

感到困惑

他通过以下方式测试了这种不可访问性:

  1. ssh 进入 green ec_1
  2. 然后,ping blue ec2_1 private ip,成功
  3. 然后,ping blue ec2_2 private ip,没有响应

然后他说,ping blue ec2_2 private ip 将无法正常工作,因为“我们没有从绿色实例到私有子网中的蓝色实例的路由”.

不过,我认为原因应该是“我们没有从私有子网中的蓝色实例到绿色实例的路由”。基本上,我认为 ping 失败的是蓝色私有子网中的出站流量,而不是入站.

更多我目前的理解:

  1. vpc 中的任何路由 table 都可以接收转发给它的任何流量。鉴于数据包中包含 destination,它将流量发送到名为 target 的下一跳。如果它没有给定的 destination,它只会丢弃流量。
  2. 第二个测试 ping 可以根据 blue route_table_2
  3. 中的“20.0.0.0/16=>local”路由路由到 blue ec2_2

(抱歉图片太小了!细节太多无法包含,欢迎在新标签页中打开!)


在 post 回答这个问题后,我发现 this post 很有帮助。 post 解释了 NAT 和私有子网在 vpc 中的工作方式,以及为什么 可能 对于在私有子网内具有 public ip 的实例接收互联网流量但 发出有用的出站流量。

私有子网中的实例可以有互联网流量。取决于您的 nat 网关、ACL 和安全组。

如果没有nat网关,那么我认为尝试访问互联网时会超时。

  1. If an instance has a public ip but it is located in a private subnet, can it receive inbound traffic?

不可以。如果您有 NAT,则只能从中启动出站互联网流量。 “私人”意味着该实例无法从互联网访问,有或没有 public ip.

  1. When there isn’t route for internet gateway in a route table, does this mean (1) it just drops outbound traffic to the internet or (2) there isn't a “connection” between the route table and the internet gateway at all, therefore, it also doesn’t receive inbound traffic from the internet? If (2) is the case, can you elaborate on how this “connection” is established?

如果没有通往 IGW 的路由 table,则您的 VPC 中没有入站或出站互联网流量。遗憾的是,我不明白你问的关于“连接”的问题。