Amazon Elastic Compute Cloud
用户指南(适用于 Linux 实例)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

自带 IP 地址 (BYOIP)

您可将自己的全部或部分公有 IPv4 地址从本地网络引入到 AWS 账户中。您将继续拥有地址范围,但 AWS 会将其公布在 Internet 上。在将地址范围引入 AWS 中之后,它会在您的账户中显示为地址池。您可从地址池创建弹性 IP 地址,并将其用于您的 AWS 资源,如 EC2 实例、NAT 网关和 Network Load Balancer。

重要

BYOIP 并非在所有区域中都可用。有关受支持区域的列表,请参阅自带 IP 常见问题

要求

  • 地址范围必须使用区域 Internet 注册表 (RIR)(如 American Registry for Internet Numbers (ARIN) 或 Réseaux IP Européens Network Coordination Centre (RIPE))进行注册。它必须注册到企业或机构实体,而不能注册到个人。

  • 对于 ARIN,受支持的网络类型为“Direct Allocation”和“Direct Allocation”。

  • 对于 RIPE,受支持的分配状态为“ALLOCATED PA”、“LEGACY”和“ASSIGNED PI”。

  • 您可指定的最具体的地址范围为 /24。

  • 您可以一次性将每个地址范围引入一个区域中。

  • 您可将每个区域的 5 个地址范围引入您的 AWS 账户中。

  • IP 地址范围中的地址必须具有干净的历史记录。我们可能会调查 IP 地址范围的声誉,并保留在其中的某一 IP 地址具有不良声誉或与恶意行为关联的情况下拒绝 IP 地址范围的权利。

准备将您的地址范围引入您的 AWS 账户

为确保只有您可以将地址范围引入 AWS 账户,您必须授权 Amazon 公布该地址范围并提供您拥有该地址范围的证据。

路由来源授权 (ROA) 是您可以通过 RIR 创建的文档。它包含地址范围、允许公布地址范围的 ASN 及到期日期。ROA 授权 Amazon 以特定的 AS 编号公布地址范围。但是,它不会授权您的 AWS 账户将地址范围引入 AWS。要授权您的 AWS 账户将地址范围引入 AWS,您必须在该地址范围的 RDAP 备注中发布自签名 X509 证书。该证书包含一个公有密钥,AWS 使用该密钥验证您所提供的授权上下文签名。您应确保您的私有密钥的安全,并使用该密钥来对授权上下文消息进行签名。

以下过程中的命令需要 OpenSSL 1.0.2 版或更高版本。

准备将您的地址范围引入您的 AWS 账户

  1. 创建一个 ROA 以授权 Amazon ASN 16509 和 14618 公布您的地址范围。您必须将最大长度设置为要引入的最小前缀的大小(例如 /24)。若要 ROA 可用于 Amazon,可能需要多达 24 小时的时间。有关更多信息,请参阅下列内容:

  2. 按如下所示生成 RSA 2048 位密钥对:

    openssl genrsa -out private.key 2048
  3. 使用以下命令从该密钥对创建一个公有 X509 证书。在此示例中,该证书在 365 天后过期,在此日期后它将不能是受信任的。因此,请务必相应地设置到期时间。当系统提示您提供信息时,输入默认值。

    openssl req -new -x509 -key private.key -days 365 | tr -d "\n" > publickey.cer
  4. 创建已签名的消息。该消息的格式如下所示,其中日期是该消息的到期日期:

    1|aws|account|cidr|YYYYMMDD|SHA256|RSAPSS

    以下命令使用您所创建的密钥对对消息进行签名,并将其保存为 base64_urlsafe_signature

    echo "1|aws|123456789012|198.51.100.0/24|20191201|SHA256|RSAPSS" | tr -d "\n" | openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -sign private.key -keyform PEM | openssl base64 | tr -- '+=/' '-_~' | tr -d "\n" > base64_urlsafe_signature
  5. 使用 X509 证书更新 RIR 的 RDAP 记录。请务必复制该证书中的 -----BEGIN CERTIFICATE----------END CERTIFICATE-----。请务必事先在上述步骤中使用 tr -d "\n" 命令删除换行符(如果尚未这样做的话)。要查看您的证书,请运行以下命令:

    cat publickey.cer

    对于 ARIN,在地址范围的“Public Comments (公共注释)”部分中添加证书。

    对于 RIPE,将证书添加为地址范围的“描述”字段。

预配置地址范围以用于 AWS

在预配置地址范围以用于 AWS 时,您将确认您拥有该地址范围并授权 Amazon 公布它。我们还将验证您拥有该地址范围。

要预配置地址范围,请使用以下 provision-byoip-cidr 命令。--cidr-authorization-context 参数中的消息是上一节中创建的已签名消息,而不是 ROA 消息。

aws ec2 provision-byoip-cidr --cidr address-range --cidr-authorization-context Message="message",Signature="signature"

预配置地址范围是一项异步操作,因此该调用会立即返回,但地址范围未准备就绪,直到其状态从 pending-provision 更改为 provisioned 才可供使用。要监控地址范围的状态,请使用以下 describe-byoip-cidrs 命令:

aws ec2 describe-byoip-cidrs --max-results 5

通过 AWS 公布地址范围

预配置地址范围后,即可对其进行公布。您必须公布预配置的确切地址范围。您不能只公布预配置的地址范围的一部分。

在通过 AWS 对地址范围进行发布之前,我们建议您停止从其他位置公布它。如果您一直从其他位置公布 IP 地址范围,我们将无法可靠地为其提供支持或解决问题。具体来说,我们无法保证到地址范围的流量将进入我们的网络。

为最大限度地减少停机时间,您可以在公布之前将 AWS 资源配置为使用地址池中的某一地址,然后停止从当前位置公布该地址并同时开始通过 AWS 公布该地址。有关从地址池分配弹性 IP 地址的更多信息,请参阅分配弹性 IP 地址

要公布地址范围,请使用以下 advertise-byoip-cidr 命令:

aws ec2 advertise-byoip-cidr --cidr address-range

重要

您最多只能每 10 秒运行一次 advertise-byoip-cidr 命令,即使每次指定不同的地址范围也是如此。

要停止公布地址范围,请使用以下 withdraw-byoip-cidr 命令:

aws ec2 withdraw-byoip-cidr --cidr address-range

重要

您最多只能每 10 秒运行一次 withdraw-byoip-cidr 命令,即使每次指定不同的地址范围也是如此。

取消预配置地址范围

要停止对 AWS 使用地址范围,请释放仍从地址池分配的所有弹性 IP 地址,停止公布地址范围,然后取消预配置地址范围。

要释放每个弹性 IP 地址,请使用以下 release-address 命令:

aws ec2 release-address --allocation-id eipalloc-12345678

要停止公布地址范围,请使用以下 withdraw-byoip-cidr 命令:

aws ec2 withdraw-byoip-cidr --cidr address-range

要取消预配置地址范围,请使用以下 deprovision-byoip-cidr 命令:

aws ec2 deprovision-byoip-cidr --cidr address-range