

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

# VPC 的自訂網路 ACL
<a name="custom-network-acl"></a>

您可以建立自訂網路 ACL 並將其與子網路關聯，以允許或拒絕子網路層級的特定傳入或傳出流量。如需詳細資訊，請參閱[為您的 VPC 建立網路 ACL](create-network-acl.md)。

每個網路 ACL 都包含規則編號為星號 (\$1) 的預設傳入規則和預設傳出規則。這些規則可確保在封包未符合任何其他規則時拒絕該封包。

可以透過新增或移除規則來修改網路 ACL。您無法刪除規則編號為星號的規則。

對於每個新增的規則，必須設有允許回應流量的傳入或傳出規則。如需如何選取適當的暫時性連接埠範圍的詳細資訊，請參閱[暫時性連接埠](#nacl-ephemeral-ports)。

**傳入規則範例**  
下表顯示網路 ACL 的傳入規則。僅當 VPC 具有關聯的 IPv6 CIDR 區塊時，才能新增 IPv6 規則。IPv4 和 IPv6 流量會分別評估。因此，IPv4 流量的任何規則都不適用於 IPv6 流量。您可以在對應的 IPv4 規則旁新增 IPv6 規則，或在最後一個 IPv4 規則後新增 IPv6 規則。

在封包前往子網路時，系統會依據與子網路相關聯的網路 ACL 傳入規則評估該封包 (從編號最小的規則開始)。例如，假設有目的地為 HTTPS 連接埠 (443) 的 IPv4 流量。該封包不符合規則 100 或 105。但該封包符合規則 110，而該規則允許流量進入子網路。如果封包的目的地是連接埠 139 (NetBIOS)，它就不符合任何編號規則，因此 IPv4 流量的 \$1 規則最終也會拒絕該封包。


| 規則 \$1 | 類型 | 通訊協定 | 連接埠範圍 | 來源 | 允許/拒絕 | 說明 | 
| --- | --- | --- | --- | --- | --- | --- | 
| 100 | HTTP | TCP | 80 | 0.0.0.0/0 | 允許 |  允許來自任何 IPv4 地址的傳入 HTTP 流量。  | 
| 105 | HTTP | TCP | 80 | ::/0 | 允許 |  允許來自任何 IPv6 地址的傳入 HTTP 流量。  | 
| 110 | HTTPS | TCP | 443 | 0.0.0.0/0 | 允許 |  允許來自任何 IPv4 地址的傳入 HTTPS 流量。  | 
| 115 | HTTPS | TCP | 443 | ::/0 | 允許 | 允許來自任何 IPv6 地址的傳入 HTTPS 流量。 | 
| 120 | SSH | TCP | 22 | *192.0.2.0/24* | 允許 |  允許來自您家用網路公有 IPv4 地址範圍的傳入 SSH 流量 (透過網際網路閘道)。  | 
| 140 | 自訂 TCP | TCP | *32768-65535* | 0.0.0.0/0 | 允許 |  允許來自網際網路的傳入回傳 IPv4 流量 (針對出自子網路的請求)。  | 
| 145 | 自訂 TCP | TCP | *32768-65535* | ::/0 | 允許 |  允許來自網際網路的傳入回傳 IPv6 流量 (針對出自子網路的請求)。  | 
| \$1 | 所有流量 | 全部 | 全部 | 0.0.0.0/0 | 拒絕 |  拒絕上述規則 (無法修改) 尚未處理的所有傳入 IPv4 流量。  | 
| \$1 | 所有流量 | 全部 | 全部 | ::/0 | 拒絕 |  拒絕上述規則 (無法修改) 尚未處理的所有傳入 IPv6 流量。  | 

**傳出規則範例**  
下表顯示自訂網路 ACL 的傳出規則範例。僅當 VPC 具有關聯的 IPv6 CIDR 區塊時，才能新增 IPv6 規則。IPv4 和 IPv6 流量會分別評估。因此，IPv4 流量的任何規則都不適用於 IPv6 流量。您可以在對應的 IPv4 規則旁新增 IPv6 規則，或在最後一個 IPv4 規則後新增 IPv6 規則。


| 規則 \$1 | 類型 | 通訊協定 | 連接埠範圍 | 目的地 | 允許/拒絕 | 說明 | 
| --- | --- | --- | --- | --- | --- | --- | 
| 100 | HTTP | TCP | 80 | 0.0.0.0/0 | 允許 | 允許傳出 IPv4 HTTP 流量從子網路流向網際網路。 | 
| 105 | HTTP | TCP | 80 | ::/0 | 允許 | 允許傳出 IPv6 HTTP 流量從子網路流向網際網路。 | 
| 110 | HTTPS | TCP | 443 | 0.0.0.0/0 | 允許 | 允許傳出 IPv4 HTTPS 流量從子網路流向網際網路。 | 
| 115 | HTTPS | TCP | 443 | ::/0 | 允許 | 允許傳出 IPv6 HTTPS 流量從子網路流向網際網路。 | 
| 120 | 自訂 TCP | TCP | *1024-65535* | *192.0.2.0/24* | 允許 |  允許對來自家用網路的 SSH 流量進行傳出回應。  | 
| 140 | 自訂 TCP | TCP | *32768-65535* | 0.0.0.0/0 | 允許 | 允許對網際網路上的用戶端進行傳出 IPv4 回應 (例如，提供網頁服務)。 | 
| 145 | 自訂 TCP | TCP | *32768-65535* | ::/0 | 允許 | 允許對網際網路上的用戶端進行傳出 IPv6 回應 (例如，提供網頁服務)。  | 
| \$1 | 所有流量 | 全部 | 全部 | 0.0.0.0/0 | 拒絕 | 拒絕上述規則尚未處理的所有傳出 IPv4 流量。 | 
| \$1 | 所有流量 | 全部 | 全部 | ::/0 | 拒絕 | 拒絕上述規則尚未處理的所有傳出 IPv6 流量。 | 

## 暫時性連接埠
<a name="nacl-ephemeral-ports"></a>

上節的範例網路 ACL 是使用 32768-65535 暫時性連接埠範圍。不過，建議您依據所使用的用戶端類型或要通訊的目標，為您的網路 ACL 使用不同範圍。

初始化請求的用戶端會選擇暫時性連接埠範圍。範圍需視用戶端作業系統而定。
+ 許多 Linux 核心 (包括 Amazon Linux 核心) 使用的連接埠 32768-61000。
+ 來自 Elastic Load Balancing 的請求會使用連線埠 1024-65535。
+ Windows 作業系統到 Windows Server 2003 使用連接埠 1025-5000。
+ Windows Server 2008 和更新版本使用連接埠 49152-65535。
+ NAT 閘道使用連接埠 1024-65535。
+ AWS Lambda 函數使用連接埠 1024-65535。

例如，如果送達 VPC 之 Web 伺服器的請求是來自網際網路的 Windows 10 用戶端，您的網路 ACL 就必須具有傳出規則以讓流量通往連接埠 49152-65535。

如果啟動請求的用戶端是您 VPC 中的執行個體，您的網路 ACL 就必須具有傳入規則以讓流量通往特定執行個體作業系統的暫時性連接埠。

實際操作時，為了涵蓋各種可能初始化流量至 VPC 中公開執行個體的不同用戶端類型，您可以開啟暫時性連接埠 1024-65535。不過，您也可以新增規則至 ACL 以拒絕該範圍內任何惡意連接埠上的流量。請務必比開啟廣泛暫時性連接埠的允許規則更早在資料表中放入拒絕規則。

## 自訂網路 ACLs和其他 AWS 服務
<a name="nacl-other-services"></a>

如果您建立自訂網路 ACL，請注意它如何影響您使用其他 AWS 服務建立的資源。

透過 Elastic Load Balancing，如果您已在後端執行個體子網路的網路 ACL 中，針對來源為 `0.0.0.0/0` 或子網路 CIDR 的所有流量新增*拒絕*規則，您的負載平衡器就無法對執行個體執行運作狀態檢查。如需有關負載平衡器與後端執行個體之建議網路 ACL 規則的詳細資訊，請參閱下列主題：
+ [Application Load Balancer 的網路 ACL](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html)
+ [Network Load Balancer 的網路 ACL](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-register-targets.html#network-acls)
+ [Classic Load Balancer 的網路 ACL](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-vpc-network-acls.html)

## 對連線能力問題進行疑難排解
<a name="network-acl-rules-troubleshoot"></a>

Reachability Analyzer 是一種靜態組態分析工具。使用 Reachability Analyzer 來分析 VPC 中兩項資源之間的網路連線能力並進行偵錯。Reachability Analyzer 會在可連線虛擬路徑時，在這些路徑之間產生逐個躍點的詳細資訊，並在無法連線時識別導致阻礙的元件。例如，它可以識別遺失或設定錯誤的網路 ACL 規則。

如需詳細資訊，請參閱 [Reachability Analyzer Guide](https://docs.aws.amazon.com/vpc/latest/reachability/) (《Reachability Analyzer 指南》)。