尽管按规则配置了NAT、Internet Gateway,AWS VPC还是无法访问Internet

AWS VPC can't access Internet despite configuring NAT, Internet Gateway according to rules

我对此有点迷茫 - 我已经关注了 AWS 文档,但似乎我找不到更多信息。情况总结是我在 VPC 中有一个 EC2 实例,尽管按照 Amazon AWS 为 VPC 设置 NAT 的说明,它仍然无法访问 Internet。详情如下:

  1. 我有一个 VPC,有一个子网 (CIDR 10.0.0.0/24) 和一个 EC2 实例(它只有 VPC 内的私有 IP 地址,10.0.0.168)

  2. 我已经创建了一个 Internet 网关并将其附加到上述 VPC。

  3. 我已经为入站和出站流量创建了一个允许所有流量为 0.0.0.0/0 的网络 ACL,并将 ACL 附加到 VPC 的唯一子网。

  4. VPC子网安全组也允许0.0.0.0/0的所有流量进出

  5. 我创建了一个 NAT 网关,它在 VPC (10.0.0.95) 中有一个私有 IP 地址和一个 public 弹性 IP 地址(比如 18.154.34.97,但我假设这没关系)。此 NAT 网关附加到 VPC 的唯一子网。

  6. 我创建了与 VPC 的子网 (10.0.0.0/24) 相关联的路由 table 并包含两个条目:

    Destination     Target
    10.0.0.0/24     local
    0.0.0.0/0       nat-gateway-id
  1. 为了访问 VPC,我创建了一个地址范围为 10.1.0.0/22 的客户端 VPN 端点并将其与正确的 VPN 子网相关联。

  2. 我可以使用 OpenVPN 连接到客户端 VPN 端点并通过 ssh 连接到 EC2 实例。但是,从那个实例我无法访问互联网。同样,当连接到此客户端 VPN 端点时,我的本地计算机也无法访问 Internet。我已尝试在 VPC (10.0.0.95) 中对 NAT 地址执行 ping 操作,但无法从任何一台机器访问它。

  3. 一切都是我在使用可达性分析器时设置了绿色、活动等,我得到以下信息:

Route table rtb-(...) does not have an applicable route to igw-(...)

我将事情路由到 NAT,而不是 Internet 网关,据我所知,当我仅在 VPC 中拥有私有 IP 地址时,这是解决此问题的正确方法。

Traffic cannot reach the internet through internet gateway igw-(...) because the source address is not paired with a public IP address. To add or edit an IPv4 public IP address to the source, you can use an Elastic IP address.

如果我对NAT的理解是正确的,它在从VPC内部实例之一接收数据后成为互联网网关的源地址。此 NAT 有一个 public 弹性 IP 地址。

Internet gateway igw-(...) cannot accept traffic with spoofed addresses from the VPC.

它不应该获得任何此类流量,因为它应该通过 NAT,对吧?

我不知道我在这里错过了什么...

NAT 网关必须位于 public 子网中,其路由 table 将互联网流量路由到互联网网关。

您需要两个子网。一个 public 和一个私人

Public 子网

Public 子网可以设置 启用 public IP。它应该有 NAT 网关 和路由 table:

 Destination     Target
    10.0.0.0/24     local
    0.0.0.0/0       internet-gateway

私有子网

您的私有 实例 应该在私有子网中。子网应具有路由 table:

    Destination     Target
    10.0.0.0/24     local
    0.0.0.0/0       nat-gateway-id

NACL

最好保留 默认 NACL 原样。很容易把它们搞砸。您应该能够仅使用安全组来控制进出实例的访问。