Amazon AWS ELB 后面的服务器上没有 public 地址

Amazon AWS ELB without public address on servers behind it

我目前有 3 台服务器位于 AWS 上的 ELB 后面。

这些 EC2 实例中的每一个都位于 3 个独立的可用性区域。

我使用 ELB

我已经配置了一个 VPN 来访问 EC2 实例以进行 SSH 访问,但是当我从 EC2 容器中删除 public 地址时,我无法让 ELB 工作...

我假设我可以让它们仅允许来自 ELB sec 组的端口 80(443 在 ELB 上终止)上的流量,这意味着我不需要 Ext IP,因为 ELB 直接连接到它们?

我假设我还需要为他们设置 NAT 才能从外部访问?

ELB 不在一个子网内吗?

尝试了所有变体得出结论,他们需要 public 个 IP,但只是限制可以访问的内容?

非常感谢!

假设您的 ELB 应该 public 可以访问,您需要设置以下内容:

  1. 将您的 ELB 放在 public 个子网中。
  2. 为您的 ELB 分配一个或多个安全组,允许来自 0.0.0.0/0 的端口 443 上的传入访问和端口 80 上的传出访问。
  3. 创建您的 EC2 实例,通常使用 Auto Scaling 组,但这不是必需的。
  4. 将您的 EC2 实例放在私有子网中。
  5. 不要给您的 EC2 实例 public IP 地址。
  6. 为您的 EC2 实例分配一个或多个安全组,允许来自 ELB 安全组的端口 80 上的传入访问。

如果您的 EC2 实例需要传出互联网访问权限:

  1. 在 public 子网中设置 NAT(实例或网关)
  2. 更新私有子网的 VPC 路由表以通过 NAT 转发 0.0.0.0/0 流量。
  3. 更新您的 EC2 实例的安全组以允许所需端口上的传出连接。

允许传入 SSH 连接到您的 EC2 实例:

  1. 设置您的 VPN 或堡垒 EC2 实例。
  2. 更新您的 EC2 实例的安全组以允许端口 22 上的传入连接。

在所有情况下,尽可能限制安全组:

  1. 只允许您知道需要的端口,并且
  2. 尽可能使用 /32 CIDR,然后是 /24/16/8。最后,如果您确实需要全局访问权限,则只允许 0.0.0.0/0

我担心这会暴露于 public 并且可能被 DDoS 利用。我必须在它前面加上 API 网关,然后使用 HAProxy 信任 VPC 更多细节在这里。 http://knowmg.blogspot.com/2017/11/why-do-i-need-haproxy-in-aws-stack.html