使用 AWS 管理控制台和 AWS CLI 自带 IPv4 CIDR 到 IPAM 中 - Amazon Virtual Private Cloud

使用 AWS 管理控制台和 AWS CLI 自带 IPv4 CIDR 到 IPAM 中

按照以下步骤将 IPv4 CIDR 带入 IPAM 中,然后使用 AWS 管理控制台和 AWS CLI 分配弹性 IP 地址 (EIP)。

重要

第 1 步:创建 AWS CLI 命名配置文件和 IAM 角色

要以单个 AWS 用户的身份完成本教程,您可以使用 AWS CLI 命名配置文件在 IAM 角色之间切换。命名配置文件 是您在将 --profile 选项与 AWS CLI 结合使用时引用的设置和凭证集合。有关如何为 AWS 账户创建 IAM 角色和命名配置文件的更多信息,请参阅《AWS Identity and Access Management 用户指南》中的 在 AWS CLI 中使用 IAM 角色

为您将在本教程中使用的三个 AWS 账户分别创建一个角色和一个命名配置文件:

  • 为 AWS Organizations 管理账户创建名为 management-account 的配置文件。

  • 为配置为 IPAM 管理员的 AWS Organizations 成员账户创建名为 ipam-account 的配置文件。

  • 为将从 IPAM 池中分配 CIDR 的企业中的 AWS Organizations 成员账户创建名为 member-account 的配置文件。

创建 IAM 角色和命名配置文件后,请返回本页面并转至下一步。在本教程的其余部分中,您将注意到示例 AWS CLI 命令会将 --profile 选项与其中一个命名配置文件一起使用,以指示哪个账户必须运行该命令。

步骤 2:创建顶级 IPAM 池

完成本部分中的步骤创建顶级 IPAM 池。

此步骤必须由 IPAM 账户完成。

如需创建池
  1. https://console.aws.amazon.com/ipam/ 中打开 IPAM 控制台。

  2. 在导航窗格中,选择 Pools(池)。

  3. 默认情况下,创建池时,默认的私有范围被选中。选择公有范围。有关范围的更多信息,请参阅 IPAM 的工作原理

  4. 选择创建池

  5. (可选)添加池的名称标签和池的描述

  6. 下,选择 IPAM 范围

  7. 地址系列下,选择 IPv4

  8. 资源规划下,保持选中在范围内规划 IP 空间。有关使用此选项规划 VPC 内的子网 IP 空间的更多信息,请参阅 教程:为子网 IP 分配规划 VPC IP 地址空间

  9. 区域设置下,选择

    IPAM 与 BYOIP 集成要求在将用于 BYOIP CIDR 的任何一个池上设置区域设置。由于我们将创建一个其中包含一个区域池的顶级 IPAM 池,并且我们将为区域池中的弹性 IP 地址分配空间,因此您将在区域池中设置区域设置,而不是在顶级池中。在后面的步骤中创建区域池时,您将区域设置添加到区域池中。

    注意

    如果您只创建单个池而不是其中包含区域池的顶级池,则需要为此池选择一个区域设置,以便该池可用于分配。

  10. 公有 IP 来源下,选择 BYOIP

  11. 要预置的 CIDR 下,执行下列某项操作:

    请注意,将 IPv4 CIDR 预置到顶级池中的资源池时,您可以预置的最低 IPv4 CIDR 为 /24;不允许使用更具体的 CIDR(例如 /25)。

    重要

    虽然大多数预配置将在两小时内完成,但对于公开发布的范围,完成预配置过程可能需要长达一周的时间。

  12. 配置此池的分配规则设置保持未选中状态。

  13. (可选)为池选择 Tags(标签)。

  14. 选择创建池

在继续之前,请确保已预置此 CIDR。您可以在池详细信息页面的 CIDR 选项卡中查看资源调配状态。

第 3 步。在顶级池中创建区域池

在顶级池中创建区域池。IPAM 与 BYOIP 集成要求在将用于 BYOIP CIDR 的任何一个池上设置区域设置。在本部分中创建区域池时,您将区域设置添加到区域池中。Locale 必须是创建 IPAM 时配置的其中一个操作区域的一部分。例如,区域设置为 us-east-1 意味着 us-east-1 必须是 IPAM 的操作区域。区域设置为 us-east-1-scl-1(用于本地区域的网络边界组)意味着 IPAM 的操作区域必须为 us-east-1

