为什么私有子网中的 Amazon EC2 实例无法使用 NAT 网关连接到互联网?

2 分钟阅读
0

我创建了一个 NAT 网关,以便从我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例访问互联网。我的实例在私有子网中使用 HTTP 或 HTTPS 端口,但无法访问互联网。

解决方法

验证实例满足了以下条件:

1.    通过使用公有 IP 地址从其他源对目标执行 ping 操作可访问目标。

2.    NAT 网关处于 Available(可用)状态。如果 NAT 网关处于 Failed(故障)状态,请参阅 NAT 网关创建失败

注意:处于Failed(故障)状态的 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.    以下示例都有允许在端口 80 和 443 上使用目标 IP 地址 0.0.0.0/0 的入站和出站流量的规则:

  • 与实例所在的私有子网关联的网络访问控制列表 (ACL)。
  • 与 NAT 网关所在的公有子网关联的网络 ACL。

要允许 Amazon EC2 实例访问 HTTPS 网站,与 NAT 网关子网关联的网络 ACL 的子网必须具有以下规则:

入站规则

协议端口范围允许/拒绝
VPC CIDRTCP443允许
PUBLIC_IPTCP1024-65535允许

出站规则

目的地协议端口范围允许/拒绝
PUBLIC_IPTCP443允许
VPC CIDRTCP1024-65535允许

有关配置网络 ACL 的更多信息,请参阅使用网络 ACL


相关信息

NAT 网关

配置路由表

AWS 官方
AWS 官方已更新 2 年前