首页 > 解决方案 > 为什么我的安全组规则在从私有子网调用到公共子网时不起作用?

问题描述

我在 SG1 的私有子网中有一台服务器,我想调用 SG2 的公共子网中的负载均衡器。

我在 SG1 上设置了出站规则,允许流量到 SG2。

但是,当我添加一条规则以允许来自允许 SG1 入站的 SG2 的入站流量时,请求超时。如果我向 SG2 添加开放规则,请求工作!我也尝试过使用私有 IP 地址范围,但这不起作用。

如何向负载均衡器添加正确的规则,以便允许来自 SG1 的流量,并且不公开安全组以公开开放?

标签: amazon-web-servicesaws-security-group

解决方案


我怀疑问题是由于您连接到面向 Internet 的负载均衡器这一事实引起的。

通过 DNS 名称引用负载均衡器。此名称解析为公共 IP 地址,因为负载均衡器可通过 Internet 访问。

当私有子网中的实例访问负载均衡器时,它实际上是将 ELB DNS 名称解析为公共 IP 地址,因此请求实际上是离开 VPC,然后返回。这意味着“来自”IP 地址来自私有实例的公共IP 地址,而不是其私有 IP 地址。安全组只需要私有实例的私有IP 地址,因此它无法识别传入流量。

如果负载均衡器仅以这种方式使用,则应将其创建为内部负载均衡器,而不是公开的。还可以创建两个负载均衡器(一个面向 Internet,一个仅用于内部)。


推荐阅读