为什么我的 Amazon EC2 实例无法使用互联网网关连接到互联网?

上次更新日期:2022 年 6 月 8 日

我在公有子网中的 Amazon Elastic Compute Cloud(Amazon EC2)实例具有公有 IP 地址或互联网网关,但无法访问互联网。

简短描述

要排查您的 Amazon EC2 无法访问互联网的原因,请执行以下操作:

  • 验证 EC2 实例是否满足所有先决条件。
  • 验证实例是否具有公有 IP 地址。
  • 验证防火墙不会阻止访问。

解决方法

验证实例是否满足所有先决条件

实例必须满足以下条件:

验证实例是否具有公有 IP 地址

如果公有子网中的实例没有公有 IP 地址,则该实例无法在其所在的虚拟私有云(VPC)之外访问。即使实例具有互联网网关,也是如此。

要允许实例连接到互联网,请分配一个弹性 IP 地址将这个弹性 IP 地址关联到该实例

验证防火墙不会阻止访问

如果实例满足上述条件并且互联网连接问题仍然存在,则操作系统中可能正在运行本地防火墙。最佳做法是使用安全组,而不是在操作系统中设置本地防火墙。请确保禁用本地防火墙不会影响您的工作负载。

# For Uncomplicated Firewall
sudo ufw disable

# For firewalld
sudo systemctl disable firewalld --now

如果您必须使用防火墙,那么互联网连接问题通常与 OUTPUT 链有关。您可以通过运行以下命令来允许传出流量:

sudo iptables -P OUTPUT ACCEPT
sudo iptables -I OUTPUT 1 -j ACCEPT

Windows Server:

对于 Windows Server 默认防火墙,请运行以下命令:

netsh advfirewall firewall show rule name=all

如果上述命令表示流量被阻止,请删除旧规则或添加新规则,以允许该特定端口的流量。有关详细信息,请参阅理解 Windows 防火墙与高级安全规则结合使用的 Microsoft 文档。