AWS VPC - 添加到连接到互联网网关的 public 路由 table 的私有子网

AWS VPC - Private subnet added to the public route table attached to internet gateway

希望你们一切都好。

AWS 允许我们将私有子网(在客户 VPC 中创建)附加到路由 table,该路由通过互联网网关路由到互联网。它对在私有子网中启动的实例有什么影响吗?或者它和私有子网没有链接到路由 table 有路由到 internet

一样好

问候 阿杰

如果子网有路由 to/from 互联网,则子网不是私有的。在私有子网中启动的实例无法访问 Internet,也无法从 Internet 访问。

例如,如果您有一个数据库实例并且您不希望除实例之外的任何人访问该实例,您可以在私有子网中启动该实例。

另外,如果您想让私有子网中的实例访问互联网,您需要设置一个 Nat 网关(或一个 Nat 实例)

希望对您有所帮助

首先,我们需要了解 public 子网和私有子网的区别。


Public 子网表示该子网附加了一个 Internet Gateway。 私有子网意味着该子网附加了一个 NAT Gateway

并且互联网网关可以有入站和出站,但 NAT 只能有出站到互联网。



并且 NAT 将构建在 public 子网中,但附加到私有子网。


您可以同时有很多public/private个子网并为它们附加NAT或IGW,但IGW只能在每个VPC中有一个。

在某些用例中,我们不会为子网附加任何类型的 NAT 和 IGW。那是因为它可能是一个数据库子网并且不希望它与 Internet 通信。 通常,我们会为我们的应用程序使用附加了 NAT 的子网,例如 EC2 或 ECS,内部负载均衡器。 另一方面,我们将使用附加了 IGW 的子网用于面向 Internet 的负载均衡器、Nginx、Apache。

AWS VPC 设计: https://aws.amazon.com/tw/answers/networking/aws-single-vpc-design/

我认为这里隐藏的魔法是私有子网中的实例需要一个 public IP 才能与外部通信,我们从来没有认为这是我们生活中的问题。当我们的电脑连接到路由器时,它可以毫无问题地访问互联网,为什么它运行如此顺利?这一切都是因为路由器为我们处理了一切,包括为我们分配一个私有IP,为我们进行递归DNS查询,最重要的是,将私有IP转换为路由器的public IP,以便我们的计算机可以与双向外。

让我们回到这个 AWS VPC 场景,您将带有默认路由的路由 table 附加到您的私有子网的 Internet 网关,这使它看起来像一个 public 子网。但是,这些实例仍然没有 public IP,而且与我们的路由器不同,AWS VPC 的互联网网关不执行 NAT 工作!那么没有public IP、没有NAT的实例怎么上网呢?不可能的。