无需专用公网IP即可访问AWS EC2互联网

问题描述 投票:0回答:1

我使用 Terraform 创建了 AWS 基础设施。 EC2 实例无法访问 Internet,除非它们或其子网具有直接分配给它们的公共 IP 地址。 公有子网与路由表关联,该路由表具有到 IGW 0.0.0.0/0 的路由 私有子网与不同的路由表关联,该路由表具有到 NAT 网关 0.0.0.0/0 的路由

我正在使用用户数据在 EC2 实例上安装 nginx,但由于实例无法访问互联网而失败。 该基础设施还有一个负载均衡器,用于将端口 80 上的流量路由到公共子网上的实例。

如果我将map_public_ip_on_launch = true 添加到公共子网,那么它们就可以访问互联网。 IGW和NAT GW的目的不就是提供Internet访问而无需分配公共IP吗? NAT GW 当然有一个公共IP。 NACL 和 SG 允许所有出站流量。

amazon-web-services amazon-ec2 terraform terraform-provider-aws
1个回答
0
投票

基础设施还有一个负载均衡器来路由端口上的流量 80 到公有子网上的实例。 您似乎在公共子网中启动了实例? 公有子网中的实例不使用 NAT 网关访问互联网。

NAT 网关用于私有子网中的实例发起出站互联网流量,而无需为其分配公共 IP 地址。

您的路由表似乎是正确的。

但是,您的实例似乎位于公共子网中,与负载均衡器相同。您可以通过在私有子网中启动实例(使用到 NAT GW 的路由)来解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.