AWS 上的 VPC 指南场景 2 (这里)展示了如何设置公有子网和私有子网。引用如下:
如果您想要运行面向公众的 Web 应用程序,同时维护不可公开访问的后端服务器,我们建议您采用此方案。一个常见示例是多层网站,其中 Web 服务器位于公共子网中,数据库服务器位于私有子网中。您可以设置安全性和路由,以便 Web 服务器可以与数据库服务器通信。
据我了解,通过设置路由表,VPC 内的所有子网都可以相互通信。因此,如果目的是安全,不允许外部流量进入后端服务器(如数据库),为什么不将服务器放在公共子网上,而不是为其分配公共 IP?这样,就可以保证相同的功能:它不能从外部访问,但可以与所有其他服务器通信。有什么区别?
答案1
将服务器放置在公共子网中但没有公共 IP 将阻止该节点与外界通信 - 它不会有公共 IP 并且不会有到 NAT 网关的路由。这包括非 VPC 端点 AWS 服务或 API。通常最终所有节点都需要某种外部访问,因此将节点放置在私有子网中有助于实现这一点。
它还可以防止某人意外(或故意)将 EIP 或安全组添加到将私有节点转变为公共节点的节点。