我创建了一个 NAT 网关,用于从我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例访问互联网。我的实例在私有子网中使用 HTTP 或 HTTPS 端口,但无法访问互联网。
解决方法
验证目标可访问性和 NAT 网关状态
检查是否可以通过公共 IP 地址从其他源访问目标。确认 NAT 网关处于 Available(可用)状态。如果 NAT 网关处于 Failed(失败)状态,请参阅 NAT 网关创建失败。
**注意:**处于 Failed(失败)状态的 NAT 网关会在大约一小时后被自动删除。
确认您的子网和路由表配置
验证您是否在公共子网中创建了 NAT 网关。确认公共路由表具有将流量定向到互联网网关的默认路由。此外,确认私有子网的路由表具有将流量定向到 NAT 网关的默认路由。
**重要事项:**确保未对私有子网和公共子网使用相同的路由表。当使用相同的路由表时,流量将无法路由到互联网。
为防止 DNS 解析失败,请在您的虚拟私有云 (VPC) 中将 enableDnsSupport 属性设置为 true。有关详细信息,请参阅查看和更新 VPC 的 DNS 属性。
检查防火墙和端口设置
验证防火墙是否允许源主机和目标主机上通过端口 80 的流量(HTTP 流量)和通过端口 443 的流量(HTTPS 流量)。要检查连接,请运行以下命令:
telnet PUBLIC_IP TCP_PORT
查看安全组设置
确保附加到实例弹性网络接口的安全组允许流向端口 80 和 443 的出站流量。有关详细信息,请参阅 EC2 实例的 Amazon EC2 安全组。
检查与 NAT 网关子网关联的网络访问控制列表 (ACL)。要允许您的 EC2 实例访问 HTTPS 网站,与 NAT 网关子网关联的网络 ACL 必须具有以下规则:
入站规则
| | | |
|---|
| 源 | 协议 | 端口范围 | 允许/拒绝 |
| VPC CIDR | TCP | 443 | 允许 |
| PUBLIC_IP | TCP | 1024-65535 | 允许 |
出站规则
| | | |
|---|
| 目标 | 协议 | 端口范围 | 允许/拒绝 |
| PUBLIC_IP | TCP | 443 | 允许 |
| VPC CIDR | TCP | 1024-65535 | 允许 |
有关如何配置网络 ACL 的详细信息,请参阅使用网络访问控制列表控制子网流量。
相关信息
NAT gateways
Configure route tables