AWS:为什么互联网网关要执行 NAT?

yan*_*ory 4 networking nat vpc amazon-web-services amazon-vpc

Internet 网关有两个用途:在 VPC 路由表中为 Internet 可路由流量提供目标,以及为已分配公共 IPv4 地址的实例执行网络地址转换 (NAT)。

来源:https ://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html

如果上述实例都有公有 IPv4 地址,为什么 Internet 网关需要执行网络地址转换?最好有一个网络流的示例,该示例在以下情况下会被破坏

  • 附加了 Internet 网关的 VPC 子网
  • 该 VPC 子网中的实例,其 IP 地址(AWS VPC 术语中的弹性 IP)位于公共 IP 地址空间中
  • 如果没有 Internet 网关执行 NAT,Internet 上的主机无法将数据包发送到这些实例

Ani*_*ade 5

尽管 EC2(或者具体来说:与该 EC2 关联的 ENI)实例已与公共 IP 地址关联。它对此一无所知!

这是来自原始链接中共享的同一 URL。“您的实例仅知道 VPC 和子网中定义的私有(内部)IP 地址空间”

这意味着传出/传入 ENI 的所有网络流量均通过私有 IP 地址进行。

如果您查看同一页面上的图表,您将看到一个路由器。这个路由器

  • VPC 内是否跨其所有子网进行路由
  • 是否路由到 Internet 网关

EC2/ENI 将与该路由器交互。

路由器将流量定向到 Internet 网关 (IGW) 后:IGW 具有该 VPC 内 EC2 实例的(公共 ip - 私有 ip)映射。

EC2发送流量到Internet的步骤

  • 具有私有 10.0.1.1 IP 的 EC2 向 google.com 发送请求 (curl google.com) 或尝试访问公共 aws 构造(如 s3)
  • 我们假设这是公共子网。因此与该子网关联的路由器将将此流量转发到默认路由 (0.0.0.0/0) 到 IGW
  • IGW查找其内部表(私有IP:公共IP)。使用该表进行 NAT 转换。

我本想描述一下您的场景,但我不明白为什么 IGW 不执行 NAT。


Ste*_*nas 5

ENI实例侧只有一个私有地址。公共地址是通过关联弹性IP或分配公共地址来完成的。这些公共地址的映射来自互联网网关的 NAT 功能。

您的实例仅知道 VPC 和子网中定义的私有(内部)IP 地址空间。Internet 网关在逻辑上代表您的实例提供一对一 NAT,以便当流量离开您的 VPC 子网并前往 Internet 时,回复地址字段将设置为您实例的公有 IPv4 地址或弹性 IP 地址,而不是其私有 IP 地址。相反,在将流量传送到 VPC 之前,发往实例的公有 IPv4 地址或弹性 IP 地址的流量会将其目标地址转换为实例的私有 IPv4 地址。

引用问题中链接的同一文档。

入站流量的流程为Public Address-> Internet Gateway-> Private Address

如果主机所在的子网没有包含通过 IGW 定义的默认路由的路由表,则实例将无法返回流量。