创建新的 VPC 并创建新的子网后,在子网设置中有一个“启用自动分配公共 IPv4 地址”选项。
那么如果我在这个子网中创建一个实例,如果未启用,该实例是否没有任何公共IP? 该选项的实际含义是什么?
当您在子网中启动实例时,它将收到一个私有 IP 地址(例如 10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16 范围内的地址)。或者,您也可以将公共 IP 地址附加到实例的网络接口。
公网IP可以通过两种方式获取:
如果您启用自动分配公共 IPv4 地址,您的实例将在启动时自动接收公共 IP 地址。此 IP 地址不算作弹性 IP,这意味着它不会减少您所在区域的可用弹性 IP 地址的数量。此外,如果您停止、休眠或终止实例,它将自动释放(在其他一些情况下,请参阅docs)。由于此 IP 并未真正作为持久 IP 地址分配给您,因此依赖此 IP 地址进行任何生产用途(防火墙白名单、DNS 记录等)并不是最好的主意。
亚马逊以非常烦人的方式过度使用“公共”和“私人”这两个词。 AWS 中的“公共”和“私有”子网实际上都使用 RFC 1918“私有”地址(尽管 AWS 使用子网名称)。
区别在于“私有”AWS 子网具有到 NAT 网关 (NATGW) 的默认路由,并且所有实例都可以通过共享 NAT 池访问 Internet。
另一方面,“公共”子网将使用“固定”(只要机器正在运行)“公共”(这次,AWS 使用 RFC 1918 意义上的“公共”)AWS IP 地址并将其配置为 1:1 NAT,以便可以从 Internet 访问该计算机。为了使后者工作,子网需要一个到 Internet 网关 (IGW) 而不是 NATGW 的默认路由,并且您可能需要“启用自动分配公共 IPv4 地址”只是为了让事情变得更容易。
你为什么要放弃它?您可以选择在创建实例时勾选一个框来分配外部 IP。或者您可以分配一个EIP。或者您可能想使用负载均衡器并将外部“公共”IP 分配给该负载均衡器而不是您的实例。
因此,“启用自动分配公共 IPv4 地址”是您最有可能希望为 AWS“公共”子网启用的选项。它在“私有”子网中没有任何用途。