

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 加入您的位址範圍以用於 Amazon EC2
<a name="byoip-onboard"></a>

依據您的需求，BYOIP 的加入程序包括下列任務：

**Topics**
+ [在 中佈建可公開公告的地址範圍 AWS](#byoip-provision)
+ [佈建不可公開公告的 IPv6 地址範圍](#byoip-provision-non-public)
+ [透過 公告地址範圍 AWS](#byoip-advertise)
+ [解除佈建地址範圍](#byoip-deprovision)
+ [驗證您的 BYOIP](#byoip-validation)

## 在 中佈建可公開公告的地址範圍 AWS
<a name="byoip-provision"></a>

當您佈建地址範圍以搭配 使用時 AWS，即表示您確認控制地址範圍，並授權 Amazon 公告該地址範圍。我們也會透過簽署的授權訊息驗證您確實控制該地址範圍。此訊息是以您使用 X.509 憑證更新 RDAP 記錄時使用的自我簽署 X.509 金鑰對簽署。 AWS 需要密碼編譯簽署的授權訊息，其會呈現給 RIR。RIR 會根據新增至 RDAP 的憑證來驗證簽章，並根據 ROA 檢查授權詳細資訊。

**佈建地址範圍**

1. 

**編寫訊息**

   撰寫純文字授權訊息。訊息格式如下所示，其中的日期是訊息的過期日期：

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

   用您自己的值取代帳戶號碼、地址範圍和到期日，建立類似下列內容的訊息：

   ```
   text_message="1|aws|0123456789AB|198.51.100.0/24|20211231|SHA256|RSAPSS"
   ```

   這不能與具有類似特征的 ROA 訊息混淆。

1. 

**簽署訊息**

   使用您先前建立的私有金鑰來簽署純文字訊息。此命令傳回的簽章是一個長字串，您需要在下一個步驟中使用它。
**重要**  
建議您複製並貼上此命令。除訊息內容外，請勿修改或取代任何值。

   ```
   signed_message=$( echo -n $text_message | openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -sign private-key.pem -keyform PEM | openssl base64 | tr -- '+=/' '-_~' | tr -d "\n")
   ```

1. 

**佈建地址**

   使用 AWS CLI [provision-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/provision-byoip-cidr.html) 命令來佈建地址範圍。`--cidr-authorization-context` 選項會使用您先前建立的訊息和簽章字串。
**重要**  
如果 BYOIP AWS 範圍與[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 不同，您必須指定應佈建的區域`Default region name`。

   ```
   aws ec2 provision-byoip-cidr --cidr address-range --cidr-authorization-context Message="$text_message",Signature="$signed_message" --region us-east-1
   ```

   佈建地址範圍是一種非同步操作；系統會立即傳回呼叫，但地址範圍要等到其狀態從 `pending-provision` 變更為 `provisioned` 時，才能開始使用。

1. 

**監控進度**

   雖然大多數佈建會在兩小時內完成，但公開公告範圍的佈建流程可能需要長達一週的時間才能完成。使用 [describe-byoip-cidrs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-byoip-cidrs.html) 命令監控進度，如下例所示：

   ```
   aws ec2 describe-byoip-cidrs --max-results 5 --region us-east-1
   ```

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

## 佈建不可公開公告的 IPv6 地址範圍
<a name="byoip-provision-non-public"></a>

根據預設，可向網際網路公開公告所佈建的地址範圍。您可以佈建不可公開公告的 IPv6 地址範圍。對於不可公開公告的路由，佈建程序通常會在幾分鐘內完成。當您將來自非公有地址範圍的 IPv6 CIDR 區塊與 VPC 產生關聯時，只能透過支援 IPv6 的混合連線選項存取該 IPv6，例如[Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)、[AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)，或 [Amazon VPC 傳輸閘道](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)

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

**重要**  
您只能指定在佈建期間可否公開公告地址範圍。您稍後無法變更可公告狀態。
Amazon VPC 不支援[唯一本機地址](https://en.wikipedia.org/wiki/Unique_local_address) (ULA) CIDR。所有 VPC 都必須具有唯一的 IPv6 CIDR。兩個 VPC 不能具有相同的 IPv6 CIDR 範圍。

若要佈建不可公開公告的 IPv6 地址範圍，請使用下列 [provision-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/provision-byoip-cidr.html) 命令。

```
aws ec2 provision-byoip-cidr --cidr address-range --cidr-authorization-context Message="$text_message",Signature="$signed_message" --no-publicly-advertisable --region us-east-1
```

## 透過 公告地址範圍 AWS
<a name="byoip-advertise"></a>

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

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

我們建議您先停止從其他位置公告地址範圍或範圍的任何部分，然後再公告地址範圍 AWS。如果您持續從其他位置公告您的 IP 位址範圍或其任何部分，我們就無法穩定地支援或疑難排解問題。具體來說，我們無法保證該位址範圍或其部分的流量可以進入我們的網路。

若要將停機時間降至最低，您可以將 AWS 資源設定為在公告地址集區之前使用地址集區中的地址，然後同時停止從目前位置公告該地址，並開始公告該地址集區 AWS。如需從您的地址集區配置彈性 IP 地址的詳細資訊，請參閱[配置彈性 IP 位址](working-with-eips.md#using-instance-addressing-eips-allocating)。

**限制**
+ 即使您每次都指定不同的地址範圍，最多仍只能每 10 秒執行一次 **advertise-byoip-cidr** 命令。
+ 即使您每次都指定不同的地址範圍，最多仍只能每 10 秒執行一次 **withdraw-byoip-cidr** 命令。

若要公告地址範圍，請使用下列 [advertise-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/advertise-byoip-cidr.html) 命令。

```
aws ec2 advertise-byoip-cidr --cidr address-range --region us-east-1
```

若要停止公告地址範圍，請使用下列 [withdraw-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/withdraw-byoip-cidr.html) 命令。

```
aws ec2 withdraw-byoip-cidr --cidr address-range --region us-east-1
```

## 解除佈建地址範圍
<a name="byoip-deprovision"></a>

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

您無法取消佈建一部分的位址範圍。如果您想要使用更具體的地址範圍 AWS，請取消佈建整個地址範圍，並佈建更具體的地址範圍。

(IPv4) 若要釋出每個彈性 IP 地址，請使用下列 [release-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/release-address.html) 命令。

```
aws ec2 release-address --allocation-id eipalloc-12345678abcabcabc --region us-east-1
```

(IPv6) 若要解除 IPv6 CIDR 區塊的關聯，請使用下列 [disassociate-vpc-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-vpc-cidr-block.html) 命令。

```
aws ec2 disassociate-vpc-cidr-block --association-id vpc-cidr-assoc-12345abcd1234abc1 --region us-east-1
```

若要停止公告地址範圍，請使用下列 [withdraw-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/withdraw-byoip-cidr.html) 命令。

```
aws ec2 withdraw-byoip-cidr --cidr address-range --region us-east-1
```

若要解除佈建地址範圍，請使用下列 [deprovision-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/deprovision-byoip-cidr.html) 命令。

```
aws ec2 deprovision-byoip-cidr --cidr address-range --region us-east-1
```

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

## 驗證您的 BYOIP
<a name="byoip-validation"></a>

1. 驗證自我簽署的 x.509 金鑰對

   透過 whois 命令，驗證憑證是否已上傳且有效。

   若為 ARIN，請使用 `whois -h whois.arin.net r + 2001:0DB8:6172::/48` 來查詢您地址範圍的 RDAP 記錄。檢查命令輸出中 `NetRange` (網路範圍)的 `Public Comments` 部分。該憑證應新增至地址範圍的 `Public Comments` 部分中。

   您可使用下列命令來檢查包含憑證的 `Public Comments`：

   ```
   whois -h whois.arin.net r + 2001:0DB8:6172::/48 | grep Comments | grep BEGIN
   ```

   此會傳回含有金鑰內容的輸出，應類似於下列內容：

   ```
   Public Comments:
   -----BEGIN CERTIFICATE-----
   MIID1zCCAr+gAwIBAgIUBkRPNSLrPqbRAFP8RDAHSP+I1TowDQYJKoZIhvcNAQE
   LBQAwezELMAkGA1UEBhMCTloxETAPBgNVBAgMCEF1Y2tsYW5kMREwDwYDVQQHDA
   hBdWNrbGFuZDEcMBoGA1UECgwTQW1hem9uIFdlYiBTZXJ2aWNlczETMBEGA1UEC
   wwKQllPSVAgRGVtbzETMBEGA1UEAwwKQllPSVAgRGVtbzAeFw0yMTEyMDcyMDI0
   NTRaFw0yMjEyMDcyMDI0NTRaMHsxCzAJBgNVBAYTAk5aMREwDwYDVQQIDAhBdWN
   rbGFuZDERMA8GA1UEBwwIQXVja2xhbmQxHDAaBgNVBAoME0FtYXpvbiBXZWIgU2
   VydmljZXMxEzARBgNVBAsMCkJZT0lQIERlbW8xEzARBgNVBAMMCkJZT0lQIERlb
   W8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfmacvDp0wZ0ceiXXc
   R/q27mHI/U5HKt7SST4X2eAqufR9wXkfNanAEskgAseyFypwEEQr4CJijI/5hp9
   prh+jsWHWwkFRoBRR9FBtwcU/45XDXLga7D3stsI5QesHVRwOaXUdprAnndaTug
   mDPkD0vrl475JWDSIm+PUxGWLy+60aBqiaZq35wU/x+wXlAqBXg4MZK2KoUu27k
   Yt2zhmy0S7Ky+oRfRJ9QbAiSu/RwhQbh5Mkp1ZnVIc7NqnhdeIW48QaYjhMlUEf
   xdaqYUinzz8KpjfADZ4Hvqj9jWZ/eXo/9b2rGlHWkJsbhr0VEUyAGu1bwkgcdww
   3A7NjOxQbAgMBAAGjUzBRMB0GA1UdDgQWBBStFyujN6SYBr2glHpGt0XGF7GbGT
   AfBgNVHSMEGDAWgBStFyujN6SYBr2glHpGt0XGF7GbGTAPBgNVHRMBAf8EBTADA
   QH/MA0GCSqGSIb3DQEBCwUAA4IBAQBX6nn6YLhz521lfyVfxY0t6o3410bQAeAF
   08ud+ICtmQ4IO4A4B7zV3zIVYr0clrOOaFyLxngwMYN0XY5tVhDQqk4/gmDNEKS
   Zy2QkX4Eg0YUWVzOyt6fPzjOvJLcsqc1hcF9wySL507XQz76Uk5cFypBOzbnk35
   UkWrzA9KK97cXckfIESgK/k1N4ecwxwG6VQ8mBGqVpPpey+dXpzzzv1iBKN/VY4
   ydjgH/LBfdTsVarmmy2vtWBxwrqkFvpdhSGCvRDl/qdO/GIDJi77dmZWkh/ic90
   MNk1f38gs1jrCj8lThoar17Uo9y/Q5qJIsoNPyQrJRzqFU9F3FBjiPJF
   -----END CERTIFICATE-----
   ```

   若為 RIPE，請使用 `whois -r -h whois.ripe.net 2001:0DB8:7269::/48` 來查詢您地址範圍的 RDAP 記錄。檢查命令輸出中 `inetnum` 物件 (網路範圍)的 `descr` 部分。該憑證應新增為地址範圍的新 `descr` 欄位。

   您可使用下列命令來檢查包含憑證的 `descr`：

   ```
   whois -r -h whois.ripe.net 2001:0DB8:7269::/48 | grep descr | grep BEGIN
   ```

   此會傳回含有金鑰內容的輸出，應類似於下列內容：

   ```
   descr:
   -----BEGIN CERTIFICATE-----MIID1zCCAr+gAwIBAgIUBkRPNSLrPqbRAFP8
   RDAHSP+I1TowDQYJKoZIhvcNAQELBQAwezELMAkGA1UEBhMCTloxETAPBgNVBAg
   MCEF1Y2tsYW5kMREwDwYDVQQHDAhBdWNrbGFuZDEcMBoGA1UECgwTQW1hem9uIF
   dlYiBTZXJ2aWNlczETMBEGA1UECwwKQllPSVAgRGVtbzETMBEGA1UEAwwKQllPS
   VAgRGVtbzAeFw0yMTEyMDcyMDI0NTRaFw0yMjEyMDcyMDI0NTRaMHsxCzAJBgNV
   BAYTAk5aMREwDwYDVQQIDAhBdWNrbGFuZDERMA8GA1UEBwwIQXVja2xhbmQxHDA
   aBgNVBAoME0FtYXpvbiBXZWIgU2VydmljZXMxEzARBgNVBAsMCkJZT0lQIERlbW
   8xEzARBgNVBAMMCkJZT0lQIERlbW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwg
   gEKAoIBAQCfmacvDp0wZ0ceiXXcR/q27mHI/U5HKt7SST4X2eAqufR9wXkfNanA
   EskgAseyFypwEEQr4CJijI/5hp9prh+jsWHWwkFRoBRR9FBtwcU/45XDXLga7D3
   stsI5QesHVRwOaXUdprAnndaTugmDPkD0vrl475JWDSIm+PUxGWLy+60aBqiaZq
   35wU/x+wXlAqBXg4MZK2KoUu27kYt2zhmy0S7Ky+oRfRJ9QbAiSu/RwhQbh5Mkp
   1ZnVIc7NqnhdeIW48QaYjhMlUEfxdaqYUinzz8KpjfADZ4Hvqj9jWZ/eXo/9b2r
   GlHWkJsbhr0VEUyAGu1bwkgcdww3A7NjOxQbAgMBAAGjUzBRMB0GA1UdDgQWBBS
   tFyujN6SYBr2glHpGt0XGF7GbGTAfBgNVHSMEGDAWgBStFyujN6SYBr2glHpGt0
   XGF7GbGTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBX6nn6Y
   Lhz521lfyVfxY0t6o3410bQAeAF08ud+ICtmQ4IO4A4B7zV3zIVYr0clrOOaFyL
   xngwMYN0XY5tVhDQqk4/gmDNEKSZy2QkX4Eg0YUWVzOyt6fPzjOvJLcsqc1hcF9
   wySL507XQz76Uk5cFypBOzbnk35UkWrzA9KK97cXckfIESgK/k1N4ecwxwG6VQ8
   mBGqVpPpey+dXpzzzv1iBKN/VY4ydjgH/LBfdTsVarmmy2vtWBxwrqkFvpdhSGC
   vRDl/qdO/GIDJi77dmZWkh/ic90MNk1f38gs1jrCj8lThoar17Uo9y/Q5qJIsoN
   PyQrJRzqFU9F3FBjiPJF
   -----END CERTIFICATE-----
   ```

   若為 APNIC，請使用 `whois -h whois.apnic.net 2001:0DB8:6170::/48` 來查詢您 BYOIP 地址範圍的 RDAP 記錄。檢查命令輸出中 `inetnum` 物件 (網路範圍)的 `remarks` 部分。該憑證應新增為地址範圍的新 `remarks` 欄位。

   您可使用下列命令來檢查包含憑證的 `remarks`：

   ```
   whois -h whois.apnic.net 2001:0DB8:6170::/48 | grep remarks | grep BEGIN
   ```

   此會傳回含有金鑰內容的輸出，應類似於下列內容：

   ```
   remarks:
   -----BEGIN CERTIFICATE-----
   MIID1zCCAr+gAwIBAgIUBkRPNSLrPqbRAFP8RDAHSP+I1TowDQYJKoZIhvcNAQE
   LBQAwezELMAkGA1UEBhMCTloxETAPBgNVBAgMCEF1Y2tsYW5kMREwDwYDVQQHDA
   hBdWNrbGFuZDEcMBoGA1UECgwTQW1hem9uIFdlYiBTZXJ2aWNlczETMBEGA1UEC
   wwKQllPSVAgRGVtbzETMBEGA1UEAwwKQllPSVAgRGVtbzAeFw0yMTEyMDcyMDI0
   NTRaFw0yMjEyMDcyMDI0NTRaMHsxCzAJBgNVBAYTAk5aMREwDwYDVQQIDAhBdWN
   rbGFuZDERMA8GA1UEBwwIQXVja2xhbmQxHDAaBgNVBAoME0FtYXpvbiBXZWIgU2
   VydmljZXMxEzARBgNVBAsMCkJZT0lQIERlbW8xEzARBgNVBAMMCkJZT0lQIERlb
   W8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfmacvDp0wZ0ceiXXc
   R/q27mHI/U5HKt7SST4X2eAqufR9wXkfNanAEskgAseyFypwEEQr4CJijI/5hp9
   prh+jsWHWwkFRoBRR9FBtwcU/45XDXLga7D3stsI5QesHVRwOaXUdprAnndaTug
   mDPkD0vrl475JWDSIm+PUxGWLy+60aBqiaZq35wU/x+wXlAqBXg4MZK2KoUu27k
   Yt2zhmy0S7Ky+oRfRJ9QbAiSu/RwhQbh5Mkp1ZnVIc7NqnhdeIW48QaYjhMlUEf
   xdaqYUinzz8KpjfADZ4Hvqj9jWZ/eXo/9b2rGlHWkJsbhr0VEUyAGu1bwkgcdww
   3A7NjOxQbAgMBAAGjUzBRMB0GA1UdDgQWBBStFyujN6SYBr2glHpGt0XGF7GbGT
   AfBgNVHSMEGDAWgBStFyujN6SYBr2glHpGt0XGF7GbGTAPBgNVHRMBAf8EBTADA
   QH/MA0GCSqGSIb3DQEBCwUAA4IBAQBX6nn6YLhz521lfyVfxY0t6o3410bQAeAF
   08ud+ICtmQ4IO4A4B7zV3zIVYr0clrOOaFyLxngwMYN0XY5tVhDQqk4/gmDNEKS
   Zy2QkX4Eg0YUWVzOyt6fPzjOvJLcsqc1hcF9wySL507XQz76Uk5cFypBOzbnk35
   UkWrzA9KK97cXckfIESgK/k1N4ecwxwG6VQ8mBGqVpPpey+dXpzzzv1iBKN/VY4
   ydjgH/LBfdTsVarmmy2vtWBxwrqkFvpdhSGCvRDl/qdO/GIDJi77dmZWkh/ic90
   MNk1f38gs1jrCj8lThoar17Uo9y/Q5qJIsoNPyQrJRzqFU9F3FBjiPJF
   -----END CERTIFICATE-----
   ```

1. 驗證 ROA 物件的建立

   使用 RIPEstat Data API，驗證是否成功建立 ROA 物件。請務必依據 Amazon ASN 16509 和 14618，及目前授權公布地址範圍的 ASN 來測試您的地址範圍。

   您可使用以下命令，檢查具有您地址範圍不同 Amazon ASN 的 ROA 物件：

   ```
   curl --location --request GET "https://stat.ripe.net/data/rpki-validation/data.json?resource=ASN&prefix=CIDR
   ```

   於此範例輸出中，Amazon ASN 16509 的回應結果為 `"status": "valid"`。這表示地址範圍的 ROA 物件已成功建立：

   ```
   {
       "messages": [],
       "see_also": [],
       "version": "0.3",
       "data_call_name": "rpki-validation",
       "data_call_status": "supported",
       "cached": false,
       "data": {
           "validating_roas": [
               {
                   "origin": "16509",
                   "prefix": "2001:0DB8::/32",
                   "max_length": 48,
                   "validity": "valid"
               },
               {
                   "origin": "14618",
                   "prefix": "2001:0DB8::/32",
                   "max_length": 48,
                   "validity": "invalid_asn"
               },
               {
                   "origin": "64496",
                   "prefix": "2001:0DB8::/32",
                   "max_length": 48,
                   "validity": "invalid_asn"
               }
           ],
           "status": "valid",
           "validator": "routinator",
           "resource": "16509",
           "prefix": "2001:0DB8::/32"
       },
       "query_id": "20230224152430-81e6384e-21ba-4a86-852a-31850787105f",
       "process_time": 58,
       "server_id": "app116",
       "build_version": "live.2023.2.1.142",
       "status": "ok",
       "status_code": 200,
       "time": "2023-02-24T15:24:30.773654"
   }
   ```

`“unknown”` 的狀態表示尚未建立地址範圍的 ROA 物件。`“invalid_asn”` 的狀態表示未成功建立地址範圍的 ROA 物件。