此步骤必须由 IPAM 账户完成。

要在顶级池中创建区域池
  1. https://console.aws.amazon.com/ipam/ 中打开 IPAM 控制台。

  2. 在导航窗格中,选择 Pools(池)。

  3. 默认情况下,创建池时,默认的私有范围被选中。如果您不想使用默认的私有范围,请从内容窗格顶部的下拉菜单中选择要使用的范围。有关范围的更多信息,请参阅 IPAM 的工作原理

  4. 选择创建池

  5. (可选)添加池的名称标签和池的描述

  6. 源池下,选择您在上一部分中创建的顶级池。

  7. 资源规划下,保持选中在范围内规划 IP 空间。有关使用此选项规划 VPC 内的子网 IP 空间的更多信息,请参阅 教程:为子网 IP 分配规划 VPC IP 地址空间

  8. Locale(区域设置)下,选择池的区域设置。在本教程中,我们将使用 us-east-2 作为区域池的区域设置。可用的选项来自您在创建 IPAM 时选择的运营区域。

    池的区域设置应为以下选项之一:

    • 您希望此 IPAM 池可用于分配的 AWS 区域。

    • 您希望此 IPAM 池可用于分配的 AWS 本地区域的网络边界组(支持的本地区域)。此选项仅适用于公共范围内的 IPAM IPv4 池。

    • AWS 专用本地区域。要在 AWS 专用本地区域内创建池,请在选择器输入中输入 AWS 专用本地区域。

    例如,您只能从与 VPC 的区域共享区域设置的 IPAM 池中为 VPC 分配 CIDR。请注意,当您为池选择了区域设置后,无法对其进行修改。如果 IPAM 的主区域由于中断而不可用,并且池的区域设置与 IPAM 的主区域不同,则该池仍可用于分配 IP 地址。

    选择区域设置可确保池与从中分配的资源之间没有跨区域依赖关系。

  9. 服务下,选择 EC2 (EIP/VPC)。您选择的服务将决定可传播 CIDR 的 AWS 服务。目前,唯一的选择是 EC2(EIP/VPC),这意味着从此池中分配的 CIDR 在 Amazon EC2 服务(适用于弹性 IP 地址)和 Amazon VPC 服务(适用于与 VPC 关联的 CIDR)中是可传播的。

  10. 要预置的 CIDR 下,选择要为池预置的 CIDR。

    注意

    将 CIDR 预置到顶级池中的区域池时,您可以预置的最具体的 IPv4 CIDR 为 /24;不允许使用更具体的 CIDR(例如 /25)。创建区域池后,您可以在该区域池内创建较小的池(例如 /25)。请注意,如果您共享该区域池内的一个或多个区域池,则这些池只能在该区域池上设置的区域中使用。

  11. 启用配置此池的分配规则设置。这里的分配规则选项与创建顶级池时的选项相同。请参阅 创建顶级 IPv4 池 以了解创建池时可用的选项。区域池的分配规则不是从顶级池继承来的。如果您不在此应用任何规则,则不会为池设置分配规则。

  12. (可选)为池选择 Tags(标签)。

  13. 配置完池后,选择创建池

在继续之前,请确保已预置此 CIDR。您可以在池详细信息页面的 CIDR 选项卡中查看资源调配状态。

步骤 4:传播 CIDR

本部分中的步骤必须由 IPAM 账户完成。将弹性 IP 地址 (EIP) 与实例或 Elastic Load Balancer 关联后,您就可以开启传播您带到处于已配置了 Service EC2 (EIP/VPC)(服务 EC2 (EIP/VPC))的池中的 AWS 的 CIDR。在本教程中,这就是您的区域池。默认情况下,CIDR 不会被传播,这意味着它不能通过互联网公开访问。

此步骤必须由 IPAM 账户完成。

注意

传播状态不会限制您分配弹性 IP 地址的能力。即使您的 BYOIPv4 CIDR 未传播,您仍然可以从 IPAM 池中创建 EIP。

