AWS:公共子网中的 NAT 网关。为什么?

AWS:公共子网中的 NAT 网关。为什么?

据我了解,公共子网是可以通过 Internet 网关将流量路由到 Internet 的子网,而私有子网则不能(既不能访问 Internet,也不能从 Internet 访问)的子网。为了访问 Internet,私有子网需要通过 NAT 网关路由流量。

我可以确认这一点,因为我实际上正在成功使用这个设置。

但...亚马逊文档否则的话(粗体强调是我的): 具有公有子网和私有子网的 VPC (NAT)

公有子网中的实例可以直接从 Internet 接收入站流量,而私有子网中的实例则不能。公有子网中的实例可以将出站流量直接发送到 Internet,而私有子网中的实例则不能。相反,私有子网中的实例可以使用您启动的网络地址转换 (NAT) 实例访问 Internet进入公共子网

NAT 网关位于何处重要吗?如果重要,将其放在私有/公共子网中的用例是什么?

答案1

NAT 网关(以及 NAT 实例,无论其价值如何)必须位于公共子网中,因为只有公共子网上的设备才能真正使用公共 IP 地址。

这就是公共子网成为公共子网的原因。

公共子网的具体定义是,其关联的 VPC 路由表至少有一条路由指向 Internet 网关的子网……但实际上,它通常是其默认路由(在 VPC 路由表中)指向 Internet 网关的子网。

相比之下,私有子网是没有此类路由的子网。通常,私有子网的默认路由指向 NAT 设备,但它也可以指向硬件 VPN 或 Direct Connect 连接。

如果 NAT 设备不在公共子网上,那么(根据定义)它没有路由,无法将其转换的流量抵达互联网,因为它的传出流量遵循其所在子网的路由表...因此,NAT 网关所在的子网——同样,根据定义——必须是公共子网。

将 NAT 网关放置在公共子网上不会带来任何安全隐患,因为在任何情况下都不会接受传入的连接尝试。这是您不能错误配置的。

如果您从 LAN 的角度考虑,自然的假设是 NAT 设备需要“连接”至少 2 个子网,即外部(公共地址)子网和内部(私有地址)子网——但 VPC 网络并不是表面上的 LAN。它是一个软件定义的第 3 层网络,可以非常清晰地模拟以太网,但它不是以太网。

答案2

公有地址和私有地址的区别在于,ISP 已同意不使用任意分配的私有地址路由数据包。从 IP 的角度来看,私有地址和公有地址实际上没有区别,并且两者的寻址方式相同。

NAT 的合理位置是将专用网络连接到 ISP 的地方,ISP 不会路由带有专用地址的数据包。这通常位于专用寻址区域的边缘,但不一定是最好的位置。例如,许多公司同时拥有专用地址和公用地址,公司内部的公用区域和专用区域之间无需使用 NAT,但公司与公司使用的任何 ISP 之间必须使用 NAT,以处理使用专用地址往返于公共互联网的任何流量。如果所有带有专用寻址的流量都流经公司的公共区域以到达公共互联网,则该位置可能位于公司的公共区域中。

答案3

NACL 和路由表适用于 NAT 网关,因此您可以将 NAT 网关视为另一个 EC2 实例,因此它需要位于公共子网中才能访问互联网网关和路由流量。

我没有看到 AWS 中 NAT 网关的任何其他用途,这无法通过路由表解决。

相关内容