我在公有子网中的 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
如果您必须使用防火墙,则互联网连接问题通常与输出链相关。您可以通过运行以下命令来允许传出流量:
sudo iptables -P OUTPUT ACCEPT
sudo iptables -I OUTPUT 1 -j ACCEPT
Windows Server:
对于 Windows Server 默认防火墙,运行以下命令:
netsh advfirewall firewall show rule name=all
如果前面的命令显示流量被阻止,则移除旧规则或添加允许该特定端口的流量的新规则。有关详细信息,请参阅 Microsoft 文档了解具有高级安全规则的 Windows 防火墙。
相关信息
使用互联网网关连接到互联网
使用安全组控制流向您的 AWS 资源的流量
为什么私有子网中的 Amazon EC2 实例无法使用 NAT 网关连接到互联网?