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

Jul*_*ian 8 nat subnet amazon-web-services amazon-vpc

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

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

但是......亚马逊文档另有说法(我的重点是粗体): 具有公共和私有子网 (NAT) 的 VPC

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

NAT 网关所在的位置是否重要?如果是这样,将它放在私有/公共子网中的用例是什么?

Mic*_*bot 12

NAT 网关(以及 NAT 实例,就其价值而言)必须位于公共子网中,因为只有公共子网上的设备才能实际使用公共 IP 地址。

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

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

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

如果 NAT 设备不在公共子网上,它(根据定义)没有路由,它转换的流量可以通过它到达Internet,因为它的传出流量遵循它所在子网的路由表。 . 所以 NAT 网关所在的子网——同样,根据定义——必须是一个公共子网。

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

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