【发布时间】:2018-08-28 13:56:21
【问题描述】:
如何确定 GCP 负载平衡器使用的 IP 范围
我在 Google Cloud Platform (GCP) 上运行多个 VM 实例。它们位于 HTTP(S) 负载平衡器后面。
为了根据源IP地址限制访问,我在每个VM实例上配置了Nginx如下:
server {
listen 80;
listen [::]:80;
server_name www.example.com;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
set_real_ip_from 130.211.0.0/22; # GCP load balancers
set_real_ip_from 35.191.0.0/16; # GCP load balancers
...
}
我在“HTTP(S) 负载平衡概念”文档页面的 Firewall rules 部分找到了 IP 范围 130.211.0.0/22 和 35.191.0.0/16。
但是,在实际操作中,我注意到访问可能来自另一个IP范围35.190.0.0/17。
因此,我查阅了 Google Compute Engine 常见问题解答的 section,了解到我可以获得 GCP 的所有公共 IP 范围的列表。
这个列表很长,似乎包括负载平衡器不使用的 IP 范围。
我有两个问题:
- 如何确定 GCP 负载平衡器使用的 IP 范围?
- 如何在 IP 范围更改时更新 Nginx 配置?
【问题讨论】:
-
澄清一下,LB 防火墙部分列出的范围是实际负载均衡器拥有的 IP 范围,而不是您分配给负载均衡器前端的 IP。您分配给前端的 IP 可以是任何外部 Google IP 地址。该组的外部 IP 可以分配给虚拟机、负载平衡器前端或任何其他需要外部 IP 的资源
-
Patrick,你的意思是我们无法知道 HTTP 请求是否通过任何 GCP 负载均衡器到达后端?
-
是的,您可以,请求将来自负载均衡器防火墙部分中列出的 4 个不同范围。但是这些 IP 范围与您分配给 LB 前端的外部 IP 范围不同。 35.19.0.0/17 是 Google 外部 IP 范围的一部分,但不保留用于任何特定用途
-
Patric,负载均衡器防火墙部分指的是哪个页面?我在cloud.google.com/load-balancing/docs/https/#firewall_rules 上只看到两个范围。
-
所以文档不是很好,只有你提到的两个实际上是正确记录的。在运行 Kubernetes 入口资源时,您会注意到另外两个范围:209.85.204.0/22 和 209.85.152.0/22
标签: nginx google-cloud-platform google-compute-engine