Amazon EC2 实例 IP 寻址 - Amazon Elastic Compute Cloud

Amazon EC2 实例 IP 寻址

Amazon EC2 和 Amazon VPC 支持 IPv4 和 IPv6 寻址协议。默认情况下,Amazon VPC 使用 IPv4 寻址协议;您无法禁用此行为。创建 VPC 时,您必须指定 IPv4 CIDR 块 (一系列私有 IPv4 地址)。您可以选择将 IPv6 CIDR 块分配给您的 VPC,并将来自该块的 IPv6 地址分配给您子网中的实例。

私有 IPv4 地址

私有 IPv4 地址是指无法通过 Internet 访问的 IP 地址。您可以使用私有 IPv4 地址在同一 VPC 中实现实例之间的通信。有关私有 IPv4 地址标准和规范的更多信息,请参阅 RFC 1918。我们会使用 DHCP 将私有 IPv4 地址分配到实例。

注意

您可以创建一个具有公共可路由的 CIDR 块 (不在 RFC 1918 中指定的私有 IPv4 地址范围内) 的 VPC。但是,出于本文档的写作目的,我们的私有 IPv4 地址(或“私有 IP 地址”)指的是位于 VPC 的 IPv4 CIDR 范围内的 IP 地址。

VPC 子网可以是以下类型之一:

  • 仅 IPv4 子网:您只能在这些子网中创建已分配 IPv4 地址的资源。

  • 仅 IPv6 子网:您只能在这些子网中创建已分配 IPv6 地址的资源。

  • IPv4 和 IPv6 子网:您可以在这些子网中创建已分配 IPv4 或 IPv6 地址的资源。

在仅 IPv4 或双协议堆栈(IPv4 和 IPv6)子网中启动 EC2 实例时,该实例将在子网的 IPv4 地址范围内收到一个主要私有 IP 地址。有关更多信息,请参阅《Amazon VPC 用户指南》中的 IP 寻址。如果您在启动实例时未指定主要私有 IP 地址,我们会在子网的 IPv4 范围内为您选择一个可用的 IP 地址。每个实例都具有分配了主要私有 IPv4 地址的默认网络接口 (eth0)。您还可以指定其他私有 IPv4 地址,即辅助私有 IPv4 地址。与主要私有 IP 地址不同的是,辅助私有 IP 地址可以从一个实例重新分配到另一个实例。有关更多信息,请参阅EC2 实例的多个 IP 地址

私有 IPv4 地址(无论是主地址还是辅助地址)会在实例停止和重新启动或休眠和启动时保持与网络接口的关联,并在实例终止时释放。

公有 IPv4 地址

公有 IP 地址是指可通过 Internet 访问的 IPv4 地址。您可以使用公用 地址在您的实例和 Internet 之间进行通信。

在默认 VPC 中启动实例时,默认情况下,我们会为实例分配公有 IP 地址。当您在非默认 VPC 中启动实例时,子网的一个属性会确定在该子网中启动的实例是否从公有 IPv4 地址池接收公有 IP 地址。默认情况下,我们不会将公有 IP 地址分配到非默认子网中启动的实例。

您可以按如下所示控制实例是否接收公有 IP 地址:

公有 IP 地址将从 Amazon 的公有 IPv4 地址池分配给实例,不与您的 AWS 账户关联。在取消公有 IP 地址与实例的关联后,该地址即会释放回公有 IPv4 地址池中,并且您无法重新使用该地址。

在某些情况下,我们会从您的实例释放公有 IP 地址,或为其分配新地址:

  • 当您的实例已停止、休眠或终止后,我们会释放它的公有 IP 地址。已停止或休眠的实例在启动时会收到一个新的公有 IP 地址。

  • 当您将弹性 IP 地址与您实例的公有 IP 地址关联时,我们会释放该公有 IP 地址。当您从实例取消与弹性 IP 地址的关联时,实例会收到新的公有 IP 地址。

  • 如果 VPC 中的实例的公有 IP 地址已释放,则在多个网络接口了附加到实例的情况下,该实例不会接收新地址。

  • 如果您实例的公有 IP 地址在其辅助私有 IP 地址与弹性 IP 地址关联时被释放,则该实例不会接收新的公有 IP 地址。

