如何排查 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:请验证 StatusALLOCATED PALEGACYASSIGNED PI

对于 ARIN:请验证 NetTypeDirect AllocationDirect Assignment

对于 APNIC:请验证 StatusALLOCATED PORTABLEASSIGNED 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 中预置公共播发的地址范围


这篇文章对您有帮助吗?


您是否需要账单或技术支持?