Как определить диапазоны IP-адресов, используемые балансировщиками нагрузки GCP - PullRequest
0 голосов
/ 28 августа 2018

Как определить диапазоны IP-адресов, используемые балансировщиками нагрузки GCP

Я управляю несколькими экземплярами виртуальных машин на Google Cloud Platform (GCP). Они находятся за балансировщиком нагрузки HTTP (S).

Чтобы ограничить доступ на основе исходного IP-адреса, я настроил 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

  ...
}

Я нашел диапазоны IP-адресов 130.211.0.0/22 и 35.191.0.0/16 в разделе Правила брандмауэра на странице документа "Концепции балансировки нагрузки HTTP (S)".

Но при реальной работе я заметил, что доступ может происходить из другого диапазона IP-адресов 35.190.0.0/17.

Итак, я ознакомился с разделом FAQ по Google Compute Engine и узнал, что могу получить список всех общедоступных IP-диапазонов GCP.

Этот список очень длинный и, кажется, включает диапазоны IP-адресов, которые не используются балансировщиками нагрузки.

У меня два вопроса:

  1. Как определить диапазоны IP-адресов, используемые балансировщиками нагрузки GCP?
  2. Как я могу обновить конфигурацию Nginx при изменении диапазонов IP-адресов?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Я столкнулся с точно такой же проблемой при тестировании развертывания в Google Kubernetes Engine. Я обнаружил, что если вы назначите статический IP-адрес вашему балансировщику нагрузки, это дополнительный IP-адрес, с которого будет перенаправляться трафик. Статические IP-адреса всегда находятся за пределами указанного диапазона для балансировщиков нагрузки Google, поскольку они могут быть зарезервированы для других целей, помимо балансировки нагрузки. В моем случае я внес в белый список диапазон, который Google указал вместе со своим статическим IP, и все работает нормально; трафик не перенаправляется с других IP-адресов.

Белый список всего диапазона IP-адресов Google может открыть дыру в безопасности, где кто-то сможет подделать свой IP на вашем сайте. Если кто-то использует экземпляр Google Compute Engine, которому назначен один из IP-адресов Google, указанных в вашем белом списке, он сможет подделать свой IP-адрес, изменив перенаправленные заголовки.

0 голосов
/ 29 августа 2018

Это не так долго, я бы просто поместил их все в отдельный файл и включил в конфигурацию Nginx.

Затем просто запустите скрипт bash как задание cron, чтобы создать новый файл конфигурации, сравнить его с текущим и перезапустить Nginx, если необходимо.

Как-то так должно начаться:

for i in $(host -t txt _cloud-netblocks.googleusercontent.com | egrep -o "_cloud-netblocks[0-9]+\.googleusercontent.com"); do
host -t txt "$i" | egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+" | sed -e 's/^/set_real_ip_from /' -e 's/$/;/' >> newhostsfile;
done;
diff -N newhostsfile hostsfile > /dev/null && rm newhostsfile || mv newhostsfile hostsfile | nginx -s reload;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...