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 地址可以从一个实例重新分配到另一个实例。有关更多信息,请参阅多个 IP 地址

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

公有 IPv4 地址

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

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

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

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

您不能从实例手动关联或取消关联公有 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 地址

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

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

弹性 IP 地址 (IPv4)

弹性 IP 地址是指可分配给您的账户的公有 IPv4 地址。您可以根据需要将其与实例关联或取消其与实例的关联。它会分配给您的账户,直到您选择释放它。有关弹性 IP 地址及其使用方法的更多信息,请参阅弹性 IP 地址

我们不支持对 IPv6 使用弹性 IP 地址。

IPv6 地址

您可以选择将 IPv6 CIDR 块与 VPC 关联,并将 IPv6 CIDR 块与子网关联。我们将自动从 Amazon 的 IPv6 地址池中为您的 VPC 分配 IPv6 CIDR 块,因此您无法自行选择范围。有关更多信息,请参阅 Amazon VPC 用户指南 中的以下主题:

IPv6 地址具有全局唯一性,可以配置为保持私有或通过互联网进行访问。如果您的 VPC 和子网关联了 IPv6 CIDR 块,并且满足以下条件之一,则您的实例会收到 IPv6 地址:

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

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

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

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

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

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

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

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

使用实例的 IPv4 地址

您可以在启动实例时为其分配公有 IPv4 地址。您可以在控制台中通过 Instances(实例)或 Network Interfaces(网络接口)页面查看实例的 IPv4 地址。

查看 IPv4 地址

您可以使用 Amazon EC2 控制台查看实例的公有和私有 IPv4 地址。您还可以通过使用实例元数据,从实例内确定实例的公有 IPv4 地址和私有 IPv4 地址。有关更多信息,请参阅实例元数据和用户数据

公有 IPv4 地址在控制台中显示为网络接口的属性,但它通过 NAT 映射到主要私有 IPv4 地址。因此,如果您检查实例网络接口的属性 (例如,通过 ifconfig [Linux] 或 ipconfig [Windows]),则不会显示公有 IPv4 地址。要从实例确定您的实例的公有 IPv4 地址,请使用实例元数据。

使用控制台查看实例的 IPv4 地址
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Instances,然后选择您的实例。

  3. 联网选项卡上提供以下信息:

    • 公有 IPv4 地址 - 公有 IPv4 地址。如果您将弹性 IP 地址与实例或主网络接口相关联,则这是弹性 IP 地址。

    • 私有 IPv4 地址 - 私有 IPv4 地址。

    • 辅助私有 IPv4 地址 - 任何辅助私有 IPv4 地址。

  4. 要查看更多详细信息,请在联网选项卡上,选择主网络接口的 ID,以打开网络接口页面,然后选择网络接口的 ID 以打开其详细信息页面。

使用命令行查看实例的 IPv4 地址

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

使用实例元数据确定实例的 IPv4 地址
  1. 连接到您的实例。有关更多信息,请参阅连接到您的 Linux 实例

  2. 使用以下命令访问私有 IP 地址:

    IMDSv2
    [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/local-ipv4
    IMDSv1
    [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-ipv4
  3. 使用以下命令访问公有 IP 地址:

    IMDSv2
    [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/public-ipv4
    IMDSv1
    [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-ipv4

    如果弹性 IP 地址与实例相关联,则返回的值是弹性 IP 地址。

在实例启动期间分配公有 IPv4 地址

所有子网都有一个属性可确定在子网中启动的实例是否分配了公有 IP 地址。默认情况下,非默认子网的此属性设置为 false,默认子网的此属性设置为 true。启动实例时,您也可以通过公有 IPv4 寻址功能来控制是否为实例分配公有 IPv4 地址;您可以覆盖子网 IP 寻址属性的默认行为。公有 IPv4 地址从 Amazon 的公有 IPv4 地址池进行分配,并分配给设备索引为 eth0 的网络接口。此功能取决于启动实例时的特定条件。

注意事项
  • 启动后,即无法手动将该公有 IP 地址与您的实例取消关联。在某些情况下,它会自动释放,之后无法重新使用。有关更多信息,请参阅公有 IPv4 地址。如果需要可以随意关联或取消关联的永久公有 IP 地址,请在启动后向实例分配弹性 IP 地址。有关更多信息,请参阅弹性 IP 地址

  • 如果您指定多个网络接口,则不能自动分配公有 IP 地址。此外,如果您将某个现有网络接口指定为 eth0,则无法使用自动分配公有 IP 功能覆盖子网设置。

  • 公有 IP 地址分配功能只在启动时可用。然而,无论您是否在启动时为实例分配公有 IP 地址,您都可以在启动后将弹性 IP 地址与实例相关联。有关更多信息,请参阅弹性 IP 地址。您还可以修改子网的公有 IPv4 寻址行为。有关更多信息,请参阅修改子网的公有 IPv4 寻址属性

在实例启动期间使用控制台分配公有 IPv4 地址

请按照步骤启动实例,并在配置网络设置时选择 Auto-assign Public IP(自动分配公有 IP)。

使用命令行启用或禁用公有 IP 寻址功能

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

  • --associate-public-ip-address--no-associate-public-ip-address 选项与 run-instances 命令 (AWS CLI) 结合使用

  • -AssociatePublicIp 参数与 New-EC2Instance 命令 (AWS Tools for Windows PowerShell) 结合使用

使用实例的 IPv6 地址

您可以查看分配给实例的 IPv6 地址,为实例分配公有 IPv6 地址,或取消分配给实例的 IPv6 地址。您可以在控制台中通过实例网络接口页面查看这些地址。

查看 IPv6 地址

您可以使用 Amazon EC2 控制台、AWS CLI 和实例元数据查看实例的 IPv6 地址。

使用控制台查看实例的 IPv6 地址
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择实例。

  4. 联网选项卡上,找到 IPv6 地址

使用命令行查看实例的 IPv6 地址

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

使用实例元数据查看实例的 IPv6 地址
  1. 连接到您的 实例。有关更多信息,请参阅连接到您的 Linux 实例

  2. 使用以下命令查看 IPv6 地址 (您可以从 http://169.254.169.254/latest/meta-data/network/interfaces/macs/ 中获取 MAC 地址):

    IMDSv2
    [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/network/interfaces/macs/mac-address/ipv6s
    IMDSv1
    [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/mac-address/ipv6s

向实例分配 IPv6 地址

如果您的 VPC 和子网有与之关联的 IPv6 CIDR 块,则您可以在启动期间或之后向实例分配 IPv6 地址。IPv6 地址从子网的 IPv6 地址范围进行分配,并分配给设备索引为 eth0 的网络接口。

在实例启动期间分配 IPv6 地址

请按照步骤启动实例,并在配置网络设置时选择 Auto-assign IPv6 IP(自动分配 IPv6 IP)。

在启动实例后分配 IPv6 地址
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择您的实例,然后依次选择操作联网管理 IP 地址

  4. 展开网络接口。在 IPv6 地址下,选择分配新 IP 地址。输入子网范围内的 IPv6 地址,或将该字段留空,让 Amazon 为您选择 IPv6 地址。

  5. 选择 Save

使用命令行分配 IPv6 地址

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

取消分配给实例的 IPv6 地址

您可以随时取消分配给实例的 IPv6 地址。

使用控制台取消分配给实例的 IPv6 地址
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择您的实例,然后依次选择操作联网管理 IP 地址

  4. 展开网络接口。在 IPv6 地址下方,选择 IPv6 地址旁边的取消分配

  5. 选择 Save

使用命令行取消分配给实例的 IPv6 地址

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

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

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