要传播 CIDR
  1. https://console.aws.amazon.com/ipam/ 中打开 IPAM 控制台。

  2. 在导航窗格中,选择 Pools(池)。

  3. 默认情况下,创建池时,默认的私有范围被选中。选择公有范围。有关范围的更多信息,请参阅 IPAM 的工作原理

  4. 选择您在本教程中创建的区域池。

  5. 选择 CIDR 选项卡。

  6. 选择 BYOIP CIDR,然后选择操作 > 广告

  7. 选择广告 CIDR

这样一来,将广告 BYOIP CIDR,并且广告列中的值将从已撤回变为已刊登广告

第 5 步。共享区域池

按照本部分中的步骤使用 AWS Resource Access Manager(RAM)共享 IPAM 池。

在 AWS RAM 中启用资源共享

创建 IPAM 后,您需要与组织中的其他账户共享区域池。在共享 IPAM 池之前,请先完成本部分中的步骤,启用与 AWS RAM 的资源共享。如果要使用 AWS CLI 启用资源共享,请使用 --profile management-account 选项。

启用资源共享
  1. 使用 AWS Organizations 管理账户打开 AWS RAM 控制台,地址:https://console.aws.amazon.com/ram/

  2. 在左侧导航窗格中,依次选择设置启用与 AWS Organizations 共享保存设置

您现在可以与组织的其他成员共享 IPAM 池。

使用 AWS RAM 共享 IPAM 池

在这一部分,您将与其他 AWS Organizations 成员账户共享区域池。有关共享 IPAM 池的完整说明,例如所需 IAM 权限的相关信息,请参阅 使用 AWS RAM 共享 IPAM 池。如果要使用 AWS CLI 启用资源共享,请使用 --profile ipam-account 选项。

使用 AWS RAM 共享 IPAM 池
  1. 使用 IPAM 管理员账户打开 IPAM 控制台,地址:https://console.aws.amazon.com/ipam/

  2. 在导航窗格中,选择

  3. 依次选择私有范围、IPAM 池以及操作 > 查看详细信息

  4. 资源共享下,选择创建资源共享。AWS RAM 控制台将打开。您将使用 AWS RAM 来共享该池。

  5. 选择创建资源共享

  6. 在 AWS RAM 控制台中,再次选择创建资源共享

  7. 为共享资源添加名称

  8. 选择资源类型下,选择 IPAM 池,然后选择要共享的池的 ARN。

  9. 选择下一步

  10. 选择 AWSRAMPermissionIpamPoolByoipCidrImport 权限。本教程不提供权限选项的详细信息,但您可以在 使用 AWS RAM 共享 IPAM 池 中查看有关这些选项的更多信息。

  11. 选择下一步

  12. 委托人 > 选择主体类型下,选择 AWS 账户,输入要为 IPAM 提供 IP 地址范围的账户的账户 ID,然后选择添加

  13. 选择下一步

  14. 查看资源共享选项和要共享的主体,然后选择创建

  15. 要允许 member-account 账户从 IPAM 池中分配 IP 地址 CIDRS,请使用 AWSRAMDefaultPermissionsIpamPool 创建第二个资源共享。--resource-arns 的值是您在上一部分中创建的 IPAM 池的 ARN。--principals 的值是 member-account 的账户 ID。--permission-arns 的值是 AWSRAMDefaultPermissionsIpamPool 权限的 ARN。

步骤 6:从池中分配弹性 IP 地址

完成本部分中的步骤,以从池中分配弹性 IP 地址。请注意,如果您使用公有 IPv4 池来分配弹性 IP 地址,则可以使用 步骤 6 的替代方案 中的替代步骤而不是本部分中的步骤。

重要

如果您看到与无权调用 ec2:AllocateAddress 相关的错误,则需要更新当前分配给与您共享的 IPAM 池的托管权限。联系创建资源共享的人员,要求他们将托管权限 AWSRAMPermissionIpamResourceDiscovery 更新为默认版本。有关更多信息,请参阅《AWS RAM 用户指南》中的更新资源共享

AWS Management Console

按照《Amazon EC2 用户指南》中的分配弹性 IP 地址中的步骤分配地址,但请注意以下几点:

  • 此步骤必须由成员账户完成。

  • 确保您的 EC2 控制台所在的 AWS 区域与您在创建区域池时选择的区域设置选项相匹配。

  • 选择地址池时,选择使用 IPv4 IPAM 池分配选项,然后选择您创建的区域池。