如果您需要可根据需要关联到实例并从实例进行关联的永久公有 IP 地址,可改为使用弹性 IP 地址。

如果您使用动态 DNS 来将现有 DNS 名称映射到新实例的公有 IP 地址,可能需要 24 小时,以便 IP 地址可以传递到整个 Internet。其结果是,新的实例可能无法接收流量,而已终止实例继续接收请求。要解决此问题,请使用弹性 IP 地址。您可以分配自己的弹性 IP 地址,并将其与您的实例相关联。有关更多信息,请参阅 弹性 IP 地址

如果使用的是 Amazon VPC IP 地址管理器(IPAM),则可以从 AWS 中获取连续的公有 IPv4 地址块,再用其将弹性 IP 地址分配给 AWS 资源。使用连续的 IPv4 地址块可以显著减少安全访问控制列表的管理开销,简化在 AWS 上扩展的企业的 IP 地址分配和跟踪工作。有关更多信息,请参阅《Amazon VPC IPAM User Guide》中的 Allocate sequential Elastic IP addresses from an IPAM pool

注意
  • AWS 将对所有公有 IPv4 地址收费,包括与运行的实例相关联的公有 IPv4 地址和弹性 IP 地址。有关更多信息,请参阅 Amazon VPC 定价页面中的公有 IPv4 地址定价选项卡。

  • 通过公有 NAT IP 地址访问其他实例的实例需要支付区域或 Internet 数据传输费用,具体取决于这些实例是否在同一区域内。

公有 IPv4 地址优化

AWS 将对所有公有 IPv4 地址收费,包括与运行的实例相关联的公有 IPv4 地址和弹性 IP 地址。有关更多信息,请参阅 Amazon VPC 定价页面中的公有 IPv4 地址定价选项卡。

以下列表包含相应的措施,您可以采取这些措施来优化所使用的公有 IPv4 地址数量:

  • 使用弹性负载均衡器对 EC2 实例的流量进行负载均衡,以及在分配给这些实例的主 ENI 上禁用自动分配公有 IP。负载均衡器使用单个公有 IPv4 地址,因此可减少公有 IPv4 地址数量。您可能还需要整合现有的负载均衡器,以进一步减少公有 IPv4 地址数量。

  • 如果使用 NAT 网关的唯一原因是将 SSH 连接到私有子网中的 EC2 实例以进行维护或应对紧急情况,请考虑改用 EC2 Instance Connect Endpoint。使用 EC2 Instance Connect Endpoint,您可从互联网连接到实例,而无需实例具有公有 IPv4 地址。

  • 如果您的 EC2 实例位于公有子网中并已分配公有 IP 地址,请考虑将这些实例移至私有子网,移除公有 IP 地址,然后使用公有 NAT 网关来允许访问您的 EC2 实例和从实例中访问。使用 NAT 网关需要考虑成本。使用此计算方法来确定 NAT 网关是否具有成本效益。您可以通过创建 AWS 账单成本和使用情况报告来获取此计算所需的Number of public IPv4 addresses

    NAT gateway per hour + NAT gateway public IPs + NAT gateway transfer / Existing public IP cost

    其中:

    • NAT gateway per hour = $0.045 * 730 hours in a month * Number of Availability Zones the NAT gateways are in

    • NAT gateway public IPs = $0.005 * 730 hours in a month * Number of IPs associated with your NAT gateways

    • NAT gateway transfer = $0.045 * Number of GBs that will go through the NAT gateway in a month

    • Existing public IP cost = $0.005 * 730 hours in a month * Number of public IPv4 addresses

    如果总计值小于 1,则 NAT 网关比公有 IPv4 地址便宜。

  • 使用 AWS PrivateLink 私密连接至 AWS 服务或其他 AWS 账户托管服务,而不是使用公有 IPv4 地址和互联网网关。

  • 自带 IP 地址范围(BYOIP)至 AWS 并对公有 IPv4 地址使用该范围,而不是使用 Amazon 拥有的公有 IPv4 地址。

  • 关闭公有 IPv4 地址自动分配到在子网中启动的实例。创建子网时,VPC 通常默认禁用此选项,但您应检查现有子网以确保其处于禁用状态。

  • 如果您的 EC2 实例不需要公有 IPv4 地址,请检查连接到您实例的网络接口是否已禁用自动分配公有 IP

  • 为私有子网中的 EC2 实例在 AWS Global Accelerator 中配置加速器端点,以使互联网流量无需公有 IP 地址即可直接流向 VPC 中的端点。您也可以将自己的地址带入 AWS Global Accelerator,并使用自己的 IPv4 地址作为加速器的静态 IP 地址。

