【问题标题】:Can an instance with public IP in private subnet receive internet traffic?私有子网中具有公共 IP 的实例可以接收互联网流量吗?
【发布时间】:2021-11-02 16:30:12
【问题描述】:

我的问题的简短版本

  1. 如果一个实例有一个公共 ip 但它位于私有子网中,它可以接收入站流量吗? (假设没有防火墙阻止它)
  2. 当路由表中没有 Internet 网关的路由时,这是否意味着 (1) 它只是丢弃到 Internet 的出站流量或 (2) 路由表和 Internet 之间没有“连接”网关根本,因此,它也不会接收来自互联网的入站流量?如果是(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 中的任何路由表都可以接收转发给它的任何流量。考虑到数据包中包含的destination,它将流量发送到名为target 的下一跳。如果它没有给定的destination,它只会丢弃流量。
  2. 第二个测试 ping 可以根据blue route_table_2 中的“20.0.0.0/16=>local”路由路由到blue ec2_2

抱歉,图片太小!包含的细节太多,请随时在新标签中打开它!


发布此问题后,我发现 this post 很有帮助。那篇文章解释了 NAT 和私有子网如何在 vpc 中工作,以及为什么在私有子网中具有公共 ip 的实例可能接收互联网流量但发送有用的出站流量.

【问题讨论】:

    标签: amazon-web-services networking routes amazon-vpc


    【解决方案1】:
    1. 如果实例有公有 IP 但位于私有子网中,它能否接收入站流量?

    不是不能。如果您有 NAT,您只能从它启动出站互联网流量。 “私有”意味着无论有无公共 IP,都无法从 Internet 访问该实例。

    1. 当路由表中没有 Internet 网关的路由时,这是否意味着 (1) 它只是丢弃到 Internet 的出站流量或 (2) 路由表和 Internet 之间没有“连接”网关根本,因此,它也不会接收来自互联网的入站流量?如果是(2),您能否详细说明这种“联系”是如何建立的?

    如果没有到 IGW 的路由表,则您的 VPC 中没有入站或出站互联网流量。遗憾的是,我不明白您对“连接”的要求。

    【讨论】:

    • @moon 顺便说一句,您的推理“ping 失败是蓝色私有子网中的出站流量,而不是入站流量”是正确的。如果您将私有子网 (route_table_2) 中的 VPC_blue 中的路由添加回 TGW 附件,则 ping 将起作用。
    • 嗨@Marcin,谢谢!如果没有首先建立connection 之类的东西,具体是什么阻止入站流量到达或通过private 路由表?这个connection 想法只是我试图了解入站流量如何无法到达/通过私有路由表的一种假设。
    • 基本上,我不确定互联网数据包如何从互联网网关流向路由表。互联网网关是否知道它自己连接到public route table连接到private route table?如果它确实知道,它如何知道?否则,如果互联网网关不知道自己连接到哪些路由表,那么它应该将数据包发送到所有路由表,那么是什么阻止数据包到达并通过私有表?跨度>
    • @moon 我不知道 AWS 如何实现这一点的确切细节。但这可能属于软件定义网络 (SDN) 类别。您也许可以查找 SDN 的工作原理,它可能会对 AWS 正在做的事情有所了解。
    • @moon 如果我的回答有帮助,我们将不胜感激。
    【解决方案2】:

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

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

    【讨论】:

    • 谢谢卢卡斯!这是否意味着从green ec2_1blue ec2_2 的ping 失败是因为来自blue ec2_2 的数据包不会出去,而不是因为来自green ec2_1 的数据包不会进入?
    • 我认为是的。类似地,您可以将包发送到其他实例,但实例不会回复。
    猜你喜欢
    • 2015-05-13
    • 2021-07-26
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2021-10-29
    • 2016-10-02
    • 1970-01-01
    相关资源
    最近更新 更多