Command line

使用 allocate-address 命令从池中分配一个地址。您使用的 --region 必须与您在步骤 2 中创建池时选择的 -locale 选项相匹配。包括您在 --ipam-pool-id 中在步骤 2 中创建的 IPAM 池的 ID。或者,您也可以使用 --address 选项在 IPAM 池中选择特定的 /32

aws ec2 allocate-address --region us-east-1 --ipam-pool-id ipam-pool-07ccc86aa41bef7ce

响应示例:

{ "PublicIp": "18.97.0.41", "AllocationId": "eipalloc-056cdd6019c0f4b46", "PublicIpv4Pool": "ipam-pool-07ccc86aa41bef7ce", "NetworkBorderGroup": "us-east-1", "Domain": "vpc" }

有关更多信息,请参阅《Amazon EC2 用户指南》中的分配弹性 IP 地址

步骤 7:将弹性 IP 地址与 EC2 实例相关联

完成本部分中的步骤将弹性 IP 地址与 EC2 实例相关联。

AWS Management Console

按照《Amazon EC2 用户指南》中的关联弹性 IP 地址中的步骤从 IPAM 池中分配弹性 IP 地址,但请注意以下几点:使用 AWS 管理控制台选项时,您关联弹性 IP 地址所在的 AWS 区域必须与您在创建区域池时选择的区域设置选项相匹配。

此步骤必须由成员账户完成。

Command line

此步骤必须由成员账户完成。使用 --profile member-account 选项。

使用 associate-address 命令将弹性 IP 地址与实例相关联。您关联弹性 IP 地址所在的 --region 区域必须与您创建区域池时选择的 --locale 选项匹配。

aws ec2 associate-address --region us-east-1 --instance-id i-07459a6fca5b35823 --public-ip 18.97.0.41

响应示例:

{ "AssociationId": "eipassoc-06aa85073d3936e0e" }

有关更多信息,请参阅《Amazon EC2 用户指南》中的将弹性 IP 地址与实例或网络接口相关联

步骤 8:清除

按照本部分中的步骤清除您在本教程中预置和创建的资源。

步骤 1:从传播中撤回 CIDR

此步骤必须由 IPAM 账户完成。

  1. https://console.aws.amazon.com/ipam/ 中打开 IPAM 控制台。

  2. 在导航窗格中,选择 Pools(池)。

  3. 默认情况下,创建池时,默认的私有范围被选中。选择公有范围。

  4. 选择您在本教程中创建的区域池。

  5. 选择 CIDR 选项卡。

  6. 选择 BYOIP CIDR,然后选择操作>撤回广告

  7. 选择撤回 CIDR

此时将不再广告 BYOIP CIDR,广告栏中的值将从已刊登广告变为已撤回

步骤 2:解除弹性 IP 地址的关联

此步骤必须由成员账户完成。如果要使用 AWS CLI,请使用 --profile member-account 选项。

  • 完成《Amazon EC2 用户指南》中的解除弹性 IP 地址的关联的步骤,以解除 EIP 的关联。在 AWS 管理控制台中打开 EC2 时,解除 EIP 关联的 AWS 区域必须与您在创建将用于 BYOIP CIDR 的池时选择的 Locale 选项匹配。在本教程中,该池就是区域池。

步骤 3:释放弹性 IP 地址

此步骤必须由成员账户完成。如果要使用 AWS CLI,请使用 --profile member-account 选项。

  • 完成《Amazon EC2 用户指南》中的释放弹性 IP 地址的步骤,从公有 IPv4 池释放弹性 IP 地址(EIP)。在 AWS 管理控制台中打开 EC2 时,分配 EIP 的 AWS 区域必须与您在创建将用于 BYOIP CIDR 的池时选择的 Locale 选项匹配。

步骤 4:删除 RAM 共享并禁用与 AWS Organizations 的 RAM 集成

此步骤必须分别由 IPAM 账户和管理账户完成。要使用 AWS CLI 删除 RAM 共享并禁用 RAM 集成,请使用 --profile ipam-account --profile management-account 选项。

步骤 5:从区域池和顶级池中取消预调配 CIDR

