在 Amazon EC2 中使用自有 IP 地址 (BYOIP) - Amazon Elastic Compute Cloud

在 Amazon EC2 中使用自有 IP 地址 (BYOIP)

您可以將現場部署網路的一部分或全部公有 IPv4 位址範圍或 IPv6 位址範圍用於您的 AWS 帳戶。依預設您仍擁有自己的位址範圍,但 AWS 會在網際網路上公告。在您將地址範圍用於 AWS 之後,該地址範圍就會顯示為您帳戶的地址集區。

並非所有區域皆可使用 BYOIP,且並非可供所有資源使用。如需支援的區域和資源清單,請參閱使用自有 IP 的常見問答集

注意

下列步驟說明如何使用您自己的 IP 位址範圍僅供在 Amazon EC2 中使用。如需將您自己的 IP 位址範圍用於中的步驟 AWS Global Accelerator,請參閱 AWS Global Accelerator 開發人員指南中的使用自有 IP 地址 (BYOIP)

需求

  • 您必須向您的區域網際網路註冊管理機構 (RIR) 註冊地址範圍 (例如,美洲網際網路號碼註冊管理機構 (ARIN) 或歐洲 IP 網路資源協調中心 (RIPE)) 或亞太區域資訊中心 (APNIC)。它必須以商業或機構實體註冊,而無法以個人身分註冊。

  • 您可以使用的最特定 IPv4 位址範圍是 /24。

  • 針對公開公告的 CIDR,您可以使用的最特定 IPv6 位址範圍是 /48,而針對未公開公告的 CIDR,則是 /56。

  • 您可以逐一將每個地址範圍新增至一個區域。

  • 針對您 AWS 帳戶的每個區域,您可以使用總計五個 IPv4 和 IPv6 位址範圍。

  • IP 地址範圍中的地址都必須有良好的歷史記錄。我們會調查 IP 位址範圍的評價,如果 IP 位址範圍包含的 IP 位址評價不佳或與惡意行為有關,我們保留拒絕該範圍的權利。

  • 您必須擁有您使用的 IP 地址。這表示只支援下列項目:

    • ARIN -「直接配置」和「直接指派」網路類型

    • RIPE -「ALLOCATED PA」、「LEGACY」、「ASSIGNED PI」和「ALLOCATED-BY-RIR」配置狀態

    • APNIC – "ALLOCATED PORTABLE" 及 "ASSIGNED PORTABLE" 配置狀態

準備將您的地址範圍用於 AWS 帳戶

為了確保只有您可以將您的地址範圍用於 AWS 帳戶,您必須授權 Amazon 公告該地址範圍。您也必須透過簽署的驗證訊息驗證您確實擁有該地址範圍。

路由來源授權 (ROA) 是關於您路由公告的密碼編譯陳述式,表示您可以透過 RIR 建立。它包含地址範圍、允許公告該地址範圍的自發系統編號 (ASN) 和過期日期。ROA 授權 Amazon 公告特定 AS 號碼下的地址範圍。不過,它並未授權您的 AWS 帳戶將該地址範圍用於 AWS。若要授權您的 AWS 帳戶將地址範圍用於 AWS,您必須在該地址範圍的註冊資料存取通訊協定 (RDAP) 備註中發佈自簽 X509 憑證。該憑證包含公有金鑰,可讓 AWS 用來驗證您提供的授權內容簽章。保護私有金鑰的安全,並使用它來簽署授權內容的訊息。

Linux 支援這些任務中的命令。如為 Windows,可以使用適用於 Linux 的 Windows 子系統執行 Linux 命令。

建立 ROA 物件

建立 ROA 物件來授權 Amazon ASN 16509 和 14618 宣傳您的地址範圍,加上目前獲授權宣傳地址範圍的 ASN。您必須設定您要使用的最小字首大小的長度上限 (例如 /24)。可能最多需要 24 小時 Amazon 才能使用 ROA。如需詳細資訊,請參閱下列內容:

建立自簽 X509 憑證

使用以下程序建立自簽 X509 憑證,並將其加入到您 RIR 的 RDAP 記錄中。openssl 命令需要 OpenSSL 1.0.2 版或更新版本。

