教程:将 BYOIP IPv4 CIDR 传输到 IPAM - Amazon Virtual Private Cloud

教程:将 BYOIP IPv4 CIDR 传输到 IPAM

按照以下步骤将现有的 IPv4 CIDR 传输到 IPAM。如果您已拥有 AWS 的 IPv4 BYOIP CIDR,则可以将 CIDR 从公有 IPv4 池移动到 IPAM。您不能将 IPv6 CIDR 移动到 IPAM。

本教程假定您已使用在 Amazon EC2 中使用您自己的 IP 地址(BYOIP)中所述的过程,成功将 IP 地址范围带到 AWS,并且您现在希望将该 IP 地址范围转移到 IPAM。如果您是第一次将新 IP 地址引入 AWS,请完成 教程:将 IP 地址带入 IPAM 中的步骤。

如果您将公有 IPv4 池转移到 IPAM,则不会影响现有分配。将公有 IPv4 池转移到 IPAM 后,根据资源类型,您可能能够监控现有分配。有关更多信息,请参阅 按资源监控 CIDR 使用情况

注意
  • 本教程假设您已完成 创建 IPAM 中的步骤。

  • 本教程的每个步骤都必须由以下两个 AWS 账户之一完成:

    • IPAM 管理员的账户。在本教程中,此账户将被称为 IPAM 账户。

    • 您的组织中拥有 BYOIP CIDR 的账户。在本教程中,此账户将被称为 BYOIP CIDR 拥有者账户。

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

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

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

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

  • 为您所在企业中拥有 BYOIP CIDR 的 AWS 账户创建名为 byoip-owner-account 的配置文件。

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

步骤 2:获取 IPAM 的公有范围 ID

请按照本部分中的步骤获取 IPAM 的公有范围 ID。此步骤应该由 ipam-account 账户执行。

运行以下命令以获取您的公有范围 ID。

aws ec2 describe-ipams --region us-east-1 --profile ipam-account

在输出中,您将看到自己的公有范围 ID。记下 PublicDefaultScopeId 的值。您在下一个步骤中需要使用此值。

