nginx - 如何确定 GCP 负载平衡器使用的 IP 范围

标签 nginx google-cloud-platform google-compute-engine

如何确定 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

  ...
}

我在 Firewall rules 上找到了 IP 范围 130.211.0.0/2235.191.0.0/16 “HTTP(S) 负载平衡概念”文档页面的部分。

但是,在实际操作中,我注意到访问可能来自另一个IP范围35.190.0.0/17

所以,我咨询了一个section Google Compute Engine 常见问题解答,我了解到我可以获得 GCP 的所有公共(public) IP 范围的列表。

此列表很长,似乎包括负载均衡器使用的 IP 范围。

我有两个问题:

  1. 如何确定 GCP 负载平衡器使用的 IP 范围?
  2. 当 IP 范围发生变化时,如何更新 Nginx 配置?

最佳答案

我在测试 Google Kubernetes Engine 上的部署时遇到了这个完全相同的问题。我发现如果你为你的负载均衡器分配一个静态 IP 地址,那就是流量将从中转发的额外 IP 地址。静态 IP 地址始终不在 Google 负载平衡器的列出范围内,因为它们可以保留用于负载平衡以外的目的。就我而言,我将 Google 列出的范围与我的静态 IP 一起列入白名单,一切正常;流量不会从任何其他 IP 地址转发。

将 Google 的整个 IP 地址范围列入白名单可能会打开一个安全漏洞,有人可以在您的网站上伪造他们的 IP。如果有人使用 Google Compute Engine 实例,该实例分配了您列入白名单的 Google IP 之一,他们将能够通过更改 forwarded-for header 来欺骗他们的 IP。

关于nginx - 如何确定 GCP 负载平衡器使用的 IP 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52059648/

相关文章:

java - 当无法使用 Android 将数据写入 Firebase 数据库时如何获取错误消息

java - 无法将 war 复制到 Google 存储桶

Wordpress 插件安装 - 无法连接到 FTP 服务器 - 最安全的解决方案?

javascript - 在谷歌云存储桶上部署 angular2 网络应用程序

nginx - Docker nginx 无法连接到在单独容器中运行的上游 gunicorn

google-cloud-platform - 在文件夹上触发云功能 - 可能吗?

google-compute-engine - GCE - HTTP 负载平衡返回错误 502(错误的网关) - 仅当通过 C# 发布时

google-compute-engine - Google 计算引擎 - 用于获取实例总成本的 API

php - `wp-admin` 使用 NGINX 从不同文件夹提供 Laravel 和 WordPress 时无法正常工作

ssl - 强制www。和 nginx.conf 中的 https (SSL)