我建立了 NAT 閘道,以從 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體存取網際網路。我的執行個體在私有子網路中使用 HTTP 或 HTTPS 連接埠,但無法存取網際網路。
解決方法
確認執行個體符合下列條件:
1. 透過使用公有 IP 位址從其他來源對目的地進行 Ping,可存取目的地。
2. NAT 閘道處於可用狀態。如果 NAT 閘道處於失敗狀態,請參閱 NAT 閘道建立失敗。
注意:處於失敗狀態的 NAT 閘道會在大約一小時後自動刪除。
3. 您在公有子網路中建立了 NAT 閘道,且公有路由表有一個指向網際網路閘道的預設路由。
4. 私有子網路的路由表具有指向 NAT 閘道的預設路由。
**重要:**請確定您沒有對私有子網路和公有子網路使用相同的路由表。使用相同的路由表意味著流量不會路由至網際網路。
5. 在 VPC 中,enableDnsSupport 屬性設定為 true。如需詳細資訊,請參閱 檢視和更新 VPC 的 DNS 屬性。
**注意:**開啟 DNS 以防止 DNS 解析失敗。
6. 防火牆不會封鎖連接埠 80 (對於 HTTP 流量) 和 443 (對於 HTTPS 流量) 上的流量。請確定檢查防火牆是否封鎖目的地主機上的流量。您可以使用下列範例命令來檢查防火牆:
$ telnet PUBLIC_IP TCP_PORT
7. 連接至執行個體的彈性網路介面的安全群組允許傳出流量傳至達連接埠 80 和 443。如需詳細資訊,請參閱適用於 Linux 執行個體的 Amazon EC2 安全群組或適用於 Windows 執行個體的 Amazon EC2 安全群組。
8. 下列範例的規則允許使用目的地 IP 位址 0.0.0.0/0 在連接埠 80 和 443 上進行傳入和傳出流量:
- 與執行個體所在的私有子網路關聯的網路存取控制清單 (ACL)。
- 與 NAT 閘道所在的公有子網路關聯的網路 ACL。
若要允許 Amazon EC2 執行個體存取 HTTPS 網站,與 NAT 閘道子網路關聯的網路 ACL 必須具有下列規則:
傳入規則
| | | |
---|
來源 | 協定 | 連接埠範圍 | 允許/拒絕 |
VPC CIDR | TCP | 443 | 允許 |
PUBLIC_IP | TCP | 1024-65535 | 允許 |
傳出規則
| | | |
---|
目的地 | 協定 | 連接埠範圍 | 允許/拒絕 |
PUBLIC_IP | TCP | 443 | 允許 |
VPC CIDR | TCP | 1024-65535 | 允許 |
如需有關設定網路 ACL 的詳細資訊,請參閱使用網路 ACL。
相關資訊
NAT 閘道
設定路由表