You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置VPC CIDR安全组规则后同子网NLB无法访问后端实例原因排查

问题根因

该问题是由AWS NLB的默认特性导致:网络负载均衡器(NLB)默认会保留请求的客户端原始源IP。

  • 你从公网发起的测试请求经NLB转发到EC2时,请求的源IP仍然是你本地设备的公网IP,不属于VPC的172.31.0.0/16网段,因此被安全组的入站规则拦截。当你将规则修改为0.0.0.0/0时所有源IP都被放行,请求自然恢复正常。
  • NLB的健康检查是负载均衡服务本身使用VPC内网IP发起的,符合172.31.0.0/16网段规则,因此54321端口的健康检查规则可以正常生效。

解决方案

你可以根据业务需求选择以下两种方案修复:

方案1:关闭NLB的客户端源IP保留

修改NLB目标组配置,关闭源IP保留特性,此时NLB转发请求到EC2时会将源IP替换为自身的VPC内网IP,即可匹配现有安全组的VPC网段规则。修改后的Terraform配置参考:

resource "aws_lb_target_group" "tg" {
  name     = "lb-target-group"
  port     = 3128
  protocol = "TCP"
  vpc_id   = aws_vpc.main.id

  health_check {
    port = 54321
  }

  // 关闭客户端源IP保留
  preserve_client_ip_enabled = false
}

如果你的代理服务需要获取真实客户端IP,可以额外开启proxy_protocol_v2 = true,同时在代理服务中配置适配代理协议即可。

方案2:调整安全组规则

如果你需要保留客户端源IP用于业务日志审计等场景,可以将aws_security_group.instance_sg中3128端口的入站规则源地址修改为NLB所在子网的CIDR 172.31.0.0/20,即可只允许NLB转发的请求访问代理端口。

额外优化建议:你可以将EC2实例的associate_public_ip_address参数改为false,彻底避免公网直接访问EC2实例的风险,所有流量仅能通过NLB转发进入。

内容的提问来源于stack exchange,提问作者Jonny Shanahan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:15:03