

# 教程：自带 ASN 到 IPAM 中
<a name="tutorials-byoasn"></a>

如果您的应用程序使用的是合作伙伴或客户允许在其网络中列出的可信 IP 地址和自治系统号（ASN），则无需合作伙伴或客户更改允许列表，即可在 AWS 中运行这些应用程序。

自治系统编号 (ASN) 是一个全球唯一的号码，允许通过互联网识别一组网络，并使用[边界网关协议](https://aws.amazon.com/what-is/border-gateway-protocol/)与其他网络动态交换路由数据。例如，互联网服务提供商（ISP）使用 ASN 来识别网络流量来源。并非所有组织都自己购买 ASN，但对于购买了 ASN 的组织，它们可以将自己的 ASN 带到 AWS。

通过自带自治系统编号 (BYOASN)，您能够使用自己的公有 ASN（而不是 AWS ASN）来公开发布自己引入 AWS 的 IPv4 或 IPv6 地址。当您使用 BYOASN 时，来自您的 IP 地址的流量会携带您的 ASN（而不是 AWS ASN），并且根据您的 IP 地址和 ASN 允许列出的流量的客户或合作伙伴可以访问您的工作负载。

**重要**  
使用您的 IPAM 主区域的 IPAM 管理员账户完成本教程。
本教程假定您拥有想要带入 IPAM 的公共 ASN，并且您已经将 BYOIP CIDR 带入 AWS 并配置到公有范围内的池中。您可以随时将 ASN 带入 IPAM，但要使用该 ASN，您必须关联已带入 AWS 账户的 CIDR。本教程假定您已完成这一操作。有关更多信息，请参阅 [教程：将 IP 地址带入 IPAM](tutorials-byoip-ipam.md)。
您可以即时在广告自己的 ASN 或 AWS ASN 之间切换，但每小时只能从 AWS ASN 更改为自己的 ASN 一次。
如果您的 BYOIP CIDR 当前已广告，则无需将其从广告中撤回即可与您的 ASN 关联。

## ASN 的载入先决条件
<a name="tutorials-byoasn-prereqs"></a>

要完成本教程，您需要做以下准备：
+ 您的 2 字节或 4 字节的公有 ASN。
+ 如果您已经通过 [教程：将 IP 地址带入 IPAM](tutorials-byoip-ipam.md) 将一个 IP 地址范围带到 AWS，那么您需要该 IP 地址的 CIDR 范围。您还需要一个私有密钥。您可以使用在将 IP 地址 CIDR 范围带到 AWS 时创建的私有密钥，也可以按照《*Amazon EC2 用户指南*》的[创建私有密钥并生成 X.509 证书](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/prepare-for-byoip.html#byoip-certificate)中所述创建新的私有密钥。
+ 当您通过 [教程：将 IP 地址带入 IPAM](tutorials-byoip-ipam.md) 将 IPv4 或 IPv6 地址范围引入 AWS 时，可以[创建 X.509 证书](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-add-certificate)，然后[将 X.509 证书上传到 RIR 中的 RDAP 记录](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-add-certificate)。您必须将创建的同一证书上传到 ASN 的 RIR 中的 RDAP 记录中。请务必在编码部分前后包含 `-----BEGIN CERTIFICATE-----` 和 `-----END CERTIFICATE-----` 字符串。所有这些内容必须都在单个长线上。更新 RDAP 的过程取决于您的 RIR：
  + 对于 ARIN，使用[客户经理门户](https://account.arin.net/public/secure/dashboard)，通过“修改 ASN”选项在代表您的 ASN 的“网络信息”对象的“公共注释”部分中添加证书。请勿将其添加到您组织的注释部分。
  + 对于 RIPE，将证书作为新的“descr”字段添加到代表您的 ASN 的“aut-num”对象。通常可在

    [RIPE 数据库门户](https://apps.db.ripe.net/db-web-ui/myresources/overview)的“我的资源”部分中了解到相关信息。请勿将其添加到您所在组织的注释部分或“aut-num”对象的“备注”字段中。
  + 对于 APNIC，通过电子邮件将证书发送到 [helpdesk@apnic.net](mailto:helpdesk@apnic.net)，以手动将其添加到您的 ASN 的“备注”字段中。请以 ASN 的 APNIC 授权联系人身份发送电子邮件。
+ 将 IP 地址范围带入 IPAM 时，可创建一个 ROA 来验证自己是否控制了带入 IPAM 的 IP 地址空间。除了该 ROA 之外，您的 RIR 中还必须有第二个 ROA，其中包含要带入 IPAM 的 ASN。如果 RIR 中没有 ASN 的第二个 ROA，请完成 [3. 在 RIR 中创建 ROA 对象](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/prepare-for-byoip.html#byoip-create-roa-object)。忽略其他步骤。

## 教程步骤
<a name="tutorials-byoasn-process"></a>

使用 AWS 管理控制台或 AWS CLI，完成以下步骤。

------
#### [ AWS Management Console ]

1. 在 [https://console.aws.amazon.com/ipam/](https://console.aws.amazon.com/ipam/) 中打开 IPAM 控制台。

1. 在左侧导航窗格中，选择 **IPAM**。

1. 选择您的 IPAM。

1. 选择 **BYOASN** 选项卡，然后选择**预置 BYOASN**。

1. 输入 **ASN**。接下来，**消息**字段会自动填充您在下一步中需要登录的消息。
   + 消息的格式如下，其中 ACCOUNT 是您的 AWS 账号，ASN 是您带到 IPAM 的 ASN，YYYYMMDD 是消息的到期日期（默认为下个月的最后一天）。示例：

     ```
     text_message="1|aws|ACCOUNT|ASN|YYYYMMDD|SHA256|RSAPSS"
     ```

1. 复制该信息，并根据需要使用您自己的值替换到期日期。

1. 使用私有密钥对消息进行签名。示例：

   ```
   signed_message=$( echo -n $text_message | openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -sign private-key.pem -keyform PEM | openssl base64 | tr -- '+=/' '-_~' | tr -d "\n")
   ```

1. 在**签名**下，输入签名。

1. （可选）要预置另一个 ASN，请选择**预置其他 ASN**。您最多可以预置 5 个 ASN。要增加此配额，请参阅[IPAM 的配额](quotas-ipam.md)。

1. 选择**预置**。

1. 在 **BYOASN** 选项卡中查看预置过程。等待**状态**从*待预置*更改为*已预置*。处于*预置失败*状态的 BYOASN 将在 7 天后自动删除。成功预置 ASN 后，您可以将其与 BYOIP CIDR 关联。

1. 在左侧导航窗格中，选择**池**。

1. 选择您的公有范围。有关范围的更多信息，请参阅 [IPAM 的工作原理](how-it-works-ipam.md)。

1. 选择已为其预置 BYOIP CIDR 的区域池。该池必须将**服务**设置为 **EC2**，并且必须选择一个区域设置。

1. 选择 **CIDR** 选项卡，然后选择一个 BYOIP CIDR。

1. 选择**操作** > **管理 BYOASN 关联**。

1. 在**已关联的 BYOASN** 下，选择您带入 AWS 的 ASN。如果您有多个 ASN，则可以将多个 ASN 关联到 BYOIP CIDR。您可以将尽可能多的 ASN 关联到 IPAM。请注意，默认情况下，您最多可以将 5 个 ASN 带入 IPAM。有关更多信息，请参阅 [IPAM 的配额](quotas-ipam.md)。

1. 选择**关联**。

1. 等待 ASN 关联完成。在 ASN 成功与 BYOIP CIDR 关联后，您可以再次广告 BYOIP CIDR。

1. 选择池 **CIDR** 选项卡。

1. 选择 BYOIP CIDR，然后选择**操作** > **广告**。接下来，系统会显示您的 ASN 选项：Amazon ASN 和您带入 IPAM 的所有 ASN。

1. 选择您带入 IPAM 的 ASN，然后选择**广告 CIDR**。这样一来，将广告 BYOIP CIDR，并且**广告**列中的值将从“已撤回”变为“已刊登广告”。**自治系统编号**列显示与 CIDR 关联的 ASN。

1. （可选）如果您决定要将 ASN 关联更改回 Amazon ASN，选择 BYOIP CIDR，然后再次选择**操作** > **广告**。这一次我们选择 Amazon ASN。您可以随时换回 Amazon ASN，但每小时只能更改为自定义 ASN 一次。

本教程已完成。

**清理**

1. 解除 ASN 与 BYOIP CIDR 的关联
   + 要从广告中撤回 BYOIP CIDR，在公有范围的池中，选择 BYOIP CIDR，然后选择**操作** > **撤消广告**。
   + 要解除 ASN 与 CIDR 的关联，请选择**操作** > **管理 BYOASN 关联**。

1. 取消预置 ASN
   + 要取消预置 ASN，在“BYOASN”选项卡中，选择 ASN，然后选择**取消预置 ASN。**接下来，ASN 将被取消预置。处于*已取消预置*状态的 BYOASN 将在 7 天后自动删除。

清理完成。

------
#### [ Command line ]

1. 通过包含您的 ASN 和授权消息来预置您的 ASN。签名是用您的私有密钥签署的消息。

   ```
   aws ec2 provision-ipam-byoasn --ipam-id $ipam_id --asn 12345 --asn-authorization-context Message="$text_message",Signature="$signed_message"
   ```

1. 描述您的 ASN 以跟踪预置过程。如果请求成功，您应该会在几分钟后看到*预置状态*被设置为*已预置*。

   ```
   aws ec2 describe-ipam-byoasn 
   ```

1. 将您的 ASN 与 BYOIP CIDR 关联。您希望从中广告的任何自定义 ASN 都必须先与您的 CIDR 关联。

   ```
   aws ec2 associate-ipam-byoasn --asn 12345 --cidr xxx.xxx.xxx.xxx/n
   ```

1. 描述您的 CIDR 以跟踪关联流程。

   ```
   aws ec2 describe-byoip-cidrs --max-results 10
   ```

1. 使用您的 ASN 广告您的 CIDR。如果 CIDR 已广告，则会将源于 Amazon 的 ASN 换成您的 ASN。

   ```
   aws ec2 advertise-byoip-cidr --asn 12345 --cidr xxx.xxx.xxx.xxx/n
   ```

1. 描述您的 CIDR 以查看 ASN 状态从*已关联*更改为*已刊登广告*。

   ```
   aws ec2 describe-byoip-cidrs --max-results 10
   ```

本教程已完成。

**清理**

1. 请执行以下操作之一：
   + 要仅撤回您的 ASN 广告并重新使用 Amazon ASN，同时保留已广告的 CIDR，您必须使用 asn 参数的特殊 AWS 值调用 advertise-byoip-cidr。您可以随时换回 Amazon ASN，但每小时只能更改为自定义 ASN 一次。

     ```
     aws ec2 advertise-byoip-cidr --asn AWS --cidr xxx.xxx.xxx.xxx/n 
     ```
   + 要同时撤回您的 CIDR 和 ASN 广告，你可以调用 withdraw-byoip-cidr。

     ```
     aws ec2 withdraw-byoip-cidr --cidr xxx.xxx.xxx.xxx/n
     ```

1. 要清理您的 ASN，您必须先取消其与 BYOIP CIDR 的关联。

   ```
   aws ec2 disassociate-ipam-byoasn --asn 12345 --cidr xxx.xxx.xxx.xxx/n
   ```

1. 您的 ASN 与已关联的所有 BYOIP CIDR 取消关联后，就可以取消其预置。

   ```
   aws ec2 deprovision-ipam-byoasn --ipam-id $ipam_id --asn 12345 
   ```

1. 删除所有 ASN 关联后，也可以取消预置 BYOIP CIDR。

   ```
   aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-1234567890abcdef0 --cidr xxx.xxx.xxx.xxx/n
   ```

1. 确认取消预置。

   ```
   aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-1234567890abcdef0
   ```

清理已完成。

------