

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

# 封鎖對 VPC 和子網路的公開存取
<a name="security-vpc-bpa"></a>

VPC Block Public Access (BPA) 是一種集中式安全功能，可讓您以授權形式防止公開網際網路存取整個 AWS 帳戶的 VPC 資源，確保符合安全要求，同時為特定例外狀況和稽核功能提供靈活性。

VPC BPA 功能具有下列模式：
+ **雙向**：此區域中往返網際網路閘道和僅輸出網際網路閘道 (排除 VPC 和子網路除外) 的所有流量都會遭到封鎖。
+ **僅輸入**：此區域中 VPC 的所有網際網路流量 (排除 VPC 或子網路除外) 都會遭到封鎖。僅允許進出 NAT 閘道和僅輸出網際網路閘道的流量，因為這些閘道僅允許建立傳出連線。

您也可以針對您不想封鎖的流量，為此功能建立「排除」。排除項目是可套用至單一 VPC 或子網路的模式，其會將其從帳戶的 VPC BPA 模式排除，並允許雙向或僅限輸出存取。

排除項目可以有下列其中一種模式：
+ **雙向**：允許進出排除 VPC 和子網路的所有網際網路流量。
+ **僅輸出**：允許來自排除 VPC 和子網路的傳出網際網路流量。已封鎖對排除 VPC 和子網路的傳入網際網路流量。這僅適用於 VPC BPA 設定為雙向時。

**Topics**
+ [VPC BPA 基礎知識](security-vpc-bpa-basics.md)
+ [評估 VPC BPA 的影響並監控 VPC BPA](security-vpc-bpa-assess-impact-main.md)
+ [進階範例](security-vpc-bpa-example.md)

# VPC BPA 基礎知識
<a name="security-vpc-bpa-basics"></a>

本節涵蓋 VPC BPA 的重要詳細資訊，包括哪些服務支援它，以及如何使用它。

