如何解决我的 VPC 中的 BYOIP 配置错误?
我想解决在为我的 Amazon Virtual Private Cloud (Amazon VPC) 配置自带 IP (BYOIP) 时遇到的错误。
简短描述
注意: 如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 Troubleshooting errors for the AWS CLI(AWS CLI 错误故障排除)。此外,请确保您使用的是最新版本的 AWS CLI。
当您在 VPC 中配置 BYOIP 时,会出现以下问题:
- 您的无类别域间路由 (CIDR) 块和 Amazon 自治系统编号 (ASN) 的路由源授权 (ROA) 无效或不存在。
- WHOIS 备注中没有 X.509 证书。
- 您的 IP 地址范围在其关联的互联网注册表中未使用可接受的分配类型。
- AWS 无法使用区域互联网注册管理机构 (RIR) 记录中的 X.509 证书验证 CidrAuthorizationContext 签名。
- 您的 IP 地址停滞在 pending-provision(待预配)状态。
有关参阅信息,请参阅 Bring your own IP addresses (BYOIP) to Amazon Elastic Compute Cloud (Amazon EC2)(自带 IP 地址 (BYOIP) 到 Amazon Elastic Compute Cloud (Amazon EC2)),以及 Amazon VPC 常见问题解答中的自带 IP部分。
要解决 BYOIP 配置问题,请根据遇到的错误完成以下操作。
解决方法
对您的 CIDR 数据块和 Amazon ASN 的无效或未找到的 ROA 进行故障排除
创建 ROA 以授权 Amazon ASN 16509 和 14618 播发您的地址范围。有关详细信息,请参阅: 在 RIR 中创建 ROA 对象。
重要事项: 您的 ROA 必须满足以下 BYOIP 要求:
- 检查您的 ROA 在使用期间是否对两个 ASN 都有效。
- 您的 ROA 必须特定于您带入 AWS 的地址范围。
- 对于 IPv4,ROA 必须包含您要带入 AWS 的地址范围,并且必须将最大长度设置为 /24。对于 IPv6,对可公开播发的 CIDR 范围,可自带的最具体范围是 /48,对不可公开播发的 CIDR 范围,可自带的最具体范围是 /60。
重要事项: 如果您必须为 Amazon VPC IP 地址管理器 (IPAM) 创建 ROA 对象,请将最大 IPv4 前缀长度设置为 /24。如果您必须将 IPv6 CIDR 范围添加到可播发池,请将 IP 地址前缀的最大长度设置为 /48。有关 IPAM 的 BYOIP 地址的详细信息,请参阅 Tutorial: Bring your IP addresses to IPAM(教程:将您的 IP 地址带入 IPAM)。
有关创建 ROA 请求的详细信息,请参阅以下资源,具体取决于您注册 IP 地址范围的位置:
- ARIN: Route Origin Authorization (ROA) Overview(路由源授权 (ROA) 概述)
- RIPE: Using the Hosted Certification Authority(使用托管证书颁发机构)
- APNIC: Route Management(路由管理)
重要事项: AWS 仅支持您在 ARIN、RIPE 或 APNIC 中注册的前缀。
ROA 最多需要 24 小时才能将 ASN 提供给 Amazon。创建 ROA 后等待 24 小时,然后再取消预配和重新预配地址范围。
在浏览器或 AWS CLI 中使用 Routinator 来确认您已创建 ROA 并将其映射到您的 ASN。有关详细信息,请参阅 Routinator 官方网站上的 Routinator。
在浏览器中输入以下 URL:
https://rpki-validator.ripe.net/json?select-prefix=example-public-IP/example-prefix-length
-或-
在 AWS CLI 中运行以下命令:
curl https://rpki-validator.ripe.net/json?select-prefix=example-public-IP/example-prefix-length
注意: 在前面的示例中,将 example-public-IP/example-prefix-length 替换为您的地址范围。
以下 AWS CLI 输出示例对 ASN AS13335 和 IP 地址 1.1.1.0/24 有效:
{ "metadata": { "generated": 1770933536, "generatedTime": "2026-02-12T21:58:56Z" }, "roas": [ { "asn": "AS**13335**", "prefix": "**1.1.1.0/24**", "maxLength": 24, "ta": "apnic" } ], "routerKeys": [], "aspas": [] }
以下输出示例无效:
{ "metadata": { "generated": 1685008305, "generatedTime": "2023-05-25T09:51:45Z" }, "roas": [] }
如果您的输出无效,请检查您的 ROA 是否符合先前的要求。
对 WHOIS 备注中未包含的 X.509 证书进行故障排除
以下问题会导致 X.509 自签名证书无效:
- RIR 的注册数据访问协议 (RDAP) 记录中没有证书。
- 证书中有换行符。
- 证书无效。
- 您没有使用有效的密钥对生成证书。
重要事项: 设置 BYOIP 时,必须正确创建和上传您的 X.509。
根据您注册证书时使用的注册表验证您的证书是否有效,然后对错误进行故障排除。
对于 ARIN、RIPE 和 APNIC
要验证您注册的证书是否有效,请运行以下 WHOIS 命令之一:
whois -h whois.example-RIR.net example-public-IP
-或-
whois -h whois.example-RIR.net example-address-range
注意: 将 example-public-IP 替换为您的 IP 地址。在 CIDR 通知中,将 example-public-IP/example-address-range 替换为您的地址范围。将 whois.example-RIR.net 替换为您使用的 RIR 的主机名。
根据您的 RIR 对结果进行以下检查:
- 对于 ARIN: 检查命令输出中 NetRange(网络范围)的 Public Comments(公共注释)部分。确认证书位于您的地址范围的 Public Comments(公共注释)部分。
- 对于 APNIC: 检查命令输出中 inetnum 对象(网络范围)的 remarks(备注)部分。确认证书位于您的地址范围的 remarks(备注)字段中。
- 对于 RIPE: 检查命令输出中 inetnum 对象(网络范围)的 descr(描述)部分。确认证书位于您的地址范围的 descr(描述)字段中。
对错误进行故障排除
完成检查后,请完成以下步骤:
-
如果没有证书,请创建并上传一个新证书。
-或-
如果有证书,请确保其中不包含任何新行。如果有新行,请删除这些行。以下证书示例不包含任何新行:openssl req -new -x509 -key private-key.pem -days 365 | tr -d "\n" > certificate.pem -
将证书内容复制到新文件中,然后运行以下命令验证证书是否有效:
openssl x509 -in certificate.pem -text -noout
注意: 如果您收到“unable to load certificate”或“Could not find certificate”错误,请在 BEGIN CERTIFICATE 之后和 END CERTIFICATE 之前添加一个新行。
如果您仍然收到错误,则说明您使用了不正确的密钥对来生成证书。创建并上传新的 X.509 证书。
在关联的互联网注册表中,对不是可接受分配类型的 IP 范围进行故障排除
以下问题可能会导致此错误:
- 地址范围的 RIR 分配类型错误。
- AWS 不支持注册表。
运行以下 WHOIS 命令之一:
whois -h whois.iana.org example-public-IP
-或-
whois -h whois.iana.org example-public-IP/example-prefix-length
注意: 将 example-public-IP 替换为您的 IP 地址。在 CIDR 通知中,将 example-public-IP/example-address-range 替换为您的地址范围。
在输出中,查看 organization(组织)部分,并检查 AWS 是否支持您的注册表。确保您已在 RIR 的 inetnum 部分注册地址范围。
解决“The CidrAuthorizationContext signature can't be verified with the X509 certificates in the RIR records”错误
当您预配地址范围时,AWS 必须验证 API 调用的签名。AWS 使用从证书中派生的公钥来验证 provision-byoip-cidr API 操作中的签名。此错误表明 AWS 无法验证签名。
以下问题可能会导致此错误:
- 当您进行预配时,您使用的签名不正确。
- 您用错误的私钥签署了消息。
- 您将错误的证书上传到了 RIR 的 RDAP 记录中。
要解决此错误,请创建并上传新的 X.509 证书。
对停滞在 pending-provision(待预配)状态的 IP 地址进行故障排除
完成可公开播发范围的预配过程最多需要一周时间。
运行 describe-byoip-cidrs AWS CLI 命令来监控您的进度:
aws ec2 describe-byoip-cidrs --max-items example-value --region example-region
注意: 将 example-value 替换为必须在命令输出中看到的项目总数。将 example-region 替换为您的 AWS 区域。
如果状态更改为 failed-provision(预配失败),请验证您是否已正确撰写并签署授权消息。然后,再次运行 provision-byoip-cidr 命令。有关详细信息,请参阅 Provision a publicly advertisable address range in AWS(在 AWS 中预配可公开播发的地址范围)。
- 语言
- 中文 (简体)

This article was reviewed and updated on 2026-03-03.