为什么 AWS NAT 网关需要弹性 IP?
Why does a AWS NAT Gateway require an ElasticIP?
创建 NAT 网关时,会在 AWS 中创建一个弹性 IP 地址。 AWS 文档 (1) 也提到了相同的内容。为什么 NAT 网关需要弹性 IP 地址?
简单地说,EIP 是必需的,因为这是设计 NAT 网关功能的方式。
在 NAT 设备上拥有动态地址是没有意义的——如果地址发生变化,那肯定会中断任何正在进行的会话...分配静态地址的唯一方法是通过分配弹性 IP 地址 (EIP)。
通过向外部供应商提供您的 NAT 网关的 EIP,让外部供应商将您的服务器列入白名单(以访问他们的服务器)也很常见,在这种情况下,public 池中的动态地址是不可接受的.
也可能存在与 EIP 运作方式相关的内部专有原因,使得此要求成为必要……但没有记录在案,因此这样的断言只是猜测。举个例子:public 池地址(比如那些自动分配给 EC2 实例的地址,这些实例配置了来自池的 public IP 地址,而不是 EIP)可能被设计到特定的可用性区域,或者甚至是单个可用性区域的子集(毕竟,当实例为 stopped/started 时,它们确实会发生变化,这意味着它们可能专用于 AZ 内的特定服务器托架),而 EIP 可以从一个区域迁移到任何地方到一个区域内的另一个。这强烈暗示了不同的内部拓扑。
这个要求(约束?),对我来说似乎微不足道:你不应该为这个EIP付费,如果你需要增加一个地区的最大允许EIP数量,你可以提交支持请求免费,描述您的用例,请求提高限制。
一点都不重要,您只能拥有 5 个 EIP,因此在两个可用区中拥有 2 或 3 个应用程序将达到该阈值。
EIP 要求比较随意。拥有静态 IP 使 NAT 编码更容易(它不必检查 WAN 接口的上游地址更改)但是支持动态上游地址的 NAT 非常普遍 - 几乎每个由主要 ISP 提供服务的家庭都有一个。当然,外部地址可能会更改并中断当前连接,但 ISP 知道这一点并努力不更改地址。通常它仅在您重新启动路由器时才会更改,并且此时您的所有连接都已断开。
在 AWS 上有许多类似的场景,您不关心 NAT 网关外部地址是否更改,尤其是当您的 VPC 不包含任何 public 服务器时。我有很多这样的东西,我正试图在免费帐户上 运行 它们——这让我很恼火,因为它们迫使我耗尽我的静态 IP 供应不足。
正如其他人所观察到的,这是一笔不小的开支,而且 AWS 仍然比我所知道的获得这种云计算能力的任何其他方式都要便宜;但 EIP 并不是严格要求的。
我认为这里缺少的答案是 NAT 网关 (NATG) 流量仍在通过 Internet 网关 (IGW) 路由,它执行静态(一个私有 IP 到一个 public IP)网络地址转换。正如问题中的图片所示,弹性 IP (EIP) 是一个 关联 。是 IGW 将 NATG 的私有 IP 转换为其 关联的 public EIP。
因此,从 AWS 实施的角度来看,对于通过 IGW 访问互联网的 public 子网中的任何资源(例如 EC2 实例),此 EIP 要求是一致的。
自 2021 年 6 月起,AWS NAT 网关不再需要 ElasticIP(如果您选择“私有”模式):
A private NAT Gateway, or NAT Gateway with connectivity type set to private, does not require EIP and you do not need to attach an internet gateway with your VPC.
创建 NAT 网关时,会在 AWS 中创建一个弹性 IP 地址。 AWS 文档 (1) 也提到了相同的内容。为什么 NAT 网关需要弹性 IP 地址?
简单地说,EIP 是必需的,因为这是设计 NAT 网关功能的方式。
在 NAT 设备上拥有动态地址是没有意义的——如果地址发生变化,那肯定会中断任何正在进行的会话...分配静态地址的唯一方法是通过分配弹性 IP 地址 (EIP)。
通过向外部供应商提供您的 NAT 网关的 EIP,让外部供应商将您的服务器列入白名单(以访问他们的服务器)也很常见,在这种情况下,public 池中的动态地址是不可接受的.
也可能存在与 EIP 运作方式相关的内部专有原因,使得此要求成为必要……但没有记录在案,因此这样的断言只是猜测。举个例子:public 池地址(比如那些自动分配给 EC2 实例的地址,这些实例配置了来自池的 public IP 地址,而不是 EIP)可能被设计到特定的可用性区域,或者甚至是单个可用性区域的子集(毕竟,当实例为 stopped/started 时,它们确实会发生变化,这意味着它们可能专用于 AZ 内的特定服务器托架),而 EIP 可以从一个区域迁移到任何地方到一个区域内的另一个。这强烈暗示了不同的内部拓扑。
这个要求(约束?),对我来说似乎微不足道:你不应该为这个EIP付费,如果你需要增加一个地区的最大允许EIP数量,你可以提交支持请求免费,描述您的用例,请求提高限制。
一点都不重要,您只能拥有 5 个 EIP,因此在两个可用区中拥有 2 或 3 个应用程序将达到该阈值。
EIP 要求比较随意。拥有静态 IP 使 NAT 编码更容易(它不必检查 WAN 接口的上游地址更改)但是支持动态上游地址的 NAT 非常普遍 - 几乎每个由主要 ISP 提供服务的家庭都有一个。当然,外部地址可能会更改并中断当前连接,但 ISP 知道这一点并努力不更改地址。通常它仅在您重新启动路由器时才会更改,并且此时您的所有连接都已断开。
在 AWS 上有许多类似的场景,您不关心 NAT 网关外部地址是否更改,尤其是当您的 VPC 不包含任何 public 服务器时。我有很多这样的东西,我正试图在免费帐户上 运行 它们——这让我很恼火,因为它们迫使我耗尽我的静态 IP 供应不足。
正如其他人所观察到的,这是一笔不小的开支,而且 AWS 仍然比我所知道的获得这种云计算能力的任何其他方式都要便宜;但 EIP 并不是严格要求的。
我认为这里缺少的答案是 NAT 网关 (NATG) 流量仍在通过 Internet 网关 (IGW) 路由,它执行静态(一个私有 IP 到一个 public IP)网络地址转换。正如问题中的图片所示,弹性 IP (EIP) 是一个 关联 。是 IGW 将 NATG 的私有 IP 转换为其 关联的 public EIP。
因此,从 AWS 实施的角度来看,对于通过 IGW 访问互联网的 public 子网中的任何资源(例如 EC2 实例),此 EIP 要求是一致的。
自 2021 年 6 月起,AWS NAT 网关不再需要 ElasticIP(如果您选择“私有”模式):
A private NAT Gateway, or NAT Gateway with connectivity type set to private, does not require EIP and you do not need to attach an internet gateway with your VPC.