**Topics**
+ [區域可用性](#security-vpc-bpa-reg-avail)
+ [AWS 服務影響和支援](#security-vpc-bpa-service-support)
+ [VPC BPA 的限制](#security-vpc-bpa-limits)
+ [使用 IAM 政策控制對 VPC BPA 的存取](#security-vpc-bpa-iam-example)
+ [為您的帳戶啟用 VPC BPA 雙向模式](#security-vpc-bpa-enable-bidir)
+ [將 VPC BPA 模式變更為僅輸入](#security-vpc-bpa-ingress-only)
+ [建立和刪除排除項目](#security-vpc-bpa-exclusions)
+ [在組織層級啟用 VPC BPA](#security-vpc-bpa-exclusions-orgs)

## 區域可用性
<a name="security-vpc-bpa-reg-avail"></a>

VPC BPA 適用於所有商業 [AWS 區域](https://aws.amazon.com//about-aws/global-infrastructure/regions_az/)，包括 GovCloud 和中國區域。

在本指南中，您還可以找到有關將網路存取分析器和 Reachability Analyzer 與 VPC BPA 搭配使用的資訊。請注意，並非所有商業區域都提供網路存取分析器和 Reachability Analyzer。如需有關網路存取分析器和 Reachability Analyzer 區域可用性的資訊，請參閱*《網路存取分析器指南》*中的[限制](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/how-network-access-analyzer-works.html#analyzer-limitations)和*《Reachability Analyzer 指南》*中的[考量](https://docs.aws.amazon.com/vpc/latest/reachability/how-reachability-analyzer-works.html#considerations)。

## AWS 服務影響和支援
<a name="security-vpc-bpa-service-support"></a>

下列資源和服務支援 VPC BPA，而這些服務和資源的流量會受到 VPC BPA 的影響：
+ **網際網路閘道**：會封鎖所有傳入和傳出流量。
+ **僅輸出網際網路閘道**：封鎖所有傳出流量。僅輸出網際網路閘道不允許傳入流量。
+ **Gateway Load Balancer (GWLB)**：即使排除包含 GWLB 端點的子網路，也會封鎖所有傳入與傳出流量。
+ **NAT 閘道**：會封鎖所有傳入和傳出流量。NAT 閘道需要網際網路閘道才能進行網際網路連線。
+ **面向網際網路的 Network Load Balancer**：會封鎖所有傳入和傳出流量。面向網際網路的 Network Load Balancer 需要網際網路閘道才能進行網際網路連線。
+ **面向網際網路的 Application Load Balancer**：會封鎖所有傳入和傳出流量。面向網際網路的 Application Load Balancer 需要網際網路閘道才能進行網際網路連線。
+ **Amazon CloudFront VPC 來源**：所有傳入與傳出流量都會遭到封鎖。
+ **Direct Connect**：使用公有虛擬介面 (公有 IPv4 位址或全域單播 IPv6 位址) 的所有傳入與傳出流量都會遭到封鎖。此流量會使用網際網路閘道 (或僅限輸出網際網路閘道) 進行連線。
+ **AWS Global Accelerator**：無論目標是否可從網際網路存取，都會封鎖傳入 VPCs 的流量。
+ **AWS Network Firewall**：即使排除包含防火牆端點的子網路，也會封鎖所有傳入與傳出流量。
+ **AWS Wavelength 電信業者閘道**：所有傳入和傳出流量都會遭到封鎖。

VPC BPA 不會封鎖或影響與私有連線相關的流量，例如下列服務和資源的流量：
+ AWS Client VPN
+ AWS CloudWAN
+ AWS Outposts 本機閘道
+ AWS Site-to-Site VPN
+ Transit Gateway
+ AWS Verified Access

  

**重要**  
如果您要透過子網路中 EC2 執行個體上執行的設備 (例如第三方安全或監控工具) 路由傳入與傳出流量，則使用 VPC BPA 時，該子網路需要設定為排除項目，以確保流量能順利進出。將流量傳送至設備子網路而非網際網路閘道的其他子網路，不需要新增為排除項目。
即使 VPC BPA 未透過 VPC 中的網際網路閘道開啟，也允許從 VPC 中的資源私下傳送至 VPC 中執行之其他服務的流量，例如 Route 53 Resolver。這些服務可能會代表您向 VPC 外部的資源提出請求，例如，為了解決 DNS 查詢，如果未透過其他安全控制緩解，則可能會公開 VPC 內資源活動的相關資訊。

## VPC BPA 的限制
<a name="security-vpc-bpa-limits"></a>

不允許 NAT 閘道和僅輸出網際網路閘道的 Local Zones (LZ) 不支援 VPC BPA 僅輸入模式。

## 使用 IAM 政策控制對 VPC BPA 的存取
<a name="security-vpc-bpa-iam-example"></a>

如需允許/拒絕存取 VPC BPA 功能的 IAM 政策範例，請參閱 [封鎖對 VPC 和子網路的公開存取](vpc-policy-examples.md#vpc-bpa-example-iam)。

## 為您的帳戶啟用 VPC BPA 雙向模式
<a name="security-vpc-bpa-enable-bidir"></a>

VPC BPA 雙向模式會封鎖此區域中往返網際網路閘道和僅輸出網際網路閘道的所有流量 (排除 VPC 和子網路除外)。如需排除的更多相關資訊，請參閱[建立和刪除排除項目](#security-vpc-bpa-exclusions)。

**重要**  
強烈建議您在生產帳戶中啟用 VPC BPA 之前，先徹底檢閱需要網際網路存取的工作負載。

**注意**  
若要在帳戶中的 VPC 和子網路上啟用 VPC BPA，您必須擁有 VPC 和子網路。
如果您目前與其他帳戶共用 VPC 子網路，子網路擁有者強制執行的 VPC BPA 模式也適用於參與者流量，但參與者無法控制影響共用子網路的 VPC BPA 設定。

------
#### [ AWS 管理主控台 ]

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在左側的導覽窗格中，選擇**設定**。

1. 選擇**編輯公開存取設定**。

1. 選擇**開啟「封鎖公開存取」**和**雙向**，然後選擇**儲存變更**。

1. 等待**狀態**變更為**開啟**。VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。

VPC BPA 雙向模式現已開啟。

------
#### [ AWS CLI ]

1. 開啟 VPC BPA：

   ```
   aws ec2 --region us-east-2 modify-vpc-block-public-access-options --internet-gateway-block-mode block-bidirectional
   ```

   VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。

1. 檢視 VPC BPA 的狀態：

   ```
   aws ec2 --region us-east-2 describe-vpc-block-public-access-options
   ```

------

## 將 VPC BPA 模式變更為僅輸入
<a name="security-vpc-bpa-ingress-only"></a>

VPC BPA 僅輸入模式會封鎖此區域中 VPC 的所有網際網路流量 (排除 VPC 或子網路除外)。僅允許進出 NAT 閘道和僅輸出網際網路閘道的流量，因為這些閘道僅允許建立傳出連線。

------
#### [ AWS 管理主控台 ]

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在左側的導覽窗格中，選擇**設定**。

1. 選擇**編輯公開存取設定**。

1. 將方向變更為**僅限輸入**。

1. 儲存變更並等待狀態更新。VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。

------
#### [ AWS CLI ]

1. 修改 VPC BPA 區塊方向：

   ```
   aws ec2 --region us-east-2 modify-vpc-block-public-access-options --internet-gateway-block-mode block-ingress
   ```

   VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。

1. 檢視 VPC BPA 的狀態：

   ```
   aws ec2 --region us-east-2 describe-vpc-block-public-access-options
   ```

------

## 建立和刪除排除項目
<a name="security-vpc-bpa-exclusions"></a>

VPC BPA 排除項目是可套用至單一 VPC 或子網路的模式，其會將其從帳戶的 VPC BPA 模式排除，並允許雙向或僅限輸出存取。即使帳戶未啟用 VPC BPA，您也可以為 VPC 和子網路建立 VPC BPA 排除項目，以確保在開啟 VPC BPA 時，排除項目不會發生流量中斷。VPC 的排除會自動套用至 VPC 中的所有子網路。

您最多可以建立 50 個排除。如需有關請求提高限制的資訊，請參閱 [Amazon VPC 配額](amazon-vpc-limits.md) 中*每個帳戶的 VPC BPA 排除*。

------
#### [ AWS 管理主控台 ]

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在左側的導覽窗格中，選擇**設定**。

1. 在**封鎖公開存取**索引標籤的**排除項目**下，執行下列其中一項動作：
   + 若要刪除排除項目，請選取排除項目，然後選擇**動作** > **刪除排除項目**。
   + 若要建立排除項目，請選擇**建立排除項目**並繼續後續步驟。

1. 選擇區塊方向：
   + **雙向**：允許所有往返排除 VPC 和子網路的網際網路流量。
   + **僅輸出**：允許來自排除 VPC 和子網路的傳出網際網路流量。封鎖對排除 VPC 和子網路的傳入網際網路流量。當 VPC BPA 設定為**雙向**時，此設定適用。

1. 選擇 VPC 或子網路。

1. 選擇**建立排除**。

1. 等待**排除狀態**變更為**作用中**。您可能需要重新整理排除資料表才能查看變更。

已建立排除。

------
#### [ AWS CLI ]

1. 修改排除允許方向：

   ```
   aws ec2 --region us-east-2 create-vpc-block-public-access-exclusion --subnet-id subnet-id --internet-gateway-exclusion-mode allow-bidirectional
   ```

1. 可能需要一些時間才能更新排除狀態。檢視排除的狀態：

   ```
   aws ec2 --region us-east-2 describe-vpc-block-public-access-exclusions --exclusion-ids exclusion-id
   ```

------

## 在組織層級啟用 VPC BPA
<a name="security-vpc-bpa-exclusions-orgs"></a>

如果您使用 AWS Organizations 來管理組織中的帳戶，則可以使用 [AWS Organizations 宣告政策](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_policies_declarative.html)在組織中的帳戶強制執行 VPC BPA。如需 VPC BPA 宣告政策的詳細資訊，請參閱*《AWS Organizations 使用者指南》*中的[支援宣告政策](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_policies_declarative_syntax.html#declarative-policy-vpc-block-public-access)。

**注意**  
您可以使用 VPC BPA 宣告政策來設定是否允許排除，但無法使用政策建立排除。若要建立排除，您仍然必須在擁有 VPC 的帳戶中建立排除。如需有關建立 VPC BPA 排除的詳細資訊，請參閱[建立和刪除排除項目](#security-vpc-bpa-exclusions)。
如果已啟用 VPC BPA 宣告政策，則在**封鎖公開存取**設定中，您會看到**依宣告政策管理**，而且您將無法在帳戶層級修改 VPC BPA 設定。

# 評估 VPC BPA 的影響並監控 VPC BPA
<a name="security-vpc-bpa-assess-impact-main"></a>

本節包含有關您可以在開啟 VPC BPA 之前評估其影響的資訊，以及如何在開啟流量之後監控流量是否遭到封鎖的資訊。

**Topics**
+ [使用網路存取分析器評估 VPC BPA 的影響](#security-vpc-bpa-assess-impact)
+ [使用流量日誌監控 VPC BPA 影響](#security-vpc-bpa-fl)
+ [使用 CloudTrail 追蹤排除刪除](#security-vpc-bpa-cloudtrail)
+ [使用 Reachability Analyzer 確認連線已封鎖](#security-vpc-bpa-verify-RA)

## 使用網路存取分析器評估 VPC BPA 的影響
<a name="security-vpc-bpa-assess-impact"></a>

在本節中，您將使用網路存取分析器檢視帳戶中使用網際網路閘道的資源，*然後再*啟用 VPC BPA 和封鎖存取。使用此分析來了解在帳戶中開啟 VPC BPA 並封鎖流量的影響。

**注意**  
網路存取分析器不支援 IPv6；因此您將無法使用它來檢視 VPC BPA 對僅限輸出網際網路閘道傳出 IPv6 流量的潛在影響。
您需要為使用網路存取分析器執行的分析付費。如需詳細資訊，請參閱《網路存取分析器指南》**中的[定價](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/what-is-network-access-analyzer.html#pricing)。
如需有關網路存取分析器區域可用性的資訊，請參閱*《網路存取分析器指南》*中的[限制](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/how-network-access-analyzer-works.html#analyzer-limitations)。

------
#### [ AWS 管理主控台 ]

1. 在 開啟 AWS Network Insights 主控台[https://console.aws.amazon.com/networkinsights/](https://console.aws.amazon.com/networkinsights/)。

1. 選擇**網路存取分析器**。

1. 選擇**建立網路存取範圍**。

1. 選擇**評估 VPC 封鎖公開存取的影響**，然後選擇**下一步**。

1. 範本已設定為分析您帳戶中網際網路閘道的往返流量。您可以在**來源**和**目的地**下檢視。

1. 選擇**下一步**。

1. 選擇**建立網路存取範圍**。

1. 選擇您剛建立的範圍，然後選擇**分析**。

1. 等候分析完成。

1. 檢視分析的調查結果。**調查結果**下的每一列都顯示了封包在網路中往返於您帳戶中的網際網路閘道的網路路徑。在此情況下，如果您開啟 VPC BPA，且這些調查結果中出現的任何 VPC 和/或子網路都未設定為 VPC BPA 排除項目，則流向這些 VPC 和子網路的流量將受到限制。

1. 分析每個調查結果，了解 VPC BPA 對您 VPC 資源的影響。

影響分析已完成。

------
#### [ AWS CLI ]

1. 建立網路存取範圍：

   ```
   aws ec2 create-network-insights-access-scope --region us-east-2 --match-paths "Source={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}" "Destination={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}"
   ```

1. 開始範圍分析：

   ```
   aws ec2 start-network-insights-access-scope-analysis  --region us-east-2 --network-insights-access-scope-id nis-id
   ```

1. 取得分析的結果：

   ```
   aws ec2 get-network-insights-access-scope-analysis-findings  --region us-east-2 --network-insights-access-scope-analysis-id nisa-0aa383a1938f94cd1 --max-items 1
   ```

   結果會顯示您帳戶中所有 VPC 中往返網際網路閘道的流量。結果會組織為「調查結果」。"FindingId": "AnalysisFinding-1" 表示這是分析中的第一個調查結果。請注意，有多個調查結果，每個調查結果都表示流量流程會因為開啟 VPC BPA 而受到影響。第一個調查結果會顯示從網際網路閘道 ("SequenceNumber": 1) 開始的流量，傳遞至 NACL ("SequenceNumber": 2) 給安全群組 ("SequenceNumber"： 3)，並在執行個體 ("SequenceNumber": 4) 結束。

1. 分析調查結果，了解 VPC BPA 對 VPC 資源的影響。

影響分析已完成。

------

## 使用流量日誌監控 VPC BPA 影響
<a name="security-vpc-bpa-fl"></a>

VPC 流程日誌是一項可讓您擷取傳入及傳出您 VPC 中彈性網路介面之 IP 流量相關資訊的功能。您可以使用此功能來監控 VPC BPA 封鎖到達執行個體網路介面的流量。

使用 [使用流量日誌工作](working-with-flow-logs.md) 中的步驟為您的 VPC 建立流程日誌。

當您建立流程日誌時，請務必使用包含欄位 `reject-reason` 的自訂格式。

當您檢視流量日誌時，如果流向 ENI 的流量因 VPC BPA 而遭到拒絕，您會在流量日誌項目中看到 `BPA` 的 `reject-reason`。

除了 VPC 流程日誌的標準[限制](flow-logs-limitations.md)之外，請注意 VPC BPA 特有的下列限制：
+ VPC BPA 的流量日誌不包含[跳過的記錄](flow-logs-records-examples.md#flow-log-example-no-data)。
+ 即使您在流量日誌中包含 `bytes` 欄位，VPC BPA 的流量日誌也不會包含 [`bytes`](flow-log-records.md#flow-logs-fields)。

## 使用 CloudTrail 追蹤排除刪除
<a name="security-vpc-bpa-cloudtrail"></a>

本節說明如何使用 AWS CloudTrail 來監控和追蹤 VPC BPA 排除的刪除。

------
#### [ AWS 管理主控台 ]

您可以在透過 [https://console.aws.amazon.com/cloudtrailv2/](https://console.aws.amazon.com/cloudtrailv2/) 存取 AWS CloudTrail 主控台，在其中查詢**資源類型** > `AWS::EC2::VPCBlockPublicAccessExclusion`，以檢視 **CloudTrail 事件歷史記錄**中任何已刪除的排除。

------
#### [ AWS CLI ]

您可以使用 `lookup-events` 命令來檢視與刪除排除項目相關的事件：

```
aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::EC2::VPCBlockPublicAccessExclusion
```

------

## 使用 Reachability Analyzer 確認連線已封鎖
<a name="security-vpc-bpa-verify-RA"></a>

[VPC Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/what-is-reachability-analyzer.html) 可用來評估是否可以根據您的網路組態達到特定網路路徑，包括 VPC BPA 設定。

如需 Reachability Analyzer 區域可用性的相關資訊，請參閱*《Reachability Analyzer 指南》*中的[考量](https://docs.aws.amazon.com/vpc/latest/reachability/how-reachability-analyzer-works.html#considerations)。

------
#### [ AWS 管理主控台 ]

1. 在 開啟 AWS Network Insights 主控台[https://console.aws.amazon.com/networkinsights/home#ReachabilityAnalyzer](https://console.aws.amazon.com/networkinsights/home#ReachabilityAnalyzer)。

1. 按一下**建立並分析路徑**。

1. 針對**來源類型**，選擇**網際網路閘道**，然後從**來源**下拉式清單中選擇您要封鎖流量的網際網路閘道。

1. 針對**目的地類型**，選擇**執行個體**，然後從**目的地**下拉式清單中選擇您要封鎖流量的執行個體。

1. 按一下**建立並分析路徑**。

1. 等候分析完成。這可能需要幾分鐘的時間。

1. 完成後，您應該會看到**連線性狀態**為**無法連線**，而且**路徑詳細資訊**顯示 `VPC_BLOCK_PUBLIC_ACCESS_ENABLED ` 是造成此連線能力問題的原因。

------
#### [ AWS CLI ]

1. 使用您要封鎖來自 (來源) 的流量的網際網路閘道 ID 和您要封鎖流向 (目的地) 執行個體的 ID 建立網路路徑：

   ```
   aws ec2 --region us-east-2 create-network-insights-path --source igw-id --destination instance-id --protocol TCP
   ```

1. 在網路路徑上開始分析：

   ```
   aws ec2 --region us-east-2 start-network-insights-analysis --network-insights-path-id nip-id
   ```

1. 檢索分析的結果：

   ```
   aws ec2 --region us-east-2 describe-network-insights-analyses --network-insights-analysis-ids nia-id
   ```

1. 確認 `VPC_BLOCK_PUBLIC_ACCESS_ENABLED` 為 `ExplanationCode`，無法連線。

------

# 進階範例
<a name="security-vpc-bpa-example"></a>

本節包含進階範例，可協助您了解 VPC 封鎖公開存取功能在不同案例中的運作方式。每個案例都會先建立案例，因此依序完成步驟非常重要。

**重要**  
請勿在生產帳戶中瀏覽此範例。強烈建議您在生產帳戶中啟用 VPC BPA 之前，先徹底檢閱需要網際網路存取的工作負載。

**注意**  
若要完全了解 VPC BPA 功能，您需要帳戶中的特定資源。在本節中，我們提供 CloudFormation 範本，您可以用來佈建所需的資源，以完全了解此功能的運作方式。您使用 CloudFormation 範本佈建的資源，以及您使用網路存取分析器和 Reachability Analyzer 執行的分析，會有相關的成本。如果您使用本節中的範本，請確定您在完成此範例時完成清除步驟。

**Topics**
+ [部署 CloudFormation 範本 (選用)](#security-vpc-bpa-example-deploy-cfn)
+ [使用網路存取分析器檢視 VPC BPA 的影響](#vpc-bpa-naa)
+ [案例 1 – 連線至未開啟 VPC BPA 的執行個體](#vpc-bpa-scenario-1-connect-scen1)
+ [案例 2 – 開啟 VPC BPA 雙向模式](#vpc-bpa-scenario-1-connect-scen2)
+ [案例 3 – 將 VPC BPA 變更為僅限輸入模式](#vpc-bpa-scenario-3)
+ [案例 4 – 建立排除](#vpc-bpa-scenario-4)
+ [案例 5 – 修改排除模式](#vpc-bpa-scenario-5)
+ [案例 6 – 修改 VPC BPA 模式](#vpc-bpa-scenario-6)
+ [清除](#vpc-bpa-scenario-cleanup)

## 部署 CloudFormation 範本 (選用)
<a name="security-vpc-bpa-example-deploy-cfn"></a>

若要示範此功能的運作方式，您需要 VPC、子網路、執行個體和其他資源。為了讓您更輕鬆地完成此示範，我們提供 CloudFormation 範本，您可以使用此範本快速分割此示範中案例所需的資源。此步驟为選用，您可能只想檢視本節案例中的圖表。

**注意**  
與您在本節中建立的 CloudFormation 範本資源相關聯的成本，例如 NAT 閘道和公有 IPv4 地址的成本。為了避免成本過高，請確定您完成清除步驟，以移除為本範例所建立的所有資源。
此 CloudFormation 範本會建立 VPC BPA 所需的基礎資源，但不會啟用 VPC BPA 功能本身。此處部署的資源旨在協助您在選擇單獨啟用 VPC BPA 功能之後，了解與測試該功能。

範本會在您的帳戶中建立下列資源：
+ 出口限定網際網路閘道
+ 網際網路閘道
+ NAT 閘道
+ 兩個公有子網路
+ 一個私有子網路
+ 兩個具有公有及私有 IPv4 地址的 EC2 執行個體
+ 一個具有 IPv6 地址和私有 IPv4 地址的 EC2 執行個體
+ 一個僅具有私有 IPv4 地址的 EC2 執行個體
+ 允許 SSH 和 ICMP 傳入流量以及允許所有傳出流量的安全群組
+ VPC 流程日誌
+ 子網路 B 中的一個 EC2 執行個體連線端點

複製下面的範本，並將其儲存至 .yaml 檔案。

```
AWSTemplateFormatVersion: '2010-09-09'
Description: Creates a VPC with public and private subnets, NAT gateway, and EC2 instances for VPC BPA.

Parameters:
  InstanceAMI:
    Description: ID of the Amazone Machine Image (AMI) to use with the instances launched by this template
    Type: AWS::EC2::Image::Id
  InstanceType:
    Description: EC2 Instance type to use with the instances launched by this template
    Type: String
    Default: t2.micro
 
Resources:

  # VPC
  VPCBPA:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsHostnames: true
      EnableDnsSupport: true
      InstanceTenancy: default
      Tags:
        - Key: Name
          Value: VPC BPA

  # VPC IPv6 CIDR
  VPCBPAIpv6CidrBlock:
    Type: AWS::EC2::VPCCidrBlock
    Properties:
      VpcId: !Ref VPCBPA
      AmazonProvidedIpv6CidrBlock: true

  # EC2 Key Pair
  VPCBPAKeyPair:
    Type: AWS::EC2::KeyPair
    Properties:
      KeyName: vpc-bpa-key

  # Internet Gateway  
  VPCBPAInternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
        - Key: Name
          Value: VPC BPA Internet Gateway
    
  VPCBPAInternetGatewayAttachment:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      VpcId: !Ref VPCBPA
      InternetGatewayId: !Ref VPCBPAInternetGateway

  # Egress-Only Internet Gateway
  VPCBPAEgressOnlyInternetGateway:
    Type: AWS::EC2::EgressOnlyInternetGateway
    Properties:
      VpcId: !Ref VPCBPA

  # Subnets
  VPCBPAPublicSubnetA:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPCBPA
      CidrBlock: 10.0.1.0/24
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: VPC BPA Public Subnet A
      
  VPCBPAPublicSubnetB:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPCBPA
      CidrBlock: 10.0.2.0/24
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: VPC BPA Public Subnet B
      
  VPCBPAPrivateSubnetC:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPCBPA
      CidrBlock: 10.0.3.0/24
      MapPublicIpOnLaunch: false
      Ipv6CidrBlock: !Select [0, !GetAtt VPCBPA.Ipv6CidrBlocks]
      AssignIpv6AddressOnCreation: true
      Tags:
        - Key: Name
          Value: VPC BPA Private Subnet C

  # NAT Gateway
  VPCBPANATGateway:
    Type: AWS::EC2::NatGateway
    Properties:
      AllocationId: !GetAtt VPCBPANATGatewayEIP.AllocationId
      SubnetId: !Ref VPCBPAPublicSubnetB
      Tags:
        - Key: Name
          Value: VPC BPA NAT Gateway

  VPCBPANATGatewayEIP:
    Type: AWS::EC2::EIP
    Properties:
      Domain: vpc
      Tags:
        - Key: Name
          Value: VPC BPA NAT Gateway EIP

  # Route Tables
  VPCBPAPublicRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPCBPA
      Tags:
        - Key: Name
          Value: VPC BPA Public Route Table
      
  VPCBPAPublicRoute:
    Type: AWS::EC2::Route
    DependsOn: VPCBPAInternetGatewayAttachment
    Properties:
      RouteTableId: !Ref VPCBPAPublicRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref VPCBPAInternetGateway
      
  VPCBPAPublicSubnetARouteTableAssoc:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref VPCBPAPublicSubnetA
      RouteTableId: !Ref VPCBPAPublicRouteTable
      
  VPCBPAPublicSubnetBRouteTableAssoc:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref VPCBPAPublicSubnetB
      RouteTableId: !Ref VPCBPAPublicRouteTable
      
  VPCBPAPrivateRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPCBPA
      Tags:
        - Key: Name
          Value: VPC BPA Private Route Table
      
  VPCBPAPrivateRoute:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref VPCBPAPrivateRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      NatGatewayId: !Ref VPCBPANATGateway
      
  VPCBPAPrivateSubnetCRoute:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref VPCBPAPrivateRouteTable
      DestinationIpv6CidrBlock: ::/0
      EgressOnlyInternetGatewayId: !Ref VPCBPAEgressOnlyInternetGateway
      
  VPCBPAPrivateSubnetCRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref VPCBPAPrivateSubnetC
      RouteTableId: !Ref VPCBPAPrivateRouteTable

  # EC2 Instances Security Group
  VPCBPAInstancesSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupName: VPC BPA Instances Security Group
      GroupDescription: Allow SSH and ICMP access
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: 0.0.0.0/0
        - IpProtocol: icmp
          FromPort: -1
          ToPort: -1
          CidrIp: 0.0.0.0/0
      VpcId: !Ref VPCBPA
      Tags:
        - Key: Name
          Value: VPC BPA Instances Security Group

  # EC2 Instances
  VPCBPAInstanceA:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Ref InstanceAMI
      InstanceType: t2.micro
      KeyName: !Ref VPCBPAKeyPair
      SubnetId: !Ref VPCBPAPublicSubnetA
      SecurityGroupIds:
        - !Ref VPCBPAInstancesSecurityGroup
      Tags:
        - Key: Name
          Value: VPC BPA Instance A

  VPCBPAInstanceB:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Ref InstanceAMI
      InstanceType: !Ref InstanceType
      KeyName: !Ref VPCBPAKeyPair
      SubnetId: !Ref VPCBPAPublicSubnetB
      SecurityGroupIds:
        - !Ref VPCBPAInstancesSecurityGroup
      Tags:
        - Key: Name
          Value: VPC BPA Instance B

  VPCBPAInstanceC:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Ref InstanceAMI
      InstanceType: !Ref InstanceType
      KeyName: !Ref VPCBPAKeyPair
      SubnetId: !Ref VPCBPAPrivateSubnetC
      SecurityGroupIds:
        - !Ref VPCBPAInstancesSecurityGroup
      Tags:
        - Key: Name
          Value: VPC BPA Instance C

  VPCBPAInstanceD:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Ref InstanceAMI
      InstanceType: !Ref InstanceType
      KeyName: !Ref VPCBPAKeyPair
      NetworkInterfaces:
        - DeviceIndex: '0'
          GroupSet:
            - !Ref VPCBPAInstancesSecurityGroup
          SubnetId: !Ref VPCBPAPrivateSubnetC
          Ipv6AddressCount: 1
      Tags:
        - Key: Name
          Value: VPC BPA Instance D

  # Flow Logs IAM Role
  VPCBPAFlowLogRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: vpc-flow-logs.amazonaws.com
            Action: 'sts:AssumeRole'
      Tags:
        - Key: Name
          Value: VPC BPA Flow Logs Role
      
  VPCBPAFlowLogPolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: VPC-BPA-FlowLogsPolicy
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Action:
              - 'logs:CreateLogGroup'
              - 'logs:CreateLogStream'
              - 'logs:PutLogEvents'
              - 'logs:DescribeLogGroups'
              - 'logs:DescribeLogStreams'
            Resource: '*'
      Roles:
        - !Ref VPCBPAFlowLogRole

  # Flow Logs
  VPCBPAFlowLog:
    Type: AWS::EC2::FlowLog
    Properties:
      ResourceId: !Ref VPCBPA
      ResourceType: VPC
      TrafficType: ALL
      LogDestinationType: cloud-watch-logs
      LogGroupName: /aws/vpc-flow-logs/VPC-BPA
      DeliverLogsPermissionArn: !GetAtt VPCBPAFlowLogRole.Arn
      LogFormat: '${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status} ${vpc-id} ${subnet-id} ${instance-id} ${tcp-flags} ${type} ${pkt-srcaddr} ${pkt-dstaddr} ${region} ${az-id} ${sublocation-type} ${sublocation-id} ${pkt-src-aws-service} ${pkt-dst-aws-service} ${flow-direction} ${traffic-path} ${reject-reason}'
      Tags:
        - Key: Name
          Value: VPC BPA Flow Logs

  # EC2 Instance Connect Endpoint
  VPCBPAEC2InstanceConnectEndpoint:
    Type: AWS::EC2::InstanceConnectEndpoint
    Properties:
      SecurityGroupIds:
        - !Ref VPCBPAInstancesSecurityGroup
      SubnetId: !Ref VPCBPAPublicSubnetB

Outputs:
  VPCBPAVPCId:
    Description: A reference to the created VPC
    Value: !Ref VPCBPA
    Export:
      Name: vpc-id

  VPCBPAPublicSubnetAId:
    Description: The ID of the public subnet A
    Value: !Ref VPCBPAPublicSubnetA
    
  VPCBPAPublicSubnetAName:
    Description: The name of the public subnet A
    Value: VPC BPA Public Subnet A

  VPCBPAPublicSubnetBId:
    Description: The ID of the public subnet B
    Value: !Ref VPCBPAPublicSubnetB
    
  VPCBPAPublicSubnetBName:
    Description: The name of the public subnet B
    Value: VPC BPA Public Subnet B

  VPCBPAPrivateSubnetCId:
    Description: The ID of the private subnet C
    Value: !Ref VPCBPAPrivateSubnetC
    
  VPCBPAPrivateSubnetCName:
    Description: The name of the private subnet C
    Value: VPC BPA Private Subnet C

  VPCBPAInstanceAId:
    Description: The ID of instance A
    Value: !Ref VPCBPAInstanceA

  VPCBPAInstanceBId:
    Description: The ID of instance B
    Value: !Ref VPCBPAInstanceB

  VPCBPAInstanceCId:
    Description: The ID of instance C
    Value: !Ref VPCBPAInstanceC

  VPCBPAInstanceDId:
    Description: The ID of instance D
    Value: !Ref VPCBPAInstanceD
```

------
#### [ AWS 管理主控台 ]

1. 在 開啟 CloudFormation 主控台[https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/)。

1. 選擇**建立堆疊**並上傳 .yaml 範本檔案。

1. 完成啟動範本的步驟。您需要輸入[映像 ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html) 和[執行個體類型](https://aws.amazon.com/ec2/instance-types/) (例如 t2.micro)。您也需要允許 CloudFormation 為您建立 IAM 角色，以建立流量日誌，並取得登入 CloudWatch 的許可。

1. 啟動堆疊後，請檢視**事件**標籤以檢視進度，並確保完成堆疊後再繼續。

------
#### [ AWS CLI ]

1. 執行下列命令來建立 CloudFormation 堆疊：

   ```
   aws cloudformation create-stack --stack-name VPC-BPA-stack --template-body file://sampletemplate.yaml --capabilities CAPABILITY_IAM --region us-east-2
   ```

   輸出：

   ```
   {
       "StackId": "arn:aws:cloudformation:us-east-2:470889052923:stack/VPC-BPA-stack/8a7a2cc0-8001-11ef-b196-06386a84b72f"
   }
   ```

1. 檢視進度，並確保完成堆疊後再繼續：

   ```
   aws cloudformation describe-stack-events --stack-name VPC-BPA-stack --region us-east-2
   ```

------

## 使用網路存取分析器檢視 VPC BPA 的影響
<a name="vpc-bpa-naa"></a>

在本節中，您將使用網路存取分析器來檢視帳戶中使用網際網路閘道的資源。使用此分析來了解在帳戶中開啟 VPC BPA 並封鎖流量的影響。

如需有關網路存取分析器區域可用性的資訊，請參閱*《網路存取分析器指南》*中的[限制](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/how-network-access-analyzer-works.html#analyzer-limitations)。

------
#### [ AWS 管理主控台 ]

1. 在 開啟 AWS Network Insights 主控台[https://console.aws.amazon.com/networkinsights/](https://console.aws.amazon.com/networkinsights/)。

1. 選擇**網路存取分析器**。

1. 選擇**建立網路存取範圍**。

1. 選擇**評估 VPC 封鎖公開存取的影響**，然後選擇**下一步**。

1. 範本已設定為分析您帳戶中網際網路閘道的往返流量。您可以在**來源**和**目的地**下檢視。

1. 選擇**下一步**。

1. 選擇**建立網路存取範圍**。

1. 選擇您剛建立的範圍，然後選擇**分析**。

1. 等候分析完成。

1. 檢視分析的調查結果。**調查結果**下的每一列都顯示了封包在網路中往返於您帳戶中的網際網路閘道的網路路徑。在此情況下，如果您開啟 VPC BPA，且這些調查結果中出現的任何 VPC 和/或子網路都未設定為 VPC BPA 排除項目，則流向這些 VPC 和子網路的流量將受到限制。

1. 分析每個調查結果，了解 VPC BPA 對您 VPC 資源的影響。

影響分析已完成。

------
#### [ AWS CLI ]

1. 建立網路存取範圍：

   ```
   aws ec2 create-network-insights-access-scope --match-paths "Source={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}" "Destination={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}" --region us-east-2
   ```

   輸出：

   ```
   {
     "NetworkInsightsAccessScope": {
       "NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e",
       "NetworkInsightsAccessScopeArn": "arn:aws:ec2:us-east-2:470889052923:network-insights-access-scope/nis-04cad3c4b3a1d5e3e",
       "CreatedDate": "2024-09-30T15:55:53.171000+00:00",
       "UpdatedDate": "2024-09-30T15:55:53.171000+00:00"
     },
     "NetworkInsightsAccessScopeContent": {
       "NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e",
       "MatchPaths": [
         {
           "Source": {
             "ResourceStatement": {
               "ResourceTypes": [
                 "AWS::EC2::InternetGateway"
               ]
             }
           }
         },
         {
           "Destination": {
             "ResourceStatement": {
               "ResourceTypes": [
                 "AWS::EC2::InternetGateway"
               ]
             }
           }
         }
       ]
     }
   }
   ```

1. 開始範圍分析：

   ```
   aws ec2 start-network-insights-access-scope-analysis --network-insights-access-scope-id nis-04cad3c4b3a1d5e3e --region us-east-2
   ```

   輸出：

   ```
   {
     "NetworkInsightsAccessScopeAnalysis": {
       "NetworkInsightsAccessScopeAnalysisId": "nisa-0aa383a1938f94cd1",
       "NetworkInsightsAccessScopeAnalysisArn": "arn:aws:ec2:us-east-2:470889052923:network-insights-access-scope-analysis/nisa-0aa383a1938f94cd",
       "NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e",
       "Status": "running",
       "StartDate": "2024-09-30T15:56:59.109000+00:00",
       "AnalyzedEniCount": 0
     }
   }
   ```

1. 取得分析的結果：

   ```
   aws ec2 get-network-insights-access-scope-analysis-findings --network-insights-access-scope-analysis-id nisa-0aa383a1938f94cd1 --region us-east-2 --max-items 1
   ```

   輸出：

   ```
   {
     "AnalysisFindings": [
       {
         "NetworkInsightsAccessScopeAnalysisId": "nisa-0aa383a1938f94cd1",
         "NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e",
         "FindingId": "AnalysisFinding-1",
         "FindingComponents": [
           {
             "SequenceNumber": 1,
             "Component": {
               "Id": "igw-04a5344b4e30486f1",
               "Arn": "arn:aws:ec2:us-east-2:470889052923:internet-gateway/igw-04a5344b4e30486f1",
               "Name": "VPC BPA Internet Gateway"
             },
             "OutboundHeader": {
               "DestinationAddresses": [
                 "10.0.1.85/32"
               ]
             },
             "InboundHeader": {
               "DestinationAddresses": [
                 "10.0.1.85/32"
               ],
               "DestinationPortRanges": [
                 {
                   "From": 22,
                   "To": 22
                 }
               ],
               "Protocol": "6",
               "SourceAddresses": [
                 "0.0.0.0/5",
                 "100.0.0.0/10",
                 "96.0.0.0/6"
               ],
               "SourcePortRanges": [
                 {
                   "From": 0,
                   "To": 65535
                 }
               ]
             },
             "Vpc": {
               "Id": "vpc-0762547ec48b6888d",
               "Arn": "arn:aws:ec2:us-east-2:470889052923:vpc/vpc-0762547ec48b6888d",
               "Name": "VPC BPA"
             }
           },
           {
             "SequenceNumber": 2,
             "AclRule": {
               "Cidr": "0.0.0.0/0",
               "Egress": false,
               "Protocol": "all",
               "RuleAction": "allow",
               "RuleNumber": 100
             },
             "Component": {
               "Id": "acl-06194fc3a4a03040b",
               "Arn": "arn:aws:ec2:us-east-2:470889052923:network-acl/acl-06194fc3a4a03040b"
             }
           },
           {
             "SequenceNumber": 3,
             "Component": {
               "Id": "sg-093dde06415d03924",
               "Arn": "arn:aws:ec2:us-east-2:470889052923:security-group/sg-093dde06415d03924",
               "Name": "VPC BPA Instances Security Group"
             },
             "SecurityGroupRule": {
               "Cidr": "0.0.0.0/0",
               "Direction": "ingress",
               "PortRange": {
                 "From": 22,
                 "To": 22
               },
               "Protocol": "tcp"
             }
           },
           {
             "SequenceNumber": 4,
             "AttachedTo": {
               "Id": "i-058db34f9a0997895",
               "Arn": "arn:aws:ec2:us-east-2:470889052923:instance/i-058db34f9a0997895",
               "Name": "VPC BPA Instance A"
             },
             "Component": {
               "Id": "eni-0fa23f2766f03b286",
               "Arn": "arn:aws:ec2:us-east-2:470889052923:network-interface/eni-0fa23f2766f03b286"
             },
             "InboundHeader": {
               "DestinationAddresses": [
                 "10.0.1.85/32"
               ],
               "DestinationPortRanges": [
                 {
                   "From": 22,
                   "To": 22
                 }
               ],
               "Protocol": "6",
               "SourceAddresses": [
                 "0.0.0.0/5",
                 "100.0.0.0/10",
                 "96.0.0.0/6"
               ],
               "SourcePortRanges": [
                 {
                   "From": 0,
                   "To": 65535
                 }
               ]
             },
             "Subnet": {
               "Id": "subnet-035d235a762eeed04",
               "Arn": "arn:aws:ec2:us-east-2:470889052923:subnet/subnet-035d235a762eeed04",
               "Name": "VPC BPA Public Subnet A"
             },
             "Vpc": {
               "Id": "vpc-0762547ec48b6888d",
               "Arn": "arn:aws:ec2:us-east-2:470889052923:vpc/vpc-0762547ec48b6888d",
               "Name": "VPC BPA"
             }
           }
         ]
       }
     ],
     "AnalysisStatus": "succeeded",
     "NetworkInsightsAccessScopeAnalysisId": "nisa-0aa383a1938f94cd1",
     "NextToken": "eyJOZXh0VG9rZW4iOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ=="
   }
   ```

   結果會顯示您帳戶中所有 VPC 中往返網際網路閘道的流量。結果會組織為「調查結果」。"FindingId": "AnalysisFinding-1" 表示這是分析中的第一個調查結果。請注意，有多個調查結果，每個調查結果都表示流量流程會因為開啟 VPC BPA 而受到影響。第一個調查結果會顯示從網際網路閘道 ("SequenceNumber": 1) 開始的流量，傳遞至 NACL ("SequenceNumber": 2) 給安全群組 ("SequenceNumber"： 3)，並在執行個體 ("SequenceNumber": 4) 結束。

1. 分析調查結果，了解 VPC BPA 對 VPC 資源的影響。

影響分析已完成。

------

## 案例 1 – 連線至未開啟 VPC BPA 的執行個體
<a name="vpc-bpa-scenario-1-connect-scen1"></a>

在本節中，公有子網路 A 與 B 中的 EC2 執行個體可透過網際網路閘道從網際網路連線，同时允許傳入與傳出流量。私有子網路中的執行個體 C 與 D 可以透過 NAT 閘道或僅限輸出網際網路閘道啟動傳出流量，但無法直接從網際網路連線。此設定提供對某些資源的網際網路存取，同時保護其他資源。此設定旨在設定基準，並確保在啟用 VPC BPA 之前，可以連接所有執行個體，並 Ping 公有 IP 位址。

未開啟 VPC BPA 的 VPC 圖表：

![\[此圖表顯示未啟用 VPC BPA 的 VPC。\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/vpc-bpa-1.png)


### 1.1 連線至執行個體
<a name="vpc-bpa-scenario-1-connect-scen1-sub"></a>

完成本節，在 VPC BPA 關閉的情況下連線至您的執行個體，以確保您可以順利連線。此範例中使用 CloudFormation 建立的所有執行個體的名稱都類似於「VPC BPA 執行個體 A」。

------
#### [ AWS 管理主控台 ]

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 開啟執行個體 A 詳細資訊。

1. 使用 **EC2 執行個體連線** > **連線 EC2 執行個體連線端點**選項連線至執行個體 A。

1. 選擇**連線**。成功連線至執行個體後，請 Ping www.amazon.com 以確認您可以將傳出請求傳送至網際網路。

1. 使用您用來連線至執行個體 A 的相同方法，連線至執行個體 B、C 和 D。從每個執行個體中，Ping www.amazon.com 以確認您可以將傳出請求傳送至網際網路。

------
#### [ AWS CLI ]

1. 使用公有 IPv4 地址 Ping 執行個體 A 以檢查傳入流量：

   ```
   ping 18.225.8.244
   ```

   輸出：

   ```
   Pinging 18.225.8.244 with 32 bytes of data:
   
   Reply from 18.225.8.244: bytes=32 time=51ms TTL=110
   Reply from 18.225.8.244: bytes=32 time=61ms TTL=110
   ```

   請注意，Ping 成功且流量未遭到封鎖。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #_   ~_  ####_        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~._.   _/
   / /
   /m/'
   Last login: Fri Sep 27 18:27:57 2024 from 3.16.146.5
   [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
   PING www-amazon-com.customer.fastly.net (18.65.233.187) 56(84) bytes of data.
   64 bytes from 18.65.233.187 (18.65.233.187): icmp_seq=15 ttl=58 time=2.06 ms
   64 bytes from 18.65.233.187 (18.65.233.187): icmp_seq=16 ttl=58 time=2.26 ms
   ```

   請注意，Ping 成功且流量未遭到封鎖。

1. 使用公有 IPv4 地址 Ping 執行個體 B 以檢查傳入流量：

   ```
   ping 3.18.106.198
   ```

   輸出：

   ```
   Pinging 3.18.106.198 with 32 bytes of data:
   Reply from 3.18.106.198: bytes=32 time=83ms TTL=110
   Reply from 3.18.106.198: bytes=32 time=54ms TTL=110
   ```

   請注意，Ping 成功且流量未遭到封鎖。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id  i-08552a0774b5c8f72 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.
   Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #   ~_  ####        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~..   _/
   / /
   /m/'
   Last login: Fri Sep 27 18:12:27 2024 from 3.16.146.5
   [ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=249 time=1.55 ms
   64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=249 time=1.67 ms
   ```

   請注意，Ping 成功且流量未遭到封鎖。

1. 連線至執行個體 C。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.
   Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #   ~_  ####        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~..   _/
   / /
   /m/'
   Last login: Thu Sep 19 20:31:26 2024 from 10.0.2.86
   [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=248 time=1.75 ms
   64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=248 time=1.97 ms
   64 bytes from server-3-160-24-26.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=3 ttl=248 time=1.08 ms
   ```

   請注意，Ping 成功且流量未遭到封鎖。

1. 連線至執行個體 D。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   The authenticity of host '10.0.3.59 can't be established.
   ECDSA key fingerprint is SHA256:c4naBCqbC61/cExDyccEproNU+1HHSpMSzl2J6cOtIZA8g.
   Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
   Warning: Permanently added '10.0.3.59' (ECDSA) to the list of known hosts.
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #   ~_  ####        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~..   _/
   _/ _/
   _/m/'
   [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
   PING www.amazon.com(2600:9000:25f3:ee00:7:49a5:5fd4:b121 (2600:9000:25f3:ee00:7:49a5:5fd4:b121)) 56 data bytes
   64 bytes from 2600:9000:25f3:ee00:7:49a5:5fd4:b121 (2600:9000:25f3:ee00:7:49a5:5fd4:b121): icmp_seq=1 ttl=58 time=1.19 ms
   64 bytes from 2600:9000:25f3:ee00:7:49a5:5fd4:b121 (2600:9000:25f3:ee00:7:49a5:5fd4:b121): icmp_seq=2 ttl=58 time=1.38 ms
   ```

   請注意，Ping 成功且流量未遭到封鎖。

------

## 案例 2 – 開啟 VPC BPA 雙向模式
<a name="vpc-bpa-scenario-1-connect-scen2"></a>

在本節中，您將開啟 VPC BPA，並封鎖您帳戶中網際網路閘道的往返流量。

圖表，顯示已開啟 VPC BPA 雙向模式：

![\[圖表，顯示 VPC 已啟用 VPC BPA 雙向模式。\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/vpc-bpa-2.png)


### 2.1 啟用 VPC BPA 雙向模式
<a name="vpc-bpa-scenario-1-connect-scen2-sub1"></a>

完成本節以啟用 VPC BPA。VPC BPA 雙向模式會封鎖此區域中往返網際網路閘道和僅輸出網際網路閘道的所有流量 (排除 VPC 和子網路除外)。

------
#### [ AWS 管理主控台 ]

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在左側的導覽窗格中，選擇**設定**。

1. 選擇**編輯公開存取設定**。

1. 選擇**開啟「封鎖公開存取」**和**雙向**，然後選擇**儲存變更**。

1. 等待**狀態**變更為**開啟**。VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。

VPC BPA 現已開啟。

------
#### [ AWS CLI ]

1. 使用 modify-vpc-block-public-access-options 命令來開啟 VPC BPA：

   ```
   aws ec2 --region us-east-2 modify-vpc-block-public-access-options --internet-gateway-block-mode block-bidirectional
   ```

   VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。

1. 檢視 VPC BPA 的狀態：

   ```
   aws ec2 --region us-east-2 describe-vpc-block-public-access-options
   ```

------

### 2.2 連線至執行個體
<a name="vpc-bpa-scenario-1-connect-scen2-sub2"></a>

完成本節以連線至您的執行個體。

------
#### [ AWS 管理主控台 ]

1. Ping 執行個體 A 和執行個體 B 的公有 IPv4 地址，如您在案例 1 中所執行的一樣。請注意，流量會遭到封鎖。

1. 使用 **EC2 執行個體連線** > **連線 EC2 執行個體連線端點**選項連線至執行個體 A，如您在案例 1 中所執行的一樣。請確定您使用端點選項。

1. 選擇**連線**。成功連線至執行個體後，請 Ping https：//www.amazon.com。請注意，所有傳出流量都會遭到封鎖。

1. 使用您用來連線至執行個體 A 的相同方法，連線至執行個體 B、C 和 D，並測試傳出請求到網際網路。請注意，所有傳出流量都會遭到封鎖。

------
#### [ AWS CLI ]

1. 使用公有 IPv4 地址 Ping 執行個體 A 以檢查傳入流量：

   ```
   ping 18.225.8.244
   ```

   輸出：

   ```
   Pinging 18.225.8.244 with 32 bytes of data:
   
   Request timed out.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   The authenticity of host '10.0.1.85' can't be established.
   ECDSA key fingerprint is SHA256:3zo/gSss+HAZ+7eTyWlOB/Ke04IM+hadjsoLJeRTWBk.
   Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
   Warning: Permanently added '10.0.1.85' (ECDSA) to the list of known hosts.
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #_   ~_  ####_        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~._.   _/
   / /
   /m/'
   Last login: Fri Sep 27 14:16:53 2024 from 3.16.146.5
   [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用公有 IPv4 地址 Ping 執行個體 B 以檢查傳入流量：

   ```
   ping 3.18.106.198
   ```

   輸出：

   ```
   Pinging 3.18.106.198 with 32 bytes of data:
   Request timed out.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id  i-08552a0774b5c8f72 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   The authenticity of host '10.0.2.98' can't be established.
   ECDSA key fingerprint is SHA256:0IjXKKyVlDthcCfI0IPIJMUiItAOLYKRNLGTYURnFXo.
   Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
   Warning: Permanently added '10.0.2.98' (ECDSA) to the list of known hosts.
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #   ~_  ####        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~..   _/
   / /
   /m/'
   Last login: Fri Sep 27 14:18:16 2024 from 3.16.146.5
   [ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 連線至執行個體 C。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #   ~_  ####        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~..   _/
   / /
   /m/'
   Last login: Tue Sep 24 15:17:56 2024 from 10.0.2.86
   [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 連線至執行個體 D。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #   ~_  ####        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~..   _/
   _/ _/
   _/m/'
   Last login: Fri Sep 27 16:42:01 2024 from 3.16.146.5
   [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
   PING www.amazon.com(2600:9000:25f3:8200:7:49a5:5fd4:b121 (2600:9000:25f3:8200:7:49a5:5fd4:b121)) 56 data bytes
   ```

   請注意，Ping 會失敗並封鎖流量。

------

### 2.3 選用：使用 Reachability Analyzer 確認連線已封鎖
<a name="vpc-bpa-scenario-1-connect-scen2-sub3"></a>

[VPC Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/what-is-reachability-analyzer.html) 可用來了解是否可以根據您的網路組態達到特定網路路徑，包括 VPC BPA 設定。在此範例中，您將分析先前嘗試的相同網路路徑，以確認 VPC BPA 是連線失敗的原因。

------
#### [ AWS 管理主控台 ]

1. 透過 [https://console.aws.amazon.com/networkinsights/home#ReachabilityAnalyzer](https://console.aws.amazon.com/networkinsights/home#ReachabilityAnalyzer) 前往 Network Insights 主控台。

1. 按一下**建立並分析路徑**。

1. 在**來源類型**欄位中，選擇**網際網路閘道**，然後從**來源**下拉式清單中選取標記為 **VPC BPA 網際網路閘道**的網際網路閘道。

1. 在**目的地類型**欄位中，選擇**執行個體**，然後從**目的地**下拉式清單中選取標記為 **VPC BPA 執行個體 A** 的執行個體。

1. 按一下**建立並分析路徑**。

1. 等候分析完成。這可能需要幾分鐘的時間。

1. 完成後，您應該會看到**連線性狀態**為**無法連線**，而且**路徑詳細資訊**顯示 `VPC_BLOCK_PUBLIC_ACCESS_ENABLED` 為原因。

------
#### [ AWS CLI ]

1. 使用標記為 VPC BPA 網路閘道的網際網路閘道 ID 和標記為 VPC BPA 執行個體 A 的執行個體 ID 建立網路路徑：

   ```
   aws ec2 --region us-east-2 create-network-insights-path --source igw-id --destination instance-id --protocol TCP
   ```

1. 在網路路徑上開始分析：

   ```
   aws ec2 --region us-east-2 start-network-insights-analysis --network-insights-path-id nip-id
   ```

1. 檢索分析的結果：

   ```
   aws ec2 --region us-east-2 describe-network-insights-analyses --network-insights-analysis-ids nia-id
   ```

1. 確認 `VPC_BLOCK_PUBLIC_ACCESS_ENABLED` 為 `ExplanationCode`，無法連線。

------

請注意，您也可以[使用流量日誌監控 VPC BPA 影響](security-vpc-bpa-assess-impact-main.md#security-vpc-bpa-fl)。

## 案例 3 – 將 VPC BPA 變更為僅限輸入模式
<a name="vpc-bpa-scenario-3"></a>

在本節中，您將變更 VPC BPA 流量方向，並只允許使用 NAT 閘道或僅輸出網際網路閘道的流量。公有子網路中的 EC2 執行個體 A 與 B 將無法從網際網路連線，因為 BPA 會封鎖透過網際網路閘道傳入的流量。私有子網路中的執行個體 C 與 D 仍可透過 NAT 閘道和僅限輸出網際網路閘道啟動傳出流量，因此仍然可以連線網際網路。

開啟的 VPC BPA 僅輸入模式的圖表：

![\[圖表，顯示 VPC 已啟用 VPC BPA 僅限輸入。\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/vpc-bpa-3.png)


### 3.1 將模式變更為僅輸入
<a name="vpc-bpa-scenario-1-connect-scen3-sub1"></a>

完成本節以變更模式。

------
#### [ AWS 管理主控台 ]

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在左側的導覽窗格中，選擇**設定**。

1. 在**封鎖公開存取**索引標籤中，選擇**編輯公開存取設定**。

1. 在 VPC 主控台中修改公開存取設定，並將方向變更為**僅輸入**。

1. 儲存變更並等待狀態更新。VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。

------
#### [ AWS CLI ]

1. 修改 VPC BPA 模式：

   ```
   aws ec2 --region us-east-2 modify-vpc-block-public-access-options --internet-gateway-block-mode block-ingress
   ```

   VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。

1. 檢視 VPC BPA 的狀態：

   ```
   aws ec2 --region us-east-2 describe-vpc-block-public-access-options
   ```

------

### 3.2 連線至執行個體
<a name="vpc-bpa-scenario-1-connect-scen3-sub2"></a>

完成本節以連線至執行個體。

------
#### [ AWS 管理主控台 ]

1. Ping 執行個體 A 和執行個體 B 的公有 IPv4 地址，如您在案例 1 中所執行的一樣。請注意，流量會遭到封鎖。

1. 使用 EC2 執行個體連線連線至執行個體 A 和 B，如同您在案例 1 中所做的，並從中 Ping www.amazon.com。請注意，您無法從執行個體 A 或 B 在網際網路上 Ping 公有網站，且流量會遭到封鎖。

1. 使用 EC2 執行個體連線連線至執行個體 C 和 D，如同您在案例 1 中所做的，並從中 Ping www.amazon.com。請注意，您可以從執行個體 C 或 D 對網際網路上 Ping 公有網站，並允許流量。

------
#### [ AWS CLI ]

1. 使用公有 IPv4 地址 Ping 執行個體 A 以檢查傳入流量：

   ```
   ping 18.225.8.244
   ```

   輸出：

   ```
   Pinging 18.225.8.244 with 32 bytes of data:
   
   Request timed out.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   The authenticity of host '10.0.1.85' can't be established.
   ECDSA key fingerprint is SHA256:3zo/gSss+HAZ+7eTyWlOB/Ke04IM+hadjsoLJeRTWBk.
   Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
   Warning: Permanently added '10.0.1.85' (ECDSA) to the list of known hosts.
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #_   ~_  ####_        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~._.   _/
   / /
   /m/'
   Last login: Fri Sep 27 14:16:53 2024 from 3.16.146.5
   [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用公有 IPv4 地址 Ping 執行個體 B 以檢查傳入流量：

   ```
   ping 3.18.106.198
   ```

   輸出：

   ```
   Pinging 3.18.106.198 with 32 bytes of data:
   Request timed out.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-08552a0774b5c8f72 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   The authenticity of host '10.0.2.98 ' can't be established.
   ECDSA key fingerprint is SHA256:0IjXKKyVlDthcCfI0IPIJMUiItAOLYKRNLGTYURnFXo.
   Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
   Warning: Permanently added '10.0.2.98' (ECDSA) to the list of known hosts.
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #   ~_  ####        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~..   _/
   _/ /
   /m/'
   Last login: Fri Sep 27 14:18:16 2024 from 3.16.146.5
   [ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 連線至執行個體 C。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
      ,     #_   ~\_  ####_        Amazon Linux 2023
     ~~  \_#####\  ~~     \###|
     ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
       ~~~         /
         ~~._.   _/
            _/ _/
          _/m/'                                                                                        
   Last login: Tue Sep 24 15:28:09 2024 from 10.0.2.86                                                     
   [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com                                                         
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.                                 
   64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=248 time=1.84 ms
   64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=248 time=1.40 ms
   ```

   請注意，Ping 成功且流量未遭到封鎖。

1. 連線至執行個體 D。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
      ,     #_   ~\_  ####_        Amazon Linux 2023
     ~~  \_#####\  ~~     \###|
     ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
       ~~~         /
         ~~._.   _/
            _/ _/
          _/m/'
   Last login: Fri Sep 27 16:48:38 2024 from 3.16.146.5
   [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
   PING www.amazon.com(2600:9000:25f3:5800:7:49a5:5fd4:b121 (2600:9000:25f3:5800:7:49a5:5fd4:b121)) 56 data bytes
   64 bytes from 2600:9000:25f3:5800:7:49a5:5fd4:b121 (2600:9000:25f3:5800:7:49a5:5fd4:b121): icmp_seq=14 ttl=58 time=1.47 ms
   64 bytes from 2600:9000:25f3:5800:7:49a5:5fd4:b121 (2600:9000:25f3:5800:7:49a5:5fd4:b121): icmp_seq=16 ttl=58 time=1.59 ms
   ```

   請注意，Ping 成功且流量未遭到封鎖。

------

## 案例 4 – 建立排除
<a name="vpc-bpa-scenario-4"></a>

在本節中，您會建立排除項目。然後，VPC BPA 只會封鎖*沒有*排除項目的子網路上的流量。VPC BPA 排除項目是可套用至單一 VPC 或子網路的模式，其會將其從帳戶的 VPC BPA 模式排除，並允許雙向或僅限輸出存取。即使帳戶未啟用 VPC BPA，您也可以為 VPC 和子網路建立 VPC BPA 排除項目，以確保在開啟 VPC BPA 時，排除項目不會發生流量中斷。

在此範例中，我們將建立子網路 A 的排除，以顯示到排除的流量受到 VPC BPA 的影響。

開啟 VPC BPA 僅輸入模式和開啟雙向模式的子網路 A 排除的圖表：

![\[此圖表顯示僅限輸入模式下具有 VPC BPA 排除項目的 VPC。\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/vpc-bpa-4.png)


### 4.1 建立子網路 A 的排除
<a name="vpc-bpa-scenario-1-connect-scen4-sub1"></a>

完成本節以建立排除。VPC BPA 排除項目是可套用至單一 VPC 或子網路的模式，其會將其從帳戶的 VPC BPA 模式排除，並允許雙向或僅限輸出存取。即使帳戶未啟用 VPC BPA，您也可以為 VPC 和子網路建立 VPC BPA 排除項目，以確保在開啟 VPC BPA 時，排除項目不會發生流量中斷。

------
#### [ AWS 管理主控台 ]

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在左側的導覽窗格中，選擇**設定**。

1. 在**封鎖公開存取**標籤的**排除**下，選擇**建立排除**。

1. 選擇 **VPC BPA 公有子網路 A**，確保選取允許方向**雙向**，然後選擇**建立排除**。

1. 等待**排除狀態**變更為**作用中**。您可能需要重新整理排除資料表才能查看變更。

已建立排除。

------
#### [ AWS CLI ]

1. 修改排除允許方向：

   ```
   aws ec2 --region us-east-2 create-vpc-block-public-access-exclusion --subnet-id subnet-id --internet-gateway-exclusion-mode allow-bidirectional
   ```

1. 可能需要一些時間才能更新排除狀態。檢視排除的狀態：

   ```
   aws ec2 --region us-east-2 describe-vpc-block-public-access-exclusions --exclusion-ids exclusion-id
   ```

------

### 4.2 連線至執行個體
<a name="vpc-bpa-scenario-1-connect-scen4-sub2"></a>

完成本節以連線至執行個體。

------
#### [ AWS 管理主控台 ]

1. Ping 執行個體 A 的公有 IPv4 地址。請注意，允許流量。

1. Ping 執行個體 B 的公有 IPv4 地址。請注意，流量已封鎖。

1. 使用 EC2 執行個體連線連線至執行個體 A，如同您在案例 1 中所做的，並 Ping www.amazon.com。請注意，您可以從執行個體 A 在網際網路上 Ping 公有網站。允許流量。

1. 使用 EC2 執行個體連線連線至執行個體 B，如同您在案例 1 中所做的，並從中 Ping www.amazon.com。請注意，您無法從執行個體 B 在網際網路上 Ping 公有網站。流量會遭到封鎖。

1. 使用 EC2 執行個體連線連線至執行個體 C 和 D，如同您在案例 1 中所做的，並從中 Ping www.amazon.com。請注意，您可以從執行個體 C 或 D 對網際網路上 Ping 公有網站。允許流量。

------
#### [ AWS CLI ]

1. 使用公有 IPv4 地址 Ping 執行個體 A 以檢查傳入流量：

   ```
   ping 18.225.8.244
   ```

   輸出：

   ```
   Pinging 18.225.8.244 with 32 bytes of data:
   
   Reply from 18.225.8.244: bytes=32 time=51ms TTL=110
   Reply from 18.225.8.244: bytes=32 time=61ms TTL=110
   ```

   請注意，Ping 成功且流量未遭到封鎖。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #_   ~_  ####_        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~._.   _/
   / /
   /m/'
   Last login: Fri Sep 27 17:58:12 2024 from 3.16.146.5
   [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=249 time=1.03 ms
   64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=249 time=1.72 ms
   ```

   請注意，Ping 成功且流量未遭到封鎖。

1. 使用公有 IPv4 地址 Ping 執行個體 B 以檢查傳入流量：

   ```
   ping 3.18.106.198
   ```

   輸出：

   ```
   Pinging 3.18.106.198 with 32 bytes of data:
   Request timed out.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-08552a0774b5c8f72 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #   ~_  ####        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~..   _/
   _/ /
   /m/'
   Last login: Fri Sep 27 18:12:03 2024 from 3.16.146.5
   [ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 連線至執行個體 C。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2 --connection-type eice
   ```

   Output

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #   ~_  ####        Amazon Linux 2023
   ~~  _#####\  ~~     ###|
   ~~       #/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
   ~~~         /
   ~~..   _/
   _/ /
   /m/'                                                                                           
   Last login: Tue Sep 24 15:28:09 2024 from 10.0.2.86                                                     
   [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com                                                         
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.                                 
   64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=248 time=1.84 ms
   64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=248 time=1.40 ms
   ```

   請注意，Ping 成功且流量未遭到封鎖。

1. 連線至執行個體 D。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2 --connection-type eice
   ```

   Output

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
      ,     #_   ~\_  ####_        Amazon Linux 2023
     ~~  \_#####\  ~~     \###|
     ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
       ~~~         /
         ~~._.   _/
            _/ _/
          _/m/'
   Last login: Fri Sep 27 18:00:52 2024 from 3.16.146.5
   [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
   PING www.amazon.com(g2600-141f-4000-059a-0000-0000-0000-3bd4.deploy.static.akamaitechnologies.com (2600:141f:4000:59a::3bd4)) 56 data bytes
   64 bytes from g2600-141f-4000-059a-0000-0000-0000-3bd4.deploy.static.akamaitechnologies.com (2600:141f:4000:59a::3bd4): icmp_seq=1 ttl=48 time=15.9 ms
   64 bytes from g2600-141f-4000-059a-0000-0000-0000-3bd4.deploy.static.akamaitechnologies.com (2600:141f:4000:59a::3bd4): icmp_seq=2 ttl=48 time=15.8 ms
   ```

   請注意，Ping 成功且流量未遭到封鎖。

------

### 4.3 選用：驗證與 Reachability Analyzer 的連線
<a name="vpc-bpa-scenario-1-connect-scen4-sub3"></a>

使用案例 2 中的 Reachability Analyzer 中建立的相同網路路徑，您現在可以執行新的分析，並確認現在已為公有子網路 A 建立排除項目，即可連線該路徑。

如需 Reachability Analyzer 區域可用性的相關資訊，請參閱*《Reachability Analyzer 指南》*中的[考量](https://docs.aws.amazon.com/vpc/latest/reachability/how-reachability-analyzer-works.html#considerations)。

------
#### [ AWS 管理主控台 ]

1. 從您先前在 Network Insights 主控台中建立的網路路徑中，按一下**重新執行分析**。

1. 等候分析完成。這可能需要幾分鐘的時間。

1. 確認路徑現在**可連線**。

------
#### [ AWS CLI ]

1. 使用先前建立的網路路徑 ID，開始新的分析：

   ```
   aws ec2 --region us-east-2 start-network-insights-analysis --network-insights-path-id nip-id
   ```

1. 檢索分析的結果：

   ```
   aws ec2 --region us-east-2 describe-network-insights-analyses --network-insights-analysis-ids nia-id
   ```

1. 確認 `VPC_BLOCK_PUBLIC_ACCESS_ENABLED` 說明代碼不再存在。

------

## 案例 5 – 修改排除模式
<a name="vpc-bpa-scenario-5"></a>

在本節中，您將變更排除的允許流量方向，以查看它如何影響 VPC BPA。

**注意**  
在此案例中，您会將排除模式變更為僅限輸出。請注意，當您執行此操作時，子網路 A 上的僅限輸出排除項目不允許傳出流量，這與直覺不相符，因為您預期它允許傳出流量。不過，由於帳戶層級 BPA 是僅限輸入，因此會忽略僅限輸出排除項目，且子網路 A 的網際網路閘道路由受到 VPC BPA 的限制，會封鎖傳出流量。若要在子網路 A 上啟用傳出流量，您必須將 VPC BPA 切換為雙向模式。

開啟 VPC BPA 僅輸入模式和開啟僅輸出模式的子網路 A 排除的圖表：

![\[圖表，顯示 VPC 的 VPC BPA 處於僅限輸入模式，允許透過 NAT 閘道傳出的流量。\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/vpc-bpa-5.png)


### 5.1 將排除允許方向變更為僅輸出
<a name="vpc-bpa-scenario-1-connect-scen5-sub1"></a>

完成本節以變更排除允許方向。

------
#### [ AWS 管理主控台 ]

1. 編輯您在案例 4 中建立的排除，並將允許方向變更為**僅輸出**。

1. 選擇**儲存變更**。

1. 等待**排除**狀態變更為**作用中**。VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。您可能需要重新整理排除資料表才能查看變更。

------
#### [ AWS CLI ]

1. 修改排除允許方向：

   ```
   aws ec2 --region us-east-2 modify-vpc-block-public-access-exclusion --exclusion-id exclusion-id --internet-gateway-exclusion-mode allow-egress
   ```

   VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。

1. 可能需要一些時間才能更新排除狀態。檢視排除的狀態：

   ```
   aws ec2 --region us-east-2 describe-vpc-block-public-access-exclusion
   ```

------

### 5.2 連線至執行個體
<a name="vpc-bpa-scenario-1-connect-scen5-sub2"></a>

完成本節以連線至執行個體。

------
#### [ AWS 管理主控台 ]

1. Ping 執行個體 A 和 B 的公有 IPv4 地址。請注意，流量已封鎖。

1. 使用 EC2 執行個體連線連線至執行個體 A 和 B，如同您在案例 1 中所做的，並 Ping www.amazon.com。請注意，您無法從執行個體 A 或 B 在網際網路上 Ping 公有網站。流量會遭到封鎖。

1. 使用 EC2 執行個體連線連線至執行個體 C 和 D，如同您在案例 1 中所做的，並從中 Ping www.amazon.com。請注意，您可以從執行個體 C 或 D 對網際網路上 Ping 公有網站。允許流量。

------
#### [ AWS CLI ]

1. 使用公有 IPv4 地址 Ping 執行個體 A 以檢查傳入流量：

   ```
   ping 18.225.8.244
   ```

   輸出：

   ```
   Pinging 18.225.8.244 with 32 bytes of data:
   Request timed out.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
      ,     #_   ~\_  ####_        Amazon Linux 2023
     ~~  \_#####\  ~~     \###|
     ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
       ~~~         /
         ~~._.   _/
            _/ _/
          _/m/'
   Last login: Fri Sep 27 18:09:55 2024 from 3.16.146.5
   [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用公有 IPv4 地址 Ping 執行個體 B 以檢查傳入流量：

   ```
   ping 3.18.106.198
   ```

   輸出：

   ```
   Pinging 3.18.106.198 with 32 bytes of data:
   Request timed out.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
      ,     #_   ~\_  ####_        Amazon Linux 2023
     ~~  \_#####\  ~~     \###|
     ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
       ~~~         /
         ~~._.   _/
            _/ _/
          _/m/'
   Last login: Fri Sep 27 18:09:55 2024 from 3.16.146.5
   [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 連線至執行個體 C。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2 --connection-type eice      
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
      ,     #_   ~\_  ####_        Amazon Linux 2023
     ~~  \_#####\  ~~     \###|
     ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
       ~~~         /
         ~~._.   _/
            _/ _/
          _/m/'
   Last login: Fri Sep 27 18:00:31 2024 from 3.16.146.5
   [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com
   PING www.amazon.com(2600:9000:25f3:a600:7:49a5:5fd4:b121 (2600:9000:25f3:a600:7:49a5:5fd4:b121)) 56 data bytes
   64 bytes from 2600:9000:25f3:a600:7:49a5:5fd4:b121 (2600:9000:25f3:a600:7:49a5:5fd4:b121): icmp_seq=1 ttl=58 time=1.51 ms
   64 bytes from 2600:9000:25f3:a600:7:49a5:5fd4:b121 (2600:9000:25f3:a600:7:49a5:5fd4:b121): icmp_seq=2 ttl=58 time=1.49 ms
   ```

   請注意，Ping 成功且流量未遭到封鎖。

1. 連線至執行個體 D。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
      ,     #_   ~\_  ####_        Amazon Linux 2023
     ~~  \_#####\  ~~     \###|
     ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
       ~~~         /
         ~~._.   _/
            _/ _/
          _/m/'
   Last login: Fri Sep 27 18:13:55 2024 from 3.16.146.5
   [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
   PING www.amazon.com(2606:2cc0::374 (2606:2cc0::374)) 56 data bytes
   64 bytes from 2606:2cc0::374 (2606:2cc0::374): icmp_seq=1 ttl=58 time=1.21 ms
   64 bytes from 2606:2cc0::374 (2606:2cc0::374): icmp_seq=2 ttl=58 time=1.51 ms
   ```

   請注意，Ping 成功且流量未遭到封鎖。

------

## 案例 6 – 修改 VPC BPA 模式
<a name="vpc-bpa-scenario-6"></a>

在本節中，您將變更 VPC BPA 區塊方向，以查看其如何影響流量。在此案例中，在雙向模式中啟用 VPC BPA 會封鎖所有流量，就像案例 1 一樣。除非排除可存取 NAT 閘道或僅輸出網際網路閘道，否則會封鎖流量。

開啟 VPC BPA 雙向模式和開啟僅輸出模式的子網路 A 排除的圖表：

![\[此圖表顯示僅限輸入模式下具有 VPC BPA 的 VPC，允許透過 NAT 閘道傳出流量。\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/vpc-bpa-6.png)


### 6.1 將 VPC BPA 變更為雙向模式
<a name="vpc-bpa-scenario-1-connect-scen6-sub1"></a>

完成本節以變更 VPC BPA 模式。

------
#### [ AWS 管理主控台 ]

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在左側的導覽窗格中，選擇**設定**。

1. 選擇**編輯公開存取設定**。

1. 將區塊方向變更為**雙向**，然後選擇**儲存變更**。

1. 等待**狀態**變更為**開啟**。VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。

------
#### [ AWS CLI ]

1. 修改 VPC BPA 區塊方向：

   ```
   aws ec2 --region us-east-2 modify-vpc-block-public-access-options --internet-gateway-block-mode block-bidirectional
   ```

   VPC BPA 設定可能需要幾分鐘的時間才會生效，並更新狀態。

1. 檢視 VPC BPA 的狀態：

   ```
   aws ec2 --region us-east-2 describe-vpc-block-public-access-options
   ```

------

### 6.2 連線至執行個體
<a name="vpc-bpa-scenario-1-connect-scen6-sub2"></a>

完成本節以連線至執行個體。

------
#### [ AWS 管理主控台 ]

1. Ping 執行個體 A 和 B 的公有 IPv4 地址。請注意，流量已封鎖。

1. 使用 EC2 執行個體連線連線至執行個體 A 和 B，如同您在案例 1 中所做的，並 Ping www.amazon.com。請注意，您無法從執行個體 A 或 B 在網際網路上 Ping 公有網站。流量會遭到封鎖。

1. 使用 EC2 執行個體連線連線至執行個體 C 和 D，如同您在案例 1 中所做的，並從中 Ping www.amazon.com。請注意，您無法從執行個體 C 或 D 在網際網路上 Ping 公有網站。流量會遭到封鎖。

------
#### [ AWS CLI ]

1. 使用公有 IPv4 地址 Ping 執行個體 A 以檢查傳入流量：

   ```
   ping 18.225.8.244
   ```

   輸出：

   ```
   Pinging 18.225.8.244 with 32 bytes of data:
   Request timed out.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
      ,     #_   ~\_  ####_        Amazon Linux 2023
     ~~  \_#####\  ~~     \###|
     ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
       ~~~         /
         ~~._.   _/
            _/ _/
          _/m/'
   Last login: Fri Sep 27 18:17:44 2024 from 3.16.146.5
   [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用公有 IPv4 地址 Ping 執行個體 A 以檢查傳入流量：

   ```
   ping 3.18.106.198
   ```

   輸出：

   ```
   Pinging 3.18.106.198 with 32 bytes of data:
   Request timed out.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 使用私有 IPv4 地址來連線和檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
      ,     #_   ~\_  ####_        Amazon Linux 2023
     ~~  \_#####\  ~~     \###|
     ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
       ~~~         /
         ~~._.   _/
            _/ _/
          _/m/'
   Last login: Fri Sep 27 18:09:55 2024 from 3.16.146.5
   [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
   PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 連線至執行個體 C。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2 --connection-type eice                                   
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
      ,     #_   ~\_  ####_        Amazon Linux 2023
     ~~  \_#####\  ~~     \###|
     ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
       ~~~         /
         ~~._.   _/
            _/ _/
          _/m/'
   Last login: Fri Sep 27 18:19:45 2024 from 3.16.146.5
   [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com
   PING www.amazon.com(2600:9000:25f3:6200:7:49a5:5fd4:b121 (2600:9000:25f3:6200:7:49a5:5fd4:b121)) 56 data bytes
   ```

   請注意，Ping 會失敗並封鎖流量。

1. 連線至執行個體 D。由於沒有公有 IP 位址可供 Ping，請使用「EC2 執行個體連線」連線執行個體，然後從執行個體 Ping 公有 IP 來檢查傳出流量：

   ```
   aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2 --connection-type eice                                  
   ```

   輸出：

   ```
   A newer release of "Amazon Linux" is available.  Version 2023.5.20240916:
   Run "/usr/bin/dnf check-release-update" for full release and version update info
      ,     #_   ~\_  ####_        Amazon Linux 2023
     ~~  \_#####\  ~~     \###|
     ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
      ~~       V~' '->
       ~~~         /
         ~~._.   _/
            _/ _/
          _/m/'
   Last login: Fri Sep 27 18:20:58 2024 from 3.16.146.5
   [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
   PING www.amazon.com(2600:9000:25f3:b400:7:49a5:5fd4:b121 (2600:9000:25f3:b400:7:49a5:5fd4:b121)) 56 data bytes
   ```

   請注意，Ping 會失敗並封鎖流量。

------

## 清除
<a name="vpc-bpa-scenario-cleanup"></a>

在本節中，您將刪除為此進階範例建立的所有資源。請務必清理資源，以避免帳戶中建立的資源產生過多的額外費用。

### 刪除 CloudFormation 資源
<a name="vpc-bpa-scenario-1-connect-cleanup-sub1"></a>

完成本節以刪除您使用 CloudFormation 範本建立的資源。

------
#### [ AWS 管理主控台 ]

1. 在 開啟 CloudFormation 主控台[https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/)。

1. 選擇 VPC BPA 堆疊。

1. 選擇 **刪除**。

1. 開始刪除堆疊後，請檢視**事件**標籤以檢視進度，並確保堆疊已刪除。您可能需要[強制刪除堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)，才能將其完全刪除。

------
#### [ AWS CLI ]

1. 刪除 CloudFormation 堆疊。您可能需要[強制刪除堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)，才能將其完全刪除。

   ```
   aws cloudformation delete-stack --stack-name VPC-BPA-stack --region us-east-2
   ```

1. 檢視進度並確保堆疊已刪除。

   ```
   aws cloudformation describe-stack-events --stack-name VPC-BPA-stack --region us-east-2
   ```

------

### 使用 CloudTrail 追蹤排除項目刪除
<a name="vpc-bpa-scenario-1-connect-cleanup-sub2"></a>

完成本節以使用 追蹤排除刪除 AWS CloudTrail。當您刪除排除時，會顯示 CloudTrail 項目。

------
#### [ AWS 管理主控台 ]

您可以在 的 CloudTrail 主控台中查詢**資源類型** > **AWS::EC2::VPCBlockPublicAccessExclusion**，以檢視 AWS CloudTrail 事件歷史記錄中任何已刪除的排除[https://console.aws.amazon.com/cloudtrailv2/](https://console.aws.amazon.com/cloudtrailv2/)。

------
#### [ AWS CLI ]

您可以使用 lookup-events 命令來檢視與刪除排除相關的事件：

```
aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::EC2::VPCBlockPublicAccessExclusion
```

------

進階範例已完成。