3

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

  1. 我有一个带有一个子网 (CIDR 10.0.0.0/24) 和一个 EC2 实例的 VPC(它仅在 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 地址和一个公共弹性 IP 地址(比如说 18.154.34.97,但我认为这无关紧要)。此 NAT 网关连接到 VPC 的唯一子网。

  6. 我创建了与 VPC 的子网 (10.0.0.0/24) 关联的路由表,其中包含两个条目:

    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 实例。但是,从那个实例我无法访问 Internet。同样,当连接到此客户端 VPN 端点时,我的本地计算机也无法访问 Internet。我尝试在 VPC (10.0.0.95) 内 ping 通 NAT 地址,但任何一台机器都无法访问它。

  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 内实例之一接收数据后成为 Internet 网关的源地址。此 NAT 具有公共弹性 IP 地址。

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

它不应该得到任何这样的流量,因为它应该通过 NAT,对吧?

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

4

2 回答 2

2

您需要有两个子网。一公一私。

公共子网

公共子网可以启用公共 IP集。它应该有NAT 网关和路由表:

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

私有子网

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

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

NACL

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

于 2021-03-01T02:03:06.290 回答
0

NAT 网关必须位于具有路由表的公共子网中,该路由表将 Internet 流量路由到 Internet 网关。

于 2021-03-01T01:55:20.587 回答