此步骤必须由 IPAM 账户完成。如果要使用 AWS CLI 共享该池,请使用 --profile ipam-account 选项。

  • 按顺序完成 从池中取消预置 CIDR 中的步骤,从区域池中取消预置 CIDR,然后从顶级池中取消预置 CIDR。

步骤 6:删除区域池和顶级池

此步骤必须由 IPAM 账户完成。如果要使用 AWS CLI 共享该池,请使用 --profile ipam-account 选项。

  • 按顺序完成 删除池 中的步骤,删除区域池,然后删除顶级池。

步骤 6 的替代方案

如果您使用公有 IPv4 池来分配弹性 IP 地址,则可以本部分中的步骤,而不是 步骤 6:从池中分配弹性 IP 地址 中的步骤。

步骤 1:创建公有 IPv4 池

此步骤应该由预置弹性 IP 地址的成员账户完成。

注意
  • 此步骤必须由成员账户使用 AWS CLI 完成。

  • 公有 IPv4 池和 IPAM 池由 AWS 中的不同资源管理。公共 IPv4 池是单一账户资源,使您能够将公有 CIDR 转换为弹性 IP 地址。IPAM 池可用于将公有空间分配给公有 IPv4 池。

要使用 AWS CLI 创建公有 IPv4 池
  • 请运行以下命令以预置 CIDR。运行本部分中的命令时,--region 的值必须与您在创建将用于 BYOIP CIDR 的池时选择的 Locale 选项匹配。

    aws ec2 create-public-ipv4-pool --region us-east-2 --profile member-account

    在输出中,您将看到公有 IPv4 池 ID。在下一步骤中,您需要用到此 ID。

    { "PoolId": "ipv4pool-ec2-09037ce61cf068f9a" }

步骤 2:将公有 IPv4 CIDR 预调配到您的公有 IPv4 池

将公有 IPv4 CIDR 预置到您的公有 IPv4 池。--region 的值为必须与您在创建将用于 BYOIP CIDR 的池时选择的 Locale 值匹配。--netmask-length 是指您想添加到公共池的 IPAM 池空间量。该值不能大于 IPAM 池的网络掩码长度。您可以定义的最不具体的 --netmask-length24

注意
  • 如果您将 /24 CIDR 范围引入 IPAM 以便在 AWS 组织内共享,则可以为多个 IPAM 池预置较小的前缀,例如 /27(使用 -- netmask-length 27),而不是像本教程中所示预置整个 /24 CIDR(使用 -- netmask-length 24)。

  • 此步骤必须由成员账户使用 AWS CLI 完成。

要使用 AWS CLI 创建公有 IPv4 池
  1. 请运行以下命令以预置 CIDR。

    aws ec2 provision-public-ipv4-pool-cidr --region us-east-2 --ipam-pool-id ipam-pool-04d8e2d9670eeab21 --pool-id ipv4pool-ec2-09037ce61cf068f9a --netmask-length 24 --profile member-account

    在输出中,您将看到预置的 CIDR。

    { "PoolId": "ipv4pool-ec2-09037ce61cf068f9a", "PoolAddressRange": { "FirstAddress": "130.137.245.0", "LastAddress": "130.137.245.255", "AddressCount": 256, "AvailableAddressCount": 256 } }
  2. 运行以下命令,以查看公有 IPv4 池中预置的 CIDR。

    aws ec2 describe-public-ipv4-pools --region us-east-2 --max-results 10 --profile member-account

    在输出中,您将看到预置的 CIDR。默认情况下,CIDR 不会被传播,这意味着它不能通过互联网公开访问。在本教程的最后一步中,您将有机会将此 CIDR 设置为进行传播。

    { "PublicIpv4Pools": [ { "PoolId": "ipv4pool-ec2-09037ce61cf068f9a", "Description": "", "PoolAddressRanges": [ { "FirstAddress": "130.137.245.0", "LastAddress": "130.137.245.255", "AddressCount": 256, "AvailableAddressCount": 255 } ], "TotalAddressCount": 256, "TotalAvailableAddressCount": 255, "NetworkBorderGroup": "us-east-2", "Tags": [] } ] }

