【问题标题】:AWS Network Load Balancer Cannot attach Security Groups [closed]AWS 网络负载均衡器无法附加安全组 [关闭]
【发布时间】:2022-01-15 21:36:42
【问题描述】:

我在 AWS 中解决此网络问题时遇到了一些麻烦。在进入更多细节之前,我将从这个开始:

  1. 我有一个带有监听器 8243 的网络负载均衡器

  2. 有一个目标组连接到那个 8243 监听器,其中目标组端口也是 8243

  3. 在目标组后面,有我的 EC2 实例在 8243 上运行应用程序。

EC2 实例有一个安全组 (SG)。目前,目标组运行状况检查失败,因为我不允许在 EC2 实例的 SG 中从 NLB 到 EC2 的流量。因此这个问题是意料之中的。

我的问题是,我不想为源范围为公共 (0.0.0.0/0) 或子网 IP 范围的端口 8243 添加入站规则到 EC2 的 SG。因为我只希望 EC2 的 SG 的入站规则只为来自 NLB 的流量打开 8243。但问题是,我无法将安全组附加到 NLB,因为 AWS 不允许这样做。当我使用 Application Load Balancer 时,这不是问题,因为我可以在 EC2 的 SG 中引用 ALB 的 SG。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-security-group


    【解决方案1】:

    据我了解,您不能将安全组与 NLB 连接。相反,您可以使用附加到 EC2 实例的安全组来控制访问。

    什么都没有发生,如果您的实例在私有子网中,流量无法直接流向它们,您指定所有流量都允许来自任何地方,流量仍然不会到来。

    使用 NLB 的私有 IP 地址作为配置的入站规则的源 IP(附加到它的 ENI),因为它在负载均衡器的生命周期内不会改变。

    【讨论】:

    • 您关于将 NLB 的私有 IP 地址添加为源 IP(来自附加到它的 ENI,例如 3 个 AZ - 3 个 ENI)以用于 EC2 SG 上的入站规则的建议确实成立:它只允许从 NLB 到 EC2 的健康检查,从最终用户到 EC2 的实际流量将被丢弃(记住 NLB 保留客户端 IP,它不执行 NAT)。所以 ONLY 可行的选项是允许从 0.0.0.0/0 到端口 8243 的流量
    【解决方案2】:

    网络负载均衡器工作在 OSI 模型的第 4 层(传输层)。与 ALB 不同,NLB 保留客户端源 IP,允许后端(在端口 8243 上运行在您的 EC2 实例上的 Web 服务器)查看客户端的 IP 地址(例如 Web 浏览器)。

    因此,您唯一的选择是为您的 EC2 实例的安全组添加入站规则,该规则允许从 0.0.0.0/0 到端口 8243 的流量。 NLB就是这样工作的,绝对正常。

    如果您主要担心有人可能绕过 NLB 并直接连接到您的 EC2 实例,那么他们将无法这样做,因为它 (EC2) 部署到私有子网并且没有公共 IP 地址,因此无法从 0.0.0.0/0 访问。所以你在这里很安全。

    确保:

    • 您的 NLB 已部署到您的 VPC 的公共子网
    • 目标组应该有一个 Instances 目标类型指向您的 EC2 实例
    • 您的 EC2 实例已部署到私有子网中。创建实例时,将 Auto-assign Public IP 设置为 Disabled - 这将只为您的 EC2 分配一个私有 IP 地址。
    • 别忘了您需要一个 NAT 网关(推荐)或一个 NAT 实例。

    你可以看到this的问题,和你的差不多。此外,this 可能会回答您关于为什么 NLB 不需要安全组的问题(TLDR:可能可以,但决定不这样做)。

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 2019-09-03
      • 2014-03-09
      • 2019-10-13
      • 2021-12-19
      • 1970-01-01
      • 2018-01-24
      • 2017-08-09
      • 2018-04-02
      相关资源
      最近更新 更多