如何排查 VPC 中的常见 BYOIP 配置错误?
上次更新日期:2022 年 4 月 5 日
我正在尝试为我的 Amazon Virtual Private Cloud (Amazon VPC) 配置自带 IP (BYOIP)。如何排查常见错误?
简短描述
以下是在 VPC 中配置 BYOIP 时可能遇到的常见错误:
- 给定 CIDR 和 Amazon ASN 的路由源授权 (ROA) 无效或者找不到。
- 在 WHOIS 备注中找不到 X509 证书。
- IP 范围不是关联的互联网注册表中的可接受分配类型。
- 无法使用区域互联网注册管理机构 (RIR) 记录中的 X509 证书验证 CidrAuthorizationContext 签名。
- 您的 IP 地址卡滞在 待预置状态。
解决方法
错误:给定 CIDR 和 Amazon ASN 的 ROA 无效或找不到。
创建 ROA 以授权 Amazon ASN 16509 和 14618 播发您的地址范围。ROA 可能需要 24 小时才能让 ASN 对 Amazon 可用。
要确认 ROA 创建和 ASN 映射,请使用 WHOIS:
$ whois -h whois.bgpmon.net " --roa 16509 <Customer IP/CIDR> "
$ whois -h whois.bgpmon.net " --roa 14618 <Customer IP/CIDR> "
有效输出示例:
$ whois -h whois.example.com " --roa 14618 X.X.X.X/24"
0 - Valid
------------------------
ROA Details
------------------------
Origin ASN: AS14618
Not valid Before: 2019-02-20 05:00:00
Not valid After: 2020-02-20 05:00:00 Expires in 266d11h4m39s
Trust Anchor: rpki.arin.net
Prefixes: X.X.X.X/24 (max length /24)
无效输出示例:
$ whois -h whois.example.com " --roa 14618 X.X.X.X/24"
2 - Not Valid: Invalid Origin ASN, expected 16509
要避免此错误,请执行以下操作:
- ROA 必须在使用期内对两个 ASN 都有效,并且必须特定于您要带入 AWS 的地址范围。有关更多信息,请参阅 自带 IP (BYOIP) 简介中的准备 IP 地址范围部分。
- 在创建 ROA 之后先等待 24 小时,然后再重新预置。
错误:在 WHOIS 备注中找不到 X509 证书
出现此错误的常见原因包括以下几种:
- RIR 的 RDAP 记录中未提供证书。
- 证书中包含新行字符。
- 提供的证书无效。
- 证书不是从有效的密钥对生成的。
请确保正确创建和上传证书。有关更多信息,请参阅创建用于 AWS 身份验证的密钥对。
要排查此错误,请验证上传的证书是否有效。您可以使用 WHOIS 查看 RIR 中网络范围记录。
对于 ARIN:
whois -a <Public IP>
请检查 NetRange(网络范围)中的 Comments(注释)部分。请确保已在地址范围的 Public Comments(公共注释)部分添加此证书。
对于 RIPE:
whois -r <Public IP>
请检查 WHOIS 显示中的 inetnum对象(网络范围)的 descr(描述)部分。请确保已在地址范围的 desc(描述)字段中添加此证书。
对于 APNIC:
whois -A <Public IP>
请检查 WHOIS 显示中的 inetnum 对象(网络范围)的 remarks(备注)部分。请确保证书位于地址范围的 remarks(备注)字段中。
完成上述检查后,请执行以下操作:
1. 如果没有证书,请创建新的证书,然后按照“解决办法”部分中概述的建议上传证书。
2. 如果已有证书,请确保没有新行。如果有任何新行,请按照以下例所示将其移除:
openssl req -new -x509 -key private.key -days 365 | tr -d "\n" > publickey.cer
3. 验证提供的证书是否有效。要执行此操作,请将证书内容复制到新文件中,然后运行以下命令:
openssl x509 -in example.crt -text -noout
如果收到 unable to load certificate(无法上传证书)错误,请在 BEGIN CERTIFICATE 后面添加新行,然后在 END CERTIFICATE 之前添加另一个新行。
4. 如果以上解决方案都不起作用,则证书是使用不正确的密钥对生成的。
错误:IP 范围不是关联的互联网注册表中的可接受分配类型
出现此错误的可能原因包括以下几种:
- 地址范围的 RIR 分配类型错误。
- 注册表不受支持。
包括以下五种区域互联网注册管理机构 (RIR) - AFRINIC、ARIN、APNIC、LACNIC 和 RIPE。AWS 支持 ARIN、RIPE 和 APNIC 注册的前缀。
要验证 RIR,请使用 WHOIS:
whois <public ip>
对于 RIPE:请验证 Status 为 ALLOCATED PA、LEGACY 或 ASSIGNED PI。
对于 ARIN:请验证 NetType 为 Direct Allocation 或 Direct Assignment。
对于 APNIC:请验证 Status 为 ALLOCATED PORTABLE 或 ASSIGNED PORTABLE。
注意:有些注释可能会指出 Addresses within this block are non-portable(此数据块内的地址不可移植)。此注释是 RIR 无法预置该地址范围的额外确认。
出现上述错误的原因如下:
- Status(对于 RIPE 和 APNIC)或者 NetType(对于 ARIN)不是以上任意一种。
- 注册表不受支持。
错误:无法使用 RIR 记录中的 X509 证书验证 CidrAuthorizationContext 签名
预置地址范围时,AWS 使用来证书衍生而来的公共密钥来验证 aws ec2 provision-byoip-cidr API 调用中的签名。此错误指示无法以加密方式验证提供的签名。
以下是发生此错误的常见原因:
- 预置时未使用正确的签名。
- 使用错误的私有密钥签署了消息。
- 使用 RIR 将错误的证书上传到了 RDAP 记录中
错误:卡滞在“pending-provision”(待预置)状态
为可公共播发的范围完成预置流程可能需要一周时间。使用 describe-byoip-cidrs 命令监控进度,如以下示例所示:
aws ec2 describe-byoip-cidrs --max-results 5 --region us-east-1
如果状态更改为 failed-provision,则您必须在问题解决之后再次运行 provision-byoip-cidr 命令。
有关更多信息,请参阅在 AWS 中预置公共播发的地址范围。