创建公有 IPv4 池后,要查看在 IPAM 区域池中分配的公有 IPv4 池,请打开 IPAM 控制台,并在分配资源下查看区域池中的分配。

步骤 3:从公有 IPv4 池分配弹性 IP 地址

完成《Amazon EC2 用户指南》中的分配弹性 IP 地址的步骤,从公有 IPv4 池分配 EIP。在 AWS 管理控制台中打开 EC2 时,分配 EIP 的 AWS 区域必须与您在创建将用于 BYOIP CIDR 的池时选择的 Locale 选项匹配。

此步骤必须由成员账户完成。如果要使用 AWS CLI,请使用 --profile member-account 选项。

完成这三个步骤后,请返回 步骤 7:将弹性 IP 地址与 EC2 实例相关联 并继续操作,直到完成本教程。

步骤 6 清理的替代方案

完成以下步骤,以清理使用步骤 9 的替代方法创建的公有 IPv4 池。在 步骤 8:清除 中的标准清理过程中,您应在释放弹性 IP 地址后完成这些步骤。

步骤 1:从您的公有 IPv4 池中取消预调配公有 IPv4 CIDR
重要

此步骤必须由成员账户使用 AWS CLI 完成。

  1. 查看您的 BYOIP CIDR。

    aws ec2 describe-public-ipv4-pools --region us-east-2 --profile member-account

    在输出中,您将看到 BYOIP CIDR 中的 IP 地址。

    { "PublicIpv4Pools": [ { "PoolId": "ipv4pool-ec2-09037ce61cf068f9a", "Description": "", "PoolAddressRanges": [ { "FirstAddress": "130.137.245.0", "LastAddress": "130.137.245.255", "AddressCount": 256, "AvailableAddressCount": 256 } ], "TotalAddressCount": 256, "TotalAvailableAddressCount": 256, "NetworkBorderGroup": "us-east-2", "Tags": [] } ] }
  2. 运行以下命令以从公有 IPv4 池中释放 CIDR 中的最后一个 IP 地址。输入网络掩码为 /32 的 IP 地址。

    aws ec2 deprovision-public-ipv4-pool-cidr --region us-east-2 --pool-id ipv4pool-ec2-09037ce61cf068f9a --cidr 130.137.245.255/32 --profile member-account

    在输出中,您将看到取消预置的 CIDR。

    { "PoolId": "ipv4pool-ec2-09037ce61cf068f9a", "DeprovisionedAddresses": [ "130.137.245.255" ] }
    重要

    您必须为 CIDR 范围内的每个 IP 地址重新运行此命令。如果您的 CIDR 是 /24,则必须运行此命令才能取消预置 /24 CIDR 中 256 个 IP 地址中的每个地址。

  3. 再次查看您的 BYOIP CIDR,并确保没有更多的预置地址。运行本部分中的命令时,--region 的值必须与 IPAM 的区域匹配。

    aws ec2 describe-public-ipv4-pools --region us-east-2 --profile member-account

    在输出中,您将看到公有 IPv4 池中的 IP 地址计数。

    { "PublicIpv4Pools": [ { "PoolId": "ipv4pool-ec2-09037ce61cf068f9a", "Description": "", "PoolAddressRanges": [], "TotalAddressCount": 0, "TotalAvailableAddressCount": 0, "NetworkBorderGroup": "us-east-2", "Tags": [] } ] }
注意

IPAM 可能需要一些时间才能发现公有 IPv4 池分配已被删除。在看到已从 IPAM 中删除分配之前,您无法继续清理和取消预置 IPAM 池 CIDR。

步骤 2:删除公有 IPv4 池

此步骤必须由成员账户完成。

  • 运行以下命令,以从 CIDR 中删除公有 IPv4 池。运行本部分中的命令时,--region 的值必须与您在创建将用于 BYOIP CIDR 的池时选择的 Locale 选项匹配。在本教程中,该池就是区域池。必须使用 AWS CLI 完成此步骤。

    aws ec2 delete-public-ipv4-pool --region us-east-2 --pool-id ipv4pool-ec2-09037ce61cf068f9a --profile member-account

    在输出中,您将看到返回值

    { "ReturnValue": true }

    删除该池后,要查看未由 IPAM 管理的分配,请打开 IPAM 控制台,并在分配下查看区域池的详细信息。