上次更新时间:2021 年 2 月 19 日
我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例有一个公有 IP 地址,但无法访问互联网。如何修复此问题?
解决方法 验证实例是否满足所有先决条件实例必须满足以下条件:
与实例子网关联的路由表具有通往互联网网关的默认路由 (0.0.0.0/0)。 与路由关联的互联网网关未被删除。 附加到实例弹性网络接口的安全组具有允许端口和协议的出站 Internet 流量 (0.0.0.0/0) 的规则。 与实例子网关联的网络访问控制列表(网络 ACL)包含允许出站和入站流量进入 Internet 的规则。 验证实例是否具有公有 IP 地址如果实例没有公有 IP 地址,但具有互联网网关,则该实例无法在其所在的 Virtual Private Cloud (VPC) 之外访问。
要允许实例连接到 Internet,请分配弹性 IP 地址并将其与实例关联。
或者,启用子网中的公有 IPv4 寻址属性。启用 IPv4 寻址属性意味着在启动时会将公共 IP 地址分配给在子网中启动的实例。
验证防火墙不会阻止访问如果实例满足上述条件,而 Internet 连接问题仍然存在,请尝试以下操作:
1.FSP 使用 ping 或 curl 工具从已知工作实例或设备测试对站点或位置的可访问性。
2.FSP 验证任何防火墙设备或软件是否允许 HTTP 或 HTTPS 流量。
运行以下命令以验证不存在会阻止流量的规则:
$ sudo iptables -L
$ sudo iptables -L -t nat
如果上述命令表示流量被阻止,请删除规则或添加规则,以允许该特定端口的流量。在以下示例中,将 examplerule 替换为新规则,将端口 80 替换为您的特定端口号。
$ sudo iptables -D examplerule
$ sudo iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT
Windows Server:
对于 Windows Server 默认防火墙,请运行以下命令:
netsh advfirewall firewall show rule name=all
如果上述命令表示流量被阻止,请添加新规则,以允许该特定端口的流量。在以下示例中,将端口 80 替换为您的特定端口号。
netsh advfirewall firewall add rule name="Open Port 80" dir=in action=allow protocol=TCP localport=80