教程:将 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
--profileipam-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 地址池
-
运行以下命令以创建 IPAM 池。请使用您在上一步中检索的 IPAM 的公有范围的 ID。
aws ec2 create-ipam-pool --region
us-east-1
--profileipam-account
--ipam-scope-idipam-scope-0087d83896280b594
--description"top-level-pool"
--localeus-west-2
--aws-service ec2 --address-familyipv4
在输出中,您将会看到
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" } }
-
运行以下命令,直到您在输出中看到
create-complete
的状态。aws ec2 describe-ipam-pools --region
us-east-1
--profileipam-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 地址池
查看 IPAM 池可用的 AWS RAM 权限。您需要两个 ARN 才能完成本部分中的步骤。
aws ram list-permissions --region
us-east-1
--profileipam-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 } ] }
创建资源共享以使
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
--profileipam-account
--namePoolShare2
--resource-arnsarn:aws:ec2::123456789012:ipam-pool/ipam-pool-0a03d430ca3f5c035
--principals111122223333
--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" } }
(可选)如果要允许
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
--profileipam-account
--namePoolShare1
--resource-arnsarn:aws:ec2::123456789012:ipam-pool/ipam-pool-0a03d430ca3f5c035
--principals111122223333
--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。
步骤 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
--profileipam-account
--ipam-pool-idipam-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 清除本教程中创建的资源
要删除 IPAM 池共享资源,请运行以下命令以获取第一个资源共享 ARN:
aws ram get-resource-shares --region
us-east-1
--profileipam-account
--namePoolShare1
--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" } ] }
复制资源共享 ARN 并使用它删除 IPAM 池资源共享。
aws ram delete-resource-share --region
us-east-1
--profileipam-account
--resource-share-arnarn:aws:ram:us-east-1:123456789012:resource-share/8d1e229b-2830-4cf4-8b10-19c889235a2f
{ "returnValue": true }
-
如果您在 步骤 4:使用 AWS RAM 共享 IPAM 池 中创建了额外的资源共享,请重复前两个步骤以获取
PoolShare2
的第二个资源共享 ARN,然后删除第二个资源共享。 -
运行以下命令以获取 BYOIP CIDR 的分配 ID。确保
--region
值与 BYOIP CIDR 的 AWS 区域匹配。aws ec2 get-ipam-pool-allocations --region
us-west-2
--profileipam-account
--ipam-pool-idipam-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" } ] }
-
从公有 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
--profilebyoip-owner-account
--pool-idipv4pool-ec2-0019eed22a684e0b3
--cidr130.137.249.255/32
在输出中,您将看到取消预置的 CIDR。
{ "PoolId": "ipv4pool-ec2-0019eed22a684e0b3", "DeprovisionedAddresses": [ "130.137.249.255" ] }
-
再次查看您的 BYOIP CIDR,并确保没有更多的预置地址。运行本部分中的命令时,
--region
的值必须与 IPAM 的区域匹配。此步骤必须由
byoip-owner-account
账户完成。aws ec2 describe-public-ipv4-pools --region
us-east-1
--profilebyoip-owner-account
在输出中,您将看到公有 IPv4 池中的 IP 地址计数。
{ "PublicIpv4Pools": [ { "PoolId": "ipv4pool-ec2-0019eed22a684e0b3", "Description": "", "PoolAddressRanges": [], "TotalAddressCount": 0, "TotalAvailableAddressCount": 0, "NetworkBorderGroup": "us-east-1", "Tags": [] } ] }
-
运行以下命令以删除顶级池。
aws ec2 delete-ipam-pool --region
us-east-1
--profileipam-account
--ipam-pool-idipam-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" } }