Amazon web services 为什么VPC中需要专用子网?

Amazon web services 为什么VPC中需要专用子网?,amazon-web-services,amazon-vpc,vpc,Amazon Web Services,Amazon Vpc,Vpc,在AWS VPC配置中有两种方法。但让我们看看这两个: 场景1:1公共子网 场景2:1个公用子网和1个专用子网 由于在公共子网中启动的任何实例都没有EIP(除非已分配),因此它已经无法从Internet寻址。然后: 为什么需要专用子网 私有子网和公共子网之间到底有什么区别 更新:在2015年12月底,AWS推出了一项新功能,即一个。此可选服务为私有子网中的VPC实例访问Internet提供了一种替代机制,在此之前,通用解决方案是VPC内公共子网上的EC2实例,用作“NAT实例”,为其他子网

在AWS VPC配置中有两种方法。但让我们看看这两个:

  • 场景1:1公共子网
  • 场景2:1个公用子网和1个专用子网
由于在公共子网中启动的任何实例都没有EIP(除非已分配),因此它已经无法从Internet寻址。然后:

  • 为什么需要专用子网
  • 私有子网和公共子网之间到底有什么区别

更新:在2015年12月底,AWS推出了一项新功能,即一个。此可选服务为私有子网中的VPC实例访问Internet提供了一种替代机制,在此之前,通用解决方案是VPC内公共子网上的EC2实例,用作“NAT实例”,为其他子网中的实例提供网络地址转换(从技术上讲,是端口地址转换),私有子网,允许这些机器使用NAT实例的公共IP地址进行出站Internet访问

新的托管NAT服务不会从根本上改变以下信息的适用性,但在下面的内容中没有说明此选项。NAT实例仍然可以如上所述使用,或者可以提供托管NAT网关服务。这个答案的扩展版本将集成更多关于NAT网关的信息,以及它与NAT实例的比较,因为它们都与VPC中的私有/公共子网范例相关

请注意,Internet网关和NAT网关是两种不同的功能。所有接入互联网的VPC配置都将有一个互联网网关虚拟对象


要了解亚马逊专有网络中“私有”和“公共”子网之间的区别,需要了解IP路由和网络地址转换(NAT)的一般工作方式,以及它们在专有网络中的具体实现方式

VPC中公共子网和私有子网之间的核心区别由VPC路由表中该子网的默认路由定义

此配置反过来决定在该特定子网上的实例上使用或不使用公共IP地址的有效性

每个子网正好有一个默认路由,它只能是以下两种情况之一:

  • 专有网络的“互联网网关”对象,如果是“公共”子网,或
  • NAT设备——即NAT网关或EC2实例,在“专用”子网的情况下,执行“NAT实例”角色
Internet Gateway不对没有公共IP地址的实例进行任何网络地址转换,因此没有公共IP地址的实例无法向外连接到Internet--要进行下载软件更新之类的操作,或者访问其他AWS资源,如S31和SQS——如果其VPC子网上的默认路由是Internet网关对象。因此,如果您是“公共”子网上的一个实例,那么您需要一个公共IP地址来完成服务器通常需要完成的大量工作

对于只有一个私有IP地址的实例,有另一种出站访问Internet的方式。这就是网络地址转换²和NAT实例的作用

专用子网上的机器可以访问Internet,因为专用子网上的默认路由不是VPC“Internet网关”对象——它是配置为NAT实例的EC2实例

NAT实例是具有公共IP和特定配置的公共子网上的实例。有些AMI是预先构建的,您也可以构建自己的AMI

当专用寻址机器向外发送流量时,流量通过VPC发送到NAT实例,NAT实例用自己的公共IP地址替换数据包上的源IP地址(专用机器的专用IP地址),将流量发送到Internet,接受响应数据包,并将它们转发回发起机器的专用地址。(它还可以重写源端口,并且在任何情况下,它都会记住映射,以便知道哪个内部计算机应该接收响应数据包)。NAT实例不允许任何“意外”的入站流量到达专用实例,除非已专门对此进行了配置

因此,当从专用子网访问外部Internet资源时,通信量会穿过NAT实例,并且在目标端看来似乎来自NAT实例的公共IP地址。。。因此,响应流量返回到NAT实例。分配给NAT实例的安全组和分配给私有实例的安全组都不需要配置为“允许”此响应流量,因为安全组是有状态的。他们意识到响应流量与内部发起的会话相关,因此它是自动允许的。当然,除非安全组配置为允许,否则会拒绝意外流量

与传统的IP路由不同,默认网关位于同一子网中,它在VPC中的工作方式不同:任何给定私有子网的NAT实例始终位于不同的子网中,而另一个子网始终是公共子网,因为NAT实例需要具有公共外部IP,其默认网关必须是VPC“Internet网关”对象

同样地。。。不能在专用子网上部署具有公共IP的实例。它不起作用,因为私有子网上的默认路由(根据定义)是NAT实例(对流量执行NAT),而不是Internet网关对象(不执行NAT)。来自Internet的入站流量将撞击实例的公共IP,但回复将尝试通过NAT实例向外路由,这将丢弃流量(因为它将由对连接的回复组成,但它不知道)