{ "Ipams": [ { "OwnerId": "123456789012", "IpamId": "ipam-090e48e75758de279", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-090e48e75758de279", "PublicDefaultScopeId": "ipam-scope-0087d83896280b594", "PrivateDefaultScopeId": "ipam-scope-08b70b04fbd524f8d", "ScopeCount": 2, "Description": "my-ipam", "OperatingRegions": [ { "RegionName": "us-east-1" }, { "RegionName": "us-west-2" } ], "Tags": [] } ] }

步骤 3:创建 IPAM 池

按照本部分中的步骤创建 IPAM 池。此步骤应该由 ipam-account 账户执行。您创建的 IPAM 池必须是 --locale 选项与 BYOIP CIDR AWS 区域匹配的顶级池。您只能将 BYOIP 传输到顶级 IPAM 池。

重要

创建池时,您必须包括 --aws-service ec2。您选择的服务将决定可传播 CIDR 的 AWS 服务。目前,唯一的选择是 ec2,这意味着从此池中分配的 CIDR 在 Amazon EC2 服务(适用于弹性 IP 地址)和 Amazon VPC 服务(适用于与 VPC 关联的 CIDR)中是可传播的。

要使用 AWS CLI 为传输的 BYOIP CIDR 创建 IPv4 地址池
  1. 运行以下命令以创建 IPAM 池。请使用您在上一步中检索的 IPAM 的公有范围的 ID。

    aws ec2 create-ipam-pool --region us-east-1 --profile ipam-account --ipam-scope-id ipam-scope-0087d83896280b594 --description "top-level-pool" --locale us-west-2 --aws-service ec2 --address-family ipv4

    在输出中,您将会看到 create-in-progress,这表明池的创建正在进行中。

    { "IpamPool": { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0a03d430ca3f5c035", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0a03d430ca3f5c035", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-0087d83896280b594", "IpamScopeType": "public", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-090e48e75758de279", "Locale": "us-west-2", "PoolDepth": 1, "State": "create-in-progress", "Description": "top-level-pool", "AutoImport": false, "AddressFamily": "ipv4", "Tags": [], "AwsService": "ec2" } }
  2. 运行以下命令,直到您在输出中看到 create-complete 的状态。

    aws ec2 describe-ipam-pools --region us-east-1 --profile ipam-account

    下面的示例输出显示池的状态。在下一步骤中,您需要用到 OwnerId

    { "IpamPools": [ { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0a03d430ca3f5c035", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0a03d430ca3f5c035", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-0087d83896280b594", "IpamScopeType": "public", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-090e48e75758de279", "Locale": "us-west-2", "PoolDepth": 1, "State": "create-complete", "Description": "top-level-pool", "AutoImport": false, "AddressFamily": "ipv4", "Tags": [], "AwsService": "ec2" } ] }

步骤 4:使用 AWS RAM 共享 IPAM 池

按照本部分中的步骤使用 AWS RAM 来共享 IPAM 池,以便其他 AWS 账户可以将现有 BYOIP IPV4 CIDR 传输到 IPAM 池并使用 IPAM 池。此步骤应该由 ipam-account 账户执行。

使用 AWS CLI 共享 IPv4 地址池
  1. 查看 IPAM 池可用的 AWS RAM 权限。您需要两个 ARN 才能完成本部分中的步骤。

    aws ram list-permissions --region us-east-1 --profile ipam-account --resource-type ec2:IpamPool
    { "permissions": [ { "arn": "arn:aws:ram::aws:permission/AWSRAMDefaultPermissionsIpamPool", "version": "1", "defaultVersion": true, "name": "AWSRAMDefaultPermissionsIpamPool", "resourceType": "ec2:IpamPool", "status": "ATTACHABLE", "creationTime": "2022-06-30T13:04:29.335000-07:00", "lastUpdatedTime": "2022-06-30T13:04:29.335000-07:00", "isResourceTypeDefault": true }, { "arn": "arn:aws:ram::aws:permission/AWSRAMPermissionIpamPoolByoipCidrImport", "version": "1", "defaultVersion": true, "name": "AWSRAMPermissionIpamPoolByoipCidrImport", "resourceType": "ec2:IpamPool", "status": "ATTACHABLE", "creationTime": "2022-06-30T13:03:55.032000-07:00", "lastUpdatedTime": "2022-06-30T13:03:55.032000-07:00", "isResourceTypeDefault": false } ] }
  2. 创建资源共享以使 byoip-owner-account 账户能够将 BYOIP CIDR 导入 IPAM。--resource-arns 的值是您在上一部分中创建的 IPAM 池的 ARN。--principals 的值是 BYOIP CIDR 拥有者账户的账户 ID。--permission-arns 的值是 AWSRAMPermissionIpamPoolByoipCidrImport 权限的 ARN。

    aws ram create-resource-share --region us-east-1 --profile ipam-account --name PoolShare2 --resource-arns arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0a03d430ca3f5c035 --principals 111122223333 --permission-arns arn:aws:ram::aws:permission/AWSRAMPermissionIpamPoolByoipCidrImport
    { "resourceShare": { "resourceShareArn": "arn:aws:ram:us-east-1:123456789012:resource-share/7993758c-a4ea-43ad-be12-b3abaffe361a", "name": "PoolShare2", "owningAccountId": "123456789012", "allowExternalPrincipals": true, "status": "ACTIVE", "creationTime": "2023-04-28T07:32:25.536000-07:00", "lastUpdatedTime": "2023-04-28T07:32:25.536000-07:00" } }
  3. (可选)如果要允许 byoip-owner-account 账户在传输完成后将 IP 地址 CIDRS 从 IPAM 池分配到公有 IPv4 池,请复制 AWSRAMDefaultPermissionsIpamPool 的 ARN 并创建第二个资源共享。--resource-arns 的值是您在上一部分中创建的 IPAM 池的 ARN。--principals 的值是 BYOIP CIDR 拥有者账户的账户 ID。--permission-arns 的值是 AWSRAMDefaultPermissionsIpamPool 权限的 ARN。

    aws ram create-resource-share --region us-east-1 --profile ipam-account --name PoolShare1 --resource-arns arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0a03d430ca3f5c035 --principals 111122223333 --permission-arns arn:aws:ram::aws:permission/AWSRAMDefaultPermissionsIpamPool
    { "resourceShare": { "resourceShareArn": "arn:aws:ram:us-east-1:123456789012:resource-share/8d1e229b-2830-4cf4-8b10-19c889235a2f", "name": "PoolShare1", "owningAccountId": "123456789012", "allowExternalPrincipals": true, "status": "ACTIVE", "creationTime": "2023-04-28T07:31:25.536000-07:00", "lastUpdatedTime": "2023-04-28T07:31:25.536000-07:00" } }

由于在 RAM 中创建了资源共享,byoip-owner-account 账户现在可以将 CIDR 移至 IPAM。

步骤 5:将现有的 BYOIP IPV4 CIDR 传输到 IPAM

按照本部分中的步骤将现有的 BYOIP IPV4 CIDR 传输到 IPAM。此步骤应该由 byoip-owner-account 账户执行。

重要

将 IPv4 地址范围设置为 AWS 后,您可以使用该范围内的所有 IP 地址,包括第一个地址(网络地址)和最后一个地址(广播地址)。

要将 BYOIP CIDR 传输到 IPAM,BYOIP CIDR 所有者必须在其 IAM policy 中拥有以下权限:

  • ec2:MoveByoipCidrToIpam

  • ec2:ImportByoipCidrToIpam

注意

您可以为此步骤使用 AWS Management Console 或 AWS CLI。

AWS Management Console
要将 BYOIP CIDR 传输到 IPAM 池,请执行以下操作:
  1. https://console.aws.amazon.com/ipam/byoip-owner-account 账户身份打开 IPAM 控制台。

  2. 在导航窗格中,选择

  3. 选择在本教程中创建和共享的顶级池。

  4. 选择操作 > 传输 BYOIP CIDR

  5. 选择传输 BYOIP CIDR

  6. 选择您的 BYOIP CIDR。

  7. 选择预置

Command line

使用 AWS CLI 通过以下 AWS CLI 命令将 BYIP CIDR 传输到 IPAM 池:

  1. 请运行以下命令以传输 CIDR。确保 --region 值是 BYOIP CIDR 的 AWS 区域。

    aws ec2 move-byoip-cidr-to-ipam --region us-west-2 --profile byoip-owner-account --ipam-pool-id ipam-pool-0a03d430ca3f5c035 --ipam-pool-owner 123456789012 --cidr 130.137.249.0/24

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

    { "ByoipCidr": { "Cidr": "130.137.249.0/24", "State": "pending-transfer" } }
  2. 确保 CIDR 已被传输。运行以下命令,直到您在输出中看到 complete-transfer 的状态。

    aws ec2 move-byoip-cidr-to-ipam --region us-west-2 --profile byoip-owner-account --ipam-pool-id ipam-pool-0a03d430ca3f5c035 --ipam-pool-owner 123456789012 --cidr 130.137.249.0/24

    下面的示例输出显示状态。

    { "ByoipCidr": { "Cidr": "130.137.249.0/24", "State": "complete-transfer" } }

步骤 6:在 IPAM 中查看 CIDR

请按照本部分中的步骤查看 IPAM 中的 CIDR。此步骤应该由 ipam-account 账户执行。

要使用 AWS CLI 在 IPAM 池中查看传输的 BYOIP CIDR
  • 运行以下命令以查看 IPAM 中管理的分配。确保 --region 值是 BYOIP CIDR 的 AWS 区域。

    aws ec2 get-ipam-pool-allocations --region us-west-2 --profile ipam-account --ipam-pool-id ipam-pool-0d8f3646b61ca5987

    输出将显示 IPAM 中的分配。

    { "IpamPoolAllocations": [ { "Cidr": "130.137.249.0/24", "IpamPoolAllocationId": "ipam-pool-alloc-5dedc8e7937c4261b56dc3e3eb53dc46", "ResourceId": "ipv4pool-ec2-0019eed22a684e0b3", "ResourceType": "ec2-public-ipv4-pool", "ResourceOwner": "111122223333" } ] }

步骤 7:清除

按照本部分中的步骤删除您在本教程中创建的资源。此步骤应该由 ipam-account 账户执行。

要使用 AWS CLI 清除本教程中创建的资源
  1. 要删除 IPAM 池共享资源,请运行以下命令以获取第一个资源共享 ARN:

    aws ram get-resource-shares --region us-east-1 --profile ipam-account --name PoolShare1 --resource-owner SELF
    { "resourceShares": [ { "resourceShareArn": "arn:aws:ram:us-east-1:123456789012:resource-share/8d1e229b-2830-4cf4-8b10-19c889235a2f", "name": "PoolShare1", "owningAccountId": "123456789012", "allowExternalPrincipals": true, "status": "ACTIVE", "creationTime": "2023-04-28T07:31:25.536000-07:00", "lastUpdatedTime": "2023-04-28T07:31:25.536000-07:00", "featureSet": "STANDARD" } ] }
  2. 复制资源共享 ARN 并使用它删除 IPAM 池资源共享。

    aws ram delete-resource-share --region us-east-1 --profile ipam-account --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/8d1e229b-2830-4cf4-8b10-19c889235a2f
    { "returnValue": true }
  3. 如果您在 步骤 4:使用 AWS RAM 共享 IPAM 池 中创建了额外的资源共享,请重复前两个步骤以获取 PoolShare2 的第二个资源共享 ARN,然后删除第二个资源共享。

  4. 运行以下命令以获取 BYOIP CIDR 的分配 ID。确保 --region 值与 BYOIP CIDR 的 AWS 区域匹配。

    aws ec2 get-ipam-pool-allocations --region us-west-2 --profile ipam-account --ipam-pool-id ipam-pool-0d8f3646b61ca5987

    输出将显示 IPAM 中的分配。

    { "IpamPoolAllocations": [ { "Cidr": "130.137.249.0/24", "IpamPoolAllocationId": "ipam-pool-alloc-5dedc8e7937c4261b56dc3e3eb53dc46", "ResourceId": "ipv4pool-ec2-0019eed22a684e0b3", "ResourceType": "ec2-public-ipv4-pool", "ResourceOwner": "111122223333" } ] }
  5. 从公有 IPv4 池中释放 CIDR 中的最后一个 IP 地址。输入网络掩码为 /32 的 IP 地址。您必须为 CIDR 范围内的每个 IP 地址重新运行此命令。如果您的 CIDR 是 /24,则必须运行此命令才能取消预置 /24 CIDR 中 256 个 IP 地址中的每个地址。运行本部分中的命令时,--region 的值必须与 IPAM 的区域匹配。

    此步骤必须由 byoip-owner-account 账户完成。

    aws ec2 deprovision-public-ipv4-pool-cidr --region us-east-1 --profile byoip-owner-account --pool-id ipv4pool-ec2-0019eed22a684e0b3 --cidr 130.137.249.255/32

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

    { "PoolId": "ipv4pool-ec2-0019eed22a684e0b3", "DeprovisionedAddresses": [ "130.137.249.255" ] }
  6. 再次查看您的 BYOIP CIDR,并确保没有更多的预置地址。运行本部分中的命令时,--region 的值必须与 IPAM 的区域匹配。

    此步骤必须由 byoip-owner-account 账户完成。

    aws ec2 describe-public-ipv4-pools --region us-east-1 --profile byoip-owner-account

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

    { "PublicIpv4Pools": [ { "PoolId": "ipv4pool-ec2-0019eed22a684e0b3", "Description": "", "PoolAddressRanges": [], "TotalAddressCount": 0, "TotalAvailableAddressCount": 0, "NetworkBorderGroup": "us-east-1", "Tags": [] } ] }
  7. 运行以下命令以删除顶级池。

    aws ec2 delete-ipam-pool --region us-east-1 --profile ipam-account --ipam-pool-id ipam-pool-0a03d430ca3f5c035

    在输出中,您可以看到删除状态。

    { "IpamPool": { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0a03d430ca3f5c035", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0a03d430ca3f5c035", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-0087d83896280b594", "IpamScopeType": "public", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-090e48e75758de279", "Locale": "us-east-1", "PoolDepth": 2, "State": "delete-in-progress", "Description": "top-level-pool", "AutoImport": false, "Advertisable": true, "AddressFamily": "ipv4", "AwsService": "ec2" } }