![与在公共子网中没有公共 IP 相比,在 VPC 中拥有两个子网(公共和私有)有什么好处?](https://linux22.com/image/714900/%E4%B8%8E%E5%9C%A8%E5%85%AC%E5%85%B1%E5%AD%90%E7%BD%91%E4%B8%AD%E6%B2%A1%E6%9C%89%E5%85%AC%E5%85%B1%20IP%20%E7%9B%B8%E6%AF%94%EF%BC%8C%E5%9C%A8%20VPC%20%E4%B8%AD%E6%8B%A5%E6%9C%89%E4%B8%A4%E4%B8%AA%E5%AD%90%E7%BD%91%EF%BC%88%E5%85%AC%E5%85%B1%E5%92%8C%E7%A7%81%E6%9C%89%EF%BC%89%E6%9C%89%E4%BB%80%E4%B9%88%E5%A5%BD%E5%A4%84%EF%BC%9F.png)
AWS 上的 VPC 指南场景 2 (这里)展示了如何设置公有子网和私有子网。引用如下:
如果您想要运行面向公众的 Web 应用程序,同时维护不可公开访问的后端服务器,我们建议您采用此方案。一个常见示例是多层网站,其中 Web 服务器位于公共子网中,数据库服务器位于私有子网中。您可以设置安全性和路由,以便 Web 服务器可以与数据库服务器通信。
据我了解,通过设置路由表,VPC 内的所有子网都可以相互通信。因此,如果目的是安全,不允许外部流量进入后端服务器(如数据库),为什么不将服务器放在公共子网上,而不是为其分配公共 IP?这样,就可以保证相同的功能:它不能从外部访问,但可以与所有其他服务器通信。有什么区别?
答案1
将服务器放置在公共子网中但没有公共 IP 将阻止该节点与外界通信 - 它不会有公共 IP 并且不会有到 NAT 网关的路由。这包括非 VPC 端点 AWS 服务或 API。通常最终所有节点都需要某种外部访问,因此将节点放置在私有子网中有助于实现这一点。
它还可以防止某人意外(或故意)将 EIP 或安全组添加到将私有节点转变为公共节点的节点。