IPv6 地址

IPv6 地址具有全局唯一性,可以配置为保持私有或通过互联网进行访问。AWS 中提供公有和私有 IPv6 寻址:

  • 私有 IPv6:AWS 认为私有 IPv6 地址是那些未公开发布且不能从 AWS 公开发布在互联网上的地址。

  • 公共 IPv6:AWS 认为公共 IPv6 地址是 AWS 在互联网上已公开发布的地址。

有关公有和私有 IPv6 地址的更多信息,请参阅《Amazon VPC 用户指南》中的 IPv6 地址

如果您的 VPC 和子网关联了 IPv6 CIDR 块,并且满足以下条件之一,则您的 EC2 实例会收到 IPv6 地址:

  • 您的子网配置为在启动期间向实例自动分配 IPv6 地址。有关更多信息,请参阅修改子网的 IP 寻址属性

  • 您在启动期间为实例分配了 IPv6 地址。

  • 您在启动后为实例的主网络接口分配了 IPv6 地址。

  • 您向同一子网中的某个网络接口分配 IPv6 地址,并在启动后将此网络接口附加到您的实例。

当实例在启动期间收到 IPv6 地址时,此地址将与实例的主网络接口 (eth0) 关联。您可以通过以下方式管理实例的主网络接口(eth0)的 IPv6 地址:

IPv6 地址会在您停止和启动或休眠和启动实例时保留下来,并在您终止实例时释放出来。您无法重新分配已分配给某个网络接口的 IPv6 地址;您必须先取消分配此 IPv6 地址。

您可以通过控制子网的路由或通过使用安全组和网络 ACL 规则来控制能否通过实例的 IPv6 地址对其进行访问。有关更多信息,请参阅《Amazon VPC 用户指南》中的互联网络流量隐私

有关预留 IPv6 地址范围的更多信息,请参阅 IANA IPv6 特殊用途地址注册表RFC4291

EC2 实例主机名

当您创建 EC2 实例时,AWS 为该实例创建主机名。有关主机名类型及其 AWS 预置方式的更多信息,请参阅 Amazon EC2 实例主机名类型。Amazon 提供了 DNS 服务器,可将 Amazon 提供的主机名解析为 IPv4 和 IPv6 地址。Amazon DNS 服务器位于 VPC 网络范围起始地址 + 2 的位置。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 的 DNS 属性

众所周知,链路本地地址是不可路由的 IP 地址。Amazon EC2 使用来自链路本地地址空间的地址来提供只能从 EC2 实例访问的服务。这些服务不在实例上运行,而是在底层主机上运行。当您通过链路本地地址访问这些服务时,您将与 Xen 虚拟机管理程序或 Nitro 控制器进行通信。

链路本地地址范围
  • IPv4 – 169.254.0.0/16(169.254.0.0 到 169.254.255.255)

  • IPv6 – fe80::/10

您通过链路本地地址访问的服务