You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

AWS ELB允许VPC公网IPv4但不支持安全组的预期行为确认

同一AWS账号VPC内EC2通过安全组访问ELB的预期行为解析

让我帮你理清这个场景下的预期结果和背后的AWS安全组逻辑:

当你完成第四步(移除EC2-B的公网IP规则,添加EC2-B的安全组sg-xxxxxx到ELB-A的入站规则)后,请求是否成功取决于你的ELB-A是公网型还是内网型

情况1:ELB-A是公网型负载均衡(ALB/NLB/CLB公网模式)

此时从EC2-B发起的wget请求会失败,原因如下:

  • 公网ELB的DNS解析结果是其公网IP,EC2-B在VPC内访问该公网IP时,默认会使用自身的公网IP作为请求源IP(这是VPC的默认路由行为,流量会走互联网网关出站再返回)。
  • AWS安全组的入站规则中,当你指定另一个安全组(比如sg-xxxxxx)时,它只会匹配来自该安全组内实例的私有IP流量,而不是公网IP。所以EC2-B的公网IP源流量不会被这个安全组规则放行,请求被ELB-A的安全组拦截。

情况2:ELB-A是内网型负载均衡(ALB/NLB内网模式)

此时从EC2-B发起的wget请求会成功,原因很直接:

  • 内网ELB仅在VPC内可见,EC2-B访问它时会使用自身的私有IP作为请求源IP,而这个IP属于sg-xxxxxx安全组覆盖的实例范围,ELB-A的入站规则会匹配该流量,允许请求通过。

补充:如何让公网ELB也支持安全组规则匹配?

如果你必须使用公网ELB,同时想用安全组控制EC2-B的访问,可以这么做:

  • 直接让EC2-B通过ELB-A的私有IP发起请求(公网ELB也会分配VPC内的私有IP),此时请求源IP是EC2-B的私有IP,会被sg-xxxxxx的安全组规则匹配。
  • 或者在ELB-A的入站规则中,允许EC2-B所在VPC的私有IP段(比如10.0.0.0/16),但这个范围比单个安全组更大,需要根据你的安全需求权衡。

内容的提问来源于stack exchange,提问作者art vanderlay

火山引擎 最新活动