本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EC2安全群組連線追蹤
您的安全群組使用連線追蹤來追蹤流入和流出執行個體流量的資訊。規則會根據流量的連線狀態套用,以判斷該允許或拒絕該流量。使用這種方法,安全群組是可設定狀態的。這表示傳入流量的回應可從執行個體傳出,與對外安全群組規則無關,反之亦然。
例如,假設您從家用電腦啟動諸如 netcat 或類似執行個體的命令,且您的傳入安全群組規則允許ICMP流量。會追蹤連線的相關資訊 (包括連接埠資訊)。來自 命令執行個體的回應流量不會追蹤為新的請求,而是建立的連線,即使傳出安全群組規則限制傳出ICMP流量,也可以從執行個體流出。
對於 TCP、 UDP或 以外的通訊協定ICMP,只會追蹤 IP 地址和通訊協定編號。若您的執行個體傳送流量到另一個主機,且該主機也在 600 秒內將相同類型的流量傳送至您的執行個體,無論傳入安全群組規則為何,執行個體的安全群組都會接受該流量。安全群組會接受該流量,因為將其視為原始流量的回應流量。
變更安全群組規則時,其跟蹤的連線不會立即中斷。安全群組將繼續允許封包,直到現有連線逾時為止。為確保流量立即中斷,或所有流量都受到防火牆規則的約束,無論追蹤狀態為何,您都可以ACL為子網路使用網路。網路無狀態ACLs,因此不會自動允許回應流量。新增封鎖任一方向流量的網路ACL會中斷現有的連線。如需詳細資訊,請參閱 Amazon VPC使用者指南 中的網路ACLs。
注意
安全群組不會影響往返 Route 53 Resolver 的DNS流量,有時稱為 'VPC+2 IP 地址' (請參閱 Amazon Route 53 開發人員指南 中的什麼是 Amazon Route 53 Resolver?) 或 'AmazonProvidedDNS' (請參閱 Amazon Virtual Private Cloud 使用者指南 中的使用DHCP選項集)。如果您想要透過 Route 53 Resolver 篩選DNS請求,您可以啟用 Route 53 Resolver DNS Firewall (請參閱 Amazon Route 53 開發人員指南 中的 Route 53 Resolver DNS Firewall)。
未追蹤的連線
並非所有的流量流程都會追蹤。如果安全群組規則允許TCP或UDP所有流量 (0.0.0.0/0 或 ::/0) 的流量,而另一個方向有對應的規則允許任何連接埠 (0-65535) 的所有回應流量 (0.0.0.0/0 或 ::/0),則不會追蹤該流量,除非它是自動追蹤連線 的一部分。接著會依據允許回應流量的傳入或傳出規則允許未追蹤流的回應流量,而非依據追蹤資訊。
若啟用未受追蹤之流量流程的規則遭到移除或修改,則該流程會立即中斷。例如,如果您有開啟的 (0.0.0.0/0) 傳出規則,而且您移除允許所有 (0.0.0.0/0) 傳入 SSH(TCP連接埠 22) 流量到執行個體的規則 (或修改此規則,使其不再允許連線),則您與該執行個體的現有SSH連線會立即中斷。該連線之前未被追蹤,因此該變更會中斷連線。另一方面,如果您的傳入規則較窄,最初允許SSH連線 (表示追蹤連線),但將該規則變更為不再允許來自目前SSH用戶端地址的新連線,則現有的SSH連線不會因為追蹤而中斷。
自動追蹤連線
透過下列方式建立的連線會自動追蹤,即使安全群組組態不需要追蹤:
輸出限定網際網路閘道
Global Accelerator 加速器
NAT 閘道
Network Firewall 防火墻端點
Network Load Balancer
AWS PrivateLink (介面VPC端點)
AWS Lambda (超平面彈性網路介面)
連線追蹤額度
Amazon EC2會定義每個執行個體可追蹤的最大連線數。達到最大值之後,任何傳送或接收的封包都會捨棄,因為無法建立新的連線。發生這種情況時,傳送及接收封包的應用程式無法正確通訊。使用 conntrack_allowance_available
網路效能指標來判斷該執行個體類型仍可使用的追蹤連線數目。
若要判斷是否因為執行個體的網路流量超過可追蹤的連線數目上限而捨棄封包,請使用 conntrack_allowance_exceeded
網路效能指標。如需詳細資訊,請參閱監控EC2執行個體上ENA設定的網路效能。
使用 Elastic Load Balancing 時,如果超過每個執行個體可追蹤的連線數目上限,建議您使用負載平衡器調整執行個體數目,或使用負載平衡器調整執行個體大小。
連線追蹤效能考量
非對稱路由,其中流量透過一個網路界面進入執行個體,並透過不同的網路界面離開,可以減少執行個體在追蹤流程時可以達到的峰值效能。
若要在為安全群組啟用連線追蹤時維持峰值效能,我們建議您使用下列組態:
-
如果可能,請避免非對稱路由拓撲。
-
使用網路 而不是使用安全群組進行篩選ACLs。
-
如果您必須使用安全群組進行連線追蹤,請設定最短的閒置連線追蹤逾時。如需閒置連線追蹤逾時的詳細資訊,請參閱下一節。
如需 Nitro 系統效能調校的詳細資訊,請參閱 對於性能調整的硝基系統考量。
閒置連線追蹤逾時
安全群組會追蹤每個建立的連線,以確保傳回封包如預期交付。每個執行個體可追蹤的連線數目上限。處於閒置狀態的連線可能會導致連線追蹤耗盡,並造成不追蹤連線及捨棄封包。您可以在彈性網路介面上設定閒置連線追蹤的逾時。
注意
此功能僅適用於 Nitro 型執行個體 。
可設定的逾時有三種:
TCP 已建立的逾時 :已建立狀態下閒置TCP連線的逾時 (以秒為單位)。最小值:60 秒。最大值:432000 秒 (5 天)。預設:432000 秒。建議使用:432000 秒以下。
UDP 逾時 :只看到單一方向或單一請求回應交易流量的閒置UDP流程逾時 (秒)。最小值:30 秒。最大值:60 秒。預設:30 秒。
UDP 串流逾時 :分類為已看到超過一次請求回應交易之串流的閒置UDP流程逾時 (以秒為單位)。最小值:60 秒。最大值:180 秒 (3 分鐘) 預設值:180 秒。
您可修改下列任何情況的預設逾時:
-
如果您使用 Amazon EC2 網路效能指標 監控追蹤的連線,則 conntrack_allowance_exceeded 和 conntrack_allowance_available 指標可讓您監控丟棄的封包和追蹤的連線使用率,以透過向上或向外擴展動作主動管理EC2執行個體容量,以協助滿足網路連線需求,然後再捨棄封包。如果您正在觀察EC2執行個體上的 conntrack_allowance_exceeded 捨棄,您可能會從設定較低的TCP已設定逾時中獲益,以考慮因不當用戶端或網路中間框而導致的過時TCP/UDP工作階段。
一般而言,負載平衡器或防火牆TCP已建立 60 到 90 分鐘的閒置逾時。如果您執行的工作負載預期會處理來自網路防火牆等設備的非常大量連線 (大於 100k),建議您在EC2網路介面上設定類似的逾時。
如果您執行的工作負載使用非對稱路由拓撲,建議您設定TCP已建立的閒置逾時為 60 秒。
如果您正在執行具有大量連線的工作負載,例如 DNS、SIP、SNMPSyslog、Radius 和其他主要用於UDP提供請求的服務,請將「UDP串流」逾時設定為 60 秒,可為現有容量提供更高的規模/效能,並防止灰色故障。
對於 TCP/UDP connections through network load balancers (NLBs) and elastic load balancers (ELB), all connections are tracked. Idle timeout value for TCP flows is 350secs and UDP flows is 120 secs, and varies from interface level timeout values. You may want to configure timeouts at the network interface level to allow for more flexibility for timeout than the defaults for ELB/NLB。
執行下列操作時,您可以選擇設定連線追蹤逾時:
範例
在下列範例中,安全群組具有允許 TCP和 ICMP 流量的傳入規則,以及允許所有傳出流量的傳出規則。
通訊協定類型 | 連接埠號碼 | 來源 |
---|---|---|
TCP | 22 (SSH) | 203.0.113.1/32 |
TCP | 80 (HTTP) | 0.0.0.0/0 |
TCP | 80 (HTTP) | ::/0 |
ICMP | 全部 | 0.0.0.0/0 |
通訊協定類型 | 連接埠號碼 | 目的地 |
---|---|---|
全部 | 全部 | 0.0.0.0/0 |
全部 | 全部 | ::/0 |
對於執行個體或網路介面的直接網路連線,追蹤行為如下:
-
會追蹤連接埠 22 (SSH) 上的傳入和傳出TCP流量,因為傳入規則僅允許來自 203.0.113.1/32 的流量,而不是所有 IP 地址 (0.0.0.0/0)。
-
不會追蹤連接埠 80 (HTTP) 上的傳入和傳出TCP流量,因為傳入和傳出規則允許來自所有 IP 地址的流量。
-
ICMP 一律追蹤流量。
如果您移除IPv4流量的傳出規則,則會追蹤所有傳入和傳出IPv4流量,包括連接埠 80 () 上的流量HTTP。如果您移除IPv6流量的傳出規則,則同樣適用於IPv6流量。