我创建了一个 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 CIDR | TCP | 443 | 允许 |
PUBLIC_IP | TCP | 1024-65535 | 允许 |
出站规则
| | | |
---|
目的地 | 协议 | 端口范围 | 允许/拒绝 |
PUBLIC_IP | TCP | 443 | 允许 |
VPC CIDR | TCP | 1024-65535 | 允许 |
有关配置网络 ACL 的更多信息,请参阅使用网络 ACL。
相关信息
NAT 网关
配置路由表