Google Cloud публикует диапазоны IP-адресов с помощью записи ресурса TXT DNS.
[Обновление 18.12.2018]. Теперь Google публикует метод получения IP-адресов StackDriver:
client = monitoring_v3.UptimeCheckServiceClient()
ips = client.list_uptime_check_ips()
print(tabulate.tabulate(
[(ip.region, ip.location, ip.ip_address) for ip in ips],
('region', 'location', 'ip_address')
))
Получение IP-адресов для проверки работоспособности
[Конец обновления]
Google изменяет IP-адреса, поэтому вам понадобится автоматизированный инструмент для обработки обновлений. Ниже я покажу ручной метод получения блоков CIDR. На практике я бы написал облачную функцию на Python, которая обрабатывает этот список, а затем обновляет набор правил брандмауэра.
Мой источник информации - Google Qwiklabs. Я задокументировал это в одной из лабораторий - не помню, в какой.
nslookup -q=TXT _cloud-netblocks.googleusercontent.com 8.8.8.8
Это вернет запись TXT:
usercontent.com 8.8.8.8
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
_cloud-netblocks.googleusercontent.com text =
"v=spf1 include:_cloud-netblocks1.googleusercontent.com include:_cloud-netblocks2.googleusercontent.com include:_cloud-netblocks3.googleusercontent.com include:_cloud-netblocks4.googleusercontent.com include:_cloud-netblocks5.googleusercontent.com ?all"
Последняя строка включает ряд дополнительных записей для обработки, начиная с: _cloud-netblocks1.googleusercontent.com
nslookup -q=TXT _cloud-netblocks1.googleusercontent.com 8.8.8.8
Что возвращает блок информации, который вас интересует. Обратите внимание, что вам нужно повторить это для каждой из _cloud-xxxx
записей, возвращенных выше.
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
_cloud-netblocks1.googleusercontent.com text =
"v=spf1 include:_cloud-netblocks6.googleusercontent.com include:_cloud-netblocks7.googleusercontent.com ip4:8.34.208.0/20 ip4:8.35.192.0/21 ip4:8.35.200.0/23 ip4:108.59.80.0/20 ip4:108.170.192.0/20 ip4:108.170.208.0/21 ?all"
Обратите внимание на последнюю строку выше. Он содержит несколько блоков CIDR. Повторите, как я упоминал выше.
ip4:8.34.208.0/20 ip4:8.35.192.0/21 ip4:8.35.200.0/23 ip4:108.59.80.0/20 ip4:108.170.192.0/20 ip4:108.170.208.0/21
person
John Hanley
schedule
13.12.2018