当前位置: 首页 > 知识库问答 >
问题:

GCP:仅允许来自负载均衡器的公共入口Web流量

东门晓博
2023-03-14

免责声明:我来自AWS背景,但对GCP来说相对来说是非常新的。我知道存在许多类似的问题(例如,这里和这里等),但我仍然无法解决,因为仍然缺少准确/详细的说明。所以请容忍我再次问这个问题。

我的简单设计:

公共HTTP/S流量(入口)

GCP负载平衡器持有SSL证书,然后使用端口80进行到服务器的下游连接。因此,LB到服务器只是HTTP。

我的问题:

如何防止传入的HTTP/S公共流量直接到达GCP服务器?相反,只允许负载平衡器(以及它的Healthcheck流量)?

到目前为止我所做的尝试:

我进入防火墙规则并从0.0.0.0/0中删除了以前允许的端口80/443(入口流量)规则。然后,添加(允许)负载均衡器的外部IP地址。

在这一点上,我只是希望公共流量应该被拒绝,而负载平衡器应该被拒绝。但实际上,两者似乎都被拒绝了。服务器再也没有收到任何消息。负载平衡器的外部IP似乎无法识别。

后来我还注意到“健康检查”也不再被识别。因此健康检查无法到达服务器,然后失败。因此负载均衡器删除了实例。

还请注意:我不能简单地删除服务器上的外部IP。(尽管许多人说这会奏效。)但我们仍然希望维护对服务器的直接SSH访问(不使用Bastion实例)。因此,我仍然需要每个Web服务器上的外部IP。

任何清晰(和善)的指示将非常感谢。谢谢大家。

共有1个答案

汪天宇
2023-03-14

使用HTTP(S)负载平衡器时,您可以在负载平衡器和后端服务器之间设置HTTPS连接。为了实现这一目标,您应该在后端服务器上安装HTTPS证书,并配置web服务器来使用它们。如果您决定在后端服务器上完全切换到HTTPS并禁用HTTP,那么您也应该将健康检查从HTTP切换到HTTPS。

要在删除允许从端口80和443连接的默认防火墙规则后使运行状况检查再次工作,需要将子网列为白名单,这些子网是用于运行状况检查的源IP范围。您可以在文档中找到如何执行此操作的分步说明。之后,对web服务器的访问仍然受到限制,但负载平衡器将能够使用健康检查并为客户提供服务。

 类似资料:
  • 负载均衡器的作用是将流量转发到主机。在这方面,ingress与负载均衡器有何不同?另外,与Amazon ELB和ALB相比,kubernetes内部的负载均衡器是什么概念?

  • 我不确定负载平衡如何与入口一起工作<如果我理解正确,实际情况是这样的: 我看不到负载平衡是如何执行的<我画的上述方案有什么错<你能帮我纠正一下吗? 注意: -以下答案告诉我入口控制器本身属于“loadbalancer”类型:入口服务类型 -我使用kind ClusterIP,因为我不想将loadbalancer暴露给外部世界。以下文章不支持此声明,其中负载平衡器将由服务提供: https://me

  • GCP为GKE负载平衡器提供了自己的托管入口控制器。我还看到了部署和利用Nginx入口控制器的文档。 https://cloud.google.com/community/tutorials/nginx-ingress-gke 内置入口控制器也在负载均衡器级别处理SSL终止。是否有特定的流量处理能力使Nginx成为GKE更好的入口控制候选者?

  • 我成功地基于外部负载平衡器设置了自动缩放,但我没有找到一种方法来对内部负载平衡器进行同样的设置。 是否支持此功能,如何根据内部负载均衡器自动扩展我的实例组? 问题是,当您将实例组配置为按HTTP请求扩展时,您需要一个面向internet的HTTP负载平衡器,因此,可以是内部的UDP负载平衡器不适用于此。

  • 设置默认的gce入口控制器,使用设置为响应主机名的入口资源 拥有静态ip的好处(在我目前的观点中)是,你永远不会想知道在哪里配置你的域,它将始终保持相同的ip;另一方面,你可以尽可能多地提供服务 我是使用这个gce负载均衡器的新手,我可以像使用静态ip一样依赖它吗(意味着它永远不会改变)?或者是否有一个层要添加以将静态ip指向负载均衡器? 我这么问是因为您可以设置服务资源的ip。但我还不知道如何使

  • 我在GCP中建立了自己的Elasticsearch集群。群集已启动并运行良好。 集群包含两个客户端节点,我可以使用它们在内部访问并通过运行状况检查http://IP:9200/和