我在公有子網路中的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體具有公有 IP 位址或網際網路閘道,但其無法存取網際網路。
解決方法
先決條件:
- 將路由表與執行個體閘道建立聯,且該路由表需包含指向網際網路閘道 (0.0.0.0/0) 的預設路由。
- 檢查您是否刪除了與該路由關聯的網際網路閘道。
- 請為附加在執行個體彈性網路介面上的安全群組,設定規則以允許您的連接埠和通訊協定的傳出網際網路流量 (0.0.0.0/0)。
- 確認與您的執行個體子閘道聯的網路存取控制清單 (ACL) 具有允許網際網路傳出和傳入流量的規則。
如果公有子網路中的執行個體沒有公有 IP 位址,則該執行個體無法從其虛擬私有雲端 (VPC) 外部存取。即使執行個體具有網際網路閘道,情況也是如此。
若要允許執行個體連線到網際網路,請指派彈性 IP 位址,然後將彈性 IP 位址與執行個體建立關聯。
對於具有公有 IP 位址的執行個體,請檢查是否有防火牆規則封鎖網際網路存取,並將該規則移除。或者,停用防火牆。
移除封鎖存取的防火牆規則
作業系統 (OS) 中執行的本機防火牆可能會封鎖對特定連接埠或 IP 位址的傳出存取。若要解決此問題,請列出您的防火牆規則,然後刪除封鎖存取的規則。
**注意:**在刪除任何規則之前,請將規則備份到檔案中。
Linux 發行版
若要列出防火牆規則,請根據您在執行個體上設定的防火牆,執行下列其中一個命令:
Uncomplicated firewall
sudo ufw status numbered
firewalld
sudo firewall-cmd --list-all-zones
iptables
sudo iptables -L --line-numbers
若要刪除防火牆規則,請根據您在執行個體上設定的防火牆,執行下列其中一個命令。
Uncomplicated firewall
sudo ufw delete rule_number
**注意:**將 rule_number 替換為您要刪除的防火牆規則。
firewalld
sudo firewall-cmd --zone=zone --remove-rich-rule=rule --permanent
sudo firewall-cmd --reload
**注意:**移除 --permanent 規則後,您必須重新載入防火牆,以使變更在執行時期組態中立即生效。
iptables
sudo iptables-save > iptables_backup.txt
sudo iptables -D chain rule_number
Windows Server
若要列出 Windows Server 預設防火牆的防火牆規則,請執行下列命令:
netsh advfirewall firewall show rule name=all
如果上述命令的輸出中有任何規則顯示流量遭到封鎖,請執行以下命令移除防火牆規則:
netsh advfirewall firewall delete rule name=rule_name
**注意:**將 rule_name 替換為封鎖流量的防火牆規則名稱。
如需詳細資訊,請參閱 Microsoft Learn 網站上的 Windows 防火牆工具。
停用防火牆
Linux 發行版
您也可以停用本機防火牆,並改用安全群組。
**注意:**停用防火牆可能會影響您的工作負載。
若要停用防火牆,請執行下列其中一個命令:
Uncomplicated firewall
sudo ufw disable
firewalld
sudo systemctl disable firewalld --now
iptables
sudo systemctl disable iptables
如果必須使用防火牆,請執行下列其中一個命令以允許傳出流量:
Uncomplicated firewall
sudo ufw default allow outgoing
iptables
sudo iptables P OUTPUT ACCEPT
sudo iptables I OUTPUT j ACCEPT
**注意:**預設情況下,firewalld 對任何區域都允許系統所有的傳出流量,除非有設定複雜規則限制。
Windows Server
若要停用 Windows Server 預設防火牆的 Windows 防火牆,請執行下列命令:
netsh advfirewall set allprofiles state off
如需詳細資訊,請參閱 Microsoft Learn 網站上的 Windows 防火牆工具。
相關資訊
使用網際網路閘道為 VPC 啟用網際網路存取
為什麼我無法使用 NAT 將私有子網路中的 EC2 執行個體連線到網際網路?