複製下列命令,並只取代預留位置值 (以彩色斜體文字表示)。

建立自簽 X509 憑證,並將其加入到 RDAP 記錄

  1. 產生 RSA 2048 位元金鑰對,如下所示。

    openssl genrsa -out private.key 2048
  2. 使用下列命令,從金鑰對中建立公開 X509 憑證。在此範例中,憑證會在 365 天後過期;在這段時間之後,就無法再信任此憑證。務必設定適當的過期期限。當提示您輸入資訊時,您可以接受預設值。

    openssl req -new -x509 -key private.key -days 365 | tr -d "\n" > publickey.cer
  3. 使用 X509 憑證更新您 RIR 的 RDAP 記錄。請務必複製憑證的 -----BEGIN CERTIFICATE----------END CERTIFICATE-----。如果您尚未移除換行字元,請在下列步驟中使用 tr -d "\n" 命令以進行此作業。若要查看您的憑證,請執行下列命令。

    cat publickey.cer

    若是 ARIN,請將憑證新增至地址範圍的 Public Comments (公有評論) 區段。請勿將其新增至您組織的評論區段。

    若是 RIPE,請將憑證新增為地址範圍的新 "desc" 欄位。請勿將其新增至您組織的評論區段。

    對於 APNIC,請透過電子郵件將公開金鑰傳送至 helpdesk@apnic.net,以手動將之新增到位址範圍的 "remarks" 欄位。使用 IP 位址的 APNIC 授權聯絡人船送電子郵件。

建立已簽署的授權訊息

簽屬的授權訊息格式如下所示,其中的日期是訊息的過期日期。

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

如何建立已簽署的授權訊息

  1. 建立純文字的授權訊息,並將其儲存到名為 text_message 的變數中,如以下範例所示。複製下列範例,並使用您自己的值只取代範例中的帳戶號碼、地址範圍和到期日。

    text_message="1|aws|123456789012|198.51.100.0/24|20191201|SHA256|RSAPSS"
  2. 使用您建立的金鑰對來簽署 text_message 中的授權訊息,並將其儲存在名為 signed_message 的變數中。

    signed_message=$(echo $text_message | 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")
    重要

    建議您複製並貼上此命令。請勿修改或取代任何值。

佈建地址範圍以用於 AWS

當您佈建地址範圍以用於 AWS 時,即已確認您擁有該地址範圍並授權 Amazon 公告。我們也會透過簽署的驗證訊息驗證您確實擁有該地址範圍。此訊息已用您使用 X509 憑證更新 RDAP 記錄時所用的自我簽署 X509 金鑰對簽署。

若要佈建地址範圍,請使用下列 provision-byoip-cidr 命令。以您自己的地址範圍取代範例中的地址範圍。--cidr-authorization-context 選項會使用您先前建立的變數,而非 ROA 訊息。

aws ec2 provision-byoip-cidr --cidr address-range --cidr-authorization-context Message="$text_message",Signature="$signed_message"

佈建地址範圍是一種非同步操作;系統會立即傳回呼叫,但地址範圍要等到其狀態從 pending-provision 變更為 provisioned 時,才能開始使用。完成佈建程序最長需要三週。若要監控所佈建地址範圍的狀態,請使用下列 describe-byoip-cidrs 命令。

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

如果在佈建期間發生問題且狀態變成 failed-provision,您必須在問題解決後再次執行 provision-byoip-cidr 命令。

佈建未公開公告的 IPv6 位址範圍

根據預設,會向網際網路公開公告所佈建的位址範圍。您可以佈建不會公開公告的 IPv6 位址範圍。當您將來自非公用位址範圍的 IPv6 CIDR 區塊與 VPC 產生關聯時,只能透過 AWS Direct Connect 連線存取該 IPv6 CIDR。

佈建非公用位址範圍不需要 ROA。

若要佈建不會公開公告的 IPv6 位址範圍,請使用下列 provision-byoip-cidr 命令。

aws ec2 provision-byoip-cidr --cidr address-range --cidr-authorization-context Message="$text_message",Signature="$signed_message" --no-publicly-advertisable
重要

您只能在佈建期間設定 publicly-advertisableno-publicly-advertisable 旗標。您無法之後變更位址範圍的可公告狀態。

透過 AWS 公告地址範圍

佈建好地址範圍之後,即可將其公告。佈建好地址範圍之後,您必須公布。對於已經佈建好的地址範圍,您不能必須只公布一部分。

如果您佈建了不會公開公告的 IPv6 位址範圍,則不需要完成此步驟。

建議您先停止從其他位置公告地址範圍,之後再透過 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 命令。

使用您的位址範圍

您可以檢視和使用已在帳戶中佈建的 IPv4 和 IPv6 位址範圍。

IPv4 位址範圍

您可以從您的 IPv4 位址集區建立彈性 IP 位址,並將它用於您的 AWS 資源 (例如 EC2 執行個體)、NAT 閘道和網路負載平衡器。

若要檢視您在帳戶中佈建之 IPv4 位址集區的相關資訊,請使用下列 describe-public-ipv4-pools 命令。

aws ec2 describe-public-ipv4-pools

若要從您的 IPv4 位址集區建立彈性 IP 位址,請使用 allocate-address 命令。您可以使用 --public-ipv4-pool 選項來指定 describe-byoip-cidrs 傳回的位址集區 ID。或者,您可以使用 --address 選項來指定您佈建的位址範圍。

IPv6 位址範圍

若要檢視您在帳戶中佈建之 IPv6 位址集區的相關資訊,請使用下列 describe-ipv6-pools 命令。

aws ec2 describe-ipv6-pools

若要建立 VPC 並指定來自 IPv6 位址集區的 IPv6 CIDR,請使用下列 create-vpc 命令。若要讓 Amazon 從您的 IPv6 位址集區中選擇 IPv6 CIDR,請省略 --ipv6-cidr-block 選項。

aws ec2 create-vpc --cidr-block 10.0.0.0/16 --ipv6-cidr-block ipv6-cidr --ipv6-pool pool-id

若要將來自您的 IPv6 位址集區的 IPv6 CIDR 區塊與 VPC 建立關聯,請使用下列 associate-vpc-cidr-block 命令。若要讓 Amazon 從您的 IPv6 位址集區中選擇 IPv6 CIDR,請省略 --ipv6-cidr-block 選項。

aws ec2 associate-vpc-cidr-block --vpc-id vpc-123456789abc123ab --ipv6-cidr-block ipv6-cidr --ipv6-pool pool-id

若要檢視您的 VPC 和相關聯的 IPv6 位址集區資訊,請使用 describe-vpcs 命令。若要檢視來自特定 IPv6 位址集區的關聯 IPv6 CIDR 區塊的相關資訊,請使用下列取得 get-associated-ipv6-pool-cidrs 命令。

aws ec2 get-associated-ipv6-pool-cidrs --pool-id pool-id

如果您取消 IPv6 CIDR 區塊與 VPC 的關聯,即會將它釋出回您的 IPv6 位址集區中。

如需有關在 VPC 主控台中使用 IPv6 CIDR 區塊的詳細資訊,請參閱《Amazon VPC 使用者指南》中的使用 VPC 和子網路

解除佈建地址範圍

若要停止對 AWS 使用您的位址範圍,請先釋出任何彈性 IP 位址,並將仍從位址集區配置的任何 IPv6 CIDR 區塊取消關聯。然後停止公告位址範圍,最後取消佈建位址範圍。

您無法取消佈建一部分的位址範圍。如果想要對 AWS 使用更特定的位址範圍,請取消佈建整個位址範圍,並佈建更特定的位址範圍。

(IPv4) 若要釋出每個彈性 IP 位址,請使用下列 release-address 命令。

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

(IPv6) 若要解除 IPv6 CIDR 區塊的關聯,請使用下列 disassociate-vpc-cidr-block 命令。

aws ec2 disassociate-vpc-cidr-block --association-id vpc-cidr-assoc-12345abcd1234abc1

若要停止公告地址範圍,請使用下列 withdraw-byoip-cidr 命令。

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

若要解除佈建地址範圍,請使用下列 deprovision-byoip-cidr 命令。

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

取消佈建位址範圍最多可能需要一天的時間。