【问题标题】:Aws Application Load Balancer not accessible unless All traffic is allowed除非允许所有流量,否则无法访问 Aws 应用程序负载均衡器
【发布时间】:2021-08-03 05:34:58
【问题描述】:

我有这样的设置。

  1. Application Load Balancer(面向互联网)LB1,Route 53 中的条目为 loadbalancer1.com

  2. LB1 位于安全组 sg1 中,该安全组具有接受所有 Https 请求的入站规则。

  3. LB1 附加了一个目标组,该目标组有一个属于安全组 sg2 的 EC2 实例 instance1

  4. sg2 有入站规则,指定流量只能来自 sg1

  5. 我在安全组 sg3 中有另一个 EC2 实例 instance2。这个实例想要访问instance1。它通过调用负载均衡器 loadbalancer1.com(在端口 443 即 Https 上)来实现这一点

此设置有效。现在我想做一个改进。因为 loadbalancer1.com 只能从 instance2 访问。我想将安全组 sg1 的入站规则更改为仅接受来自安全组 sg3 的流量。如果我这样做,loadbalancer1.com 将无法从 instance2 访问。

知道为什么吗?

【问题讨论】:

    标签: amazon-web-services aws-security-group aws-application-load-balancer


    【解决方案1】:

    这是一个很好的问题。 TL;DR:它仅适用于不离开 VPC 的内部流量。

    下面是更详细的情况:

    当实例 2 访问面向互联网的负载均衡器时,流量首先离开您的 VPC 并进入公共互联网。然后流量通过一些网络路由到达ELB,ELB将流量转发给instance1。

    当流量离开 AWS VPC 并重新进入时,与流量关联的源 SG 元数据“消失”。从ELB的SG来看,它只知道流量来自instance2的公网IP。

    根据Security group rules 文档:

    当您将安全组指定为规则的源或目标时,该规则会影响与该安全组关联的所有实例。 根据与源安全组关联的实例的私有 IP 地址(而不是公共 IP 或弹性 IP 地址)允许传入流量。

    【讨论】:

    • 非常感谢。现在说得通了。知道这里的解决方案是什么吗?在这种情况下我能做什么。我尝试设置一个内部负载均衡器并将该负载均衡器的 dns 名称分配给路由 53 条目,但这也不起作用
    • 选项 1: 将 EIP 附加到 instance2,并在 ELB 的 SG 中添加一条规则,允许所有来自该公共 IP 的流量。 选项 2: 如果您不希望流量穿越公共互联网,请将 ELB 设置为内部负载均衡器。
    猜你喜欢
    • 1970-01-01
    • 2018-08-20
    • 2018-02-26
    • 2018-04-19
    • 1970-01-01
    • 2023-03-08
    • 2019-04-07
    • 2017-09-27
    • 2022-06-23
    相关资源
    最近更新 更多