【问题标题】:AWS NAT Gateway does not let EC2 connect to Internet [closed]AWS NAT网关不允许EC2连接到互联网[关闭]
【发布时间】:2020-09-25 06:17:09
【问题描述】:

我有一个预先存在的 VPC,其子网 CIDR 为 172.31.80.0/20。

有一个 Internet 网关连接了此 VPC。

我创建了以下

  • NAT 网关,它有一个公共 IP 和一个私有 IP (172.31.90.191) 连接到同一个 VPC

  • 具有相同 VPC 和三个路由的路由表:

      1) 172.31.0.0/16 target local
    
      2) 0.0.0.0/0 target the NAT Gateway
    
      3) 172.32.0.0/16 target of PCX for my other VPC were my EC2 VPN is
    

NAT 关联到子网,子网关联到路由表。

VPC 上的 ACL、路由表和子网都允许所有流量所有协议所有端口 0.0.0.0/0 进出。

Amazon Linux 2 EC2 具有安全组以允许所有流量所有协议所有端口 0.0.0.0/0 进出。

当它启动时,cloud-init 会为其分配一个默认路由 172.31.80.1。 它无法 ping 8.8.8.8 并且无法 curl google.com

我调整了 FlowLogs 以捕获所有日志,对于 EC2 的 ENI,日志仅显示在 VPN 和 EC2 之间来回传输的数据包的 ACCEPT OK。

我什至看到 'dig google.com @8.8.8.8' 接受 OK

埃尼-???? 172.31.90.208 8.8.8.8 50974 53 17 6 402 1600966519 1600966524 接受确定

但我没有看到回复。

查看所有内容的详细信息会显示“可用”和“活动”状态,全为绿色。

我的网关出了什么问题?

cloud-init 是否给了我错误的网关 IP?

我了解 VPC 必须位于公共子网上的 NAT 之后。

据我了解,公共子网和私有子网之间的唯一区别是公共子网与路由表相关联,该路由表将 0.0.0.0/0 路由到 Internet 公开的目标。

我的路由表有 0.0.0.0/0 与 NAT 的目的地,它有一个公共 IP。还需要什么吗?

【问题讨论】:

  • 您能否确认 NAT 网关位于可访问公共 Internet 的子网中?
  • 我认为这是我正在寻找的澄清。 NAT 确实有一个公共 IP 地址,并且它与 EC2 位于同一子网中。除此之外还应该寻找什么?
  • 它不仅仅是一个公共 IP,NAT 需要存在于一个公共子网(一个带有使用互联网网关的路由表的子网)中。如果你有这个,NAT 网关可以与互联网通信
  • 您是在告诉我,要使 NAT 网关工作,它需要 Internet 网关吗?我将 RTB 更改为将 0.0.0.0/0 路由到 IGW,现在系统可以 curl google.com。我确实想要网络服务器的 IGW,但现在我认为 NAT 网关只会被后端系统使用,因为它们不需要公共 Internet 连接。
  • 是的,它需要 IGW 将流量路由到互联网,否则它只是您网络中无法访问互联网的另一台设备。

标签: amazon-web-services amazon-ec2 amazon-vpc amazon-gateway


【解决方案1】:

NAT 需要能够访问互联网(毕竟它只是您网络中的另一个资源)。

为此,请确保将其放置在公共子网中(有一个路由表,该路由表将互联网网关用于其0.0.0.0/0 路由)。

当人们使用 NAT 时,它将保留在公共子网中,使用 NAT 的资源位于私有子网中,并且路由表使用 NAT 作为目标。

【讨论】:

  • 我认为这已经很好地涵盖了。我从两个方面着手,在控制台上获得基础知识,并使用 Terraform 进行可重复的销毁和重建。
猜你喜欢
  • 1970-01-01
  • 2019-02-08
  • 2021-11-23
  • 2016-12-06
  • 2015-04-30
  • 1970-01-01
  • 2015-03-01
  • 2011-04-01
  • 2016-09-05
相关资源
最近更新 更多