Moteur D'application Google - liste des adresses IP?
Je sais que Google App Engine ne supporte pas une application ayant une adresse IP statique, mais je voudrais savoir s'il existe une liste ou une gamme d'adresses IP qu'une application pourrait potentiellement avoir? J'aimerais utiliser cette liste comme liste blanche d'adresses IP pour une autre application déployée ailleurs.
6 réponses
en plus des autres réponses, GAE premier support m'a dirigé vers ce nom, esp comme adresse IP source pour URLFetch appels:
$ dig -t txt _cloud-netblocks.googleusercontent.com
qui répond:
include:_cloud-netblocks1.googleusercontent.com
include:_cloud-netblocks2.googleusercontent.com
include:_cloud-netblocks3.googleusercontent.com
si vous les interrogez, vous obtenez cette liste de gammes (à partir de 2014-06-26):
8.34.208.0/20
8.35.192.0/21
8.35.200.0/23
23.236.48.0/20
23.251.128.0/19
107.167.160.0/19
107.178.192.0/18
108.170.192.0/20
108.170.208.0/21
108.170.216.0/22
108.170.220.0/23
108.170.222.0/24
108.59.80.0/20
130.211.4.0/22
146.148.16.0/20
146.148.2.0/23
146.148.32.0/19
146.148.4.0/22
146.148.64.0/18
146.148.8.0/21
162.216.148.0/22
162.222.176.0/21
173.255.112.0/20
192.158.28.0/22
199.192.112.0/22
199.223.232.0/22
199.223.236.0/23
Utiliser la commande:
dig -t txt _netblocks.google.com
pour obtenir les dernières versions de google de blocs d'ip, et ensuite vous pouvez ajouter le résultat dans votre liste blanche. Soyez conscient que la liste n'est pas statique et mise à jour de temps en temps.
GAE documentationn, vous devez utiliser le dig commande parce qu'elle ne fournit pas actuellement un moyen de mapper des adresses IP statiques à une application, en raison de sa conception:
dig -t TXT _netblocks.google.com @ns1.google.com
Si le dig commande n'est pas disponible sur votre système, vous pouvez utiliser un service en ligne:
comme le moment de la rédaction de cette réponse, interrogation http://www.digwebinterface.com/?hostnames=_netblocks.google.com&type=TXT&useresolver=8.8.4.4&ns=self&nameservers=ns1.google.com retourne:
_netblocks.google.com. 3596 IN TXT "v=spf1 ip4:216.239.32.0/19 ip4:64.233.160.0/19 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:209.85.128.0/17 ip4:66.102.0.0/20 ip4:74.125.0.0/16 ip4:64.18.0.0/20 ip4:207.126.144.0/20 ip4:173.194.0.0/16 ?all"
Voici la liste formatée pour la console de L'API Google si vous en avez besoin:
216.239.32.0/19
64.233.160.0/19
66.249.80.0/20
72.14.192.0/18
209.85.128.0/17
66.102.0.0/20
74.125.0.0/16
64.18.0.0/20
207.126.144.0/20
173.194.0.0/16
veuillez noter que les plages IP peuvent changer dans le futur, vous devrez donc lancer cette requête de temps en temps.
extrait selon les instructions dans cet article de KB.
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
ip4:108.170.216.0/22
ip4:108.170.220.0/23
ip4:108.170.222.0/24
ip4:162.216.148.0/22
ip4:162.222.176.0/21
ip4:173.255.112.0/20
ip4:192.158.28.0/22
ip4:199.192.112.0/22
ip4:199.223.232.0/22
ip4:199.223.236.0/23
ip4:23.236.48.0/20
ip4:23.251.128.0/19
ip4:107.167.160.0/19
ip4:107.178.192.0/18
ip4:146.148.2.0/23
ip4:146.148.4.0/22
ip4:146.148.8.0/21
ip4:146.148.16.0/20
ip4:146.148.32.0/19
ip4:146.148.64.0/18
ip4:130.211.4.0/22
ip4:130.211.8.0/21
ip4:130.211.16.0/20
ip4:130.211.32.0/19
ip4:130.211.64.0/18
ip4:130.211.128.0/17
ip4:104.154.0.0/15
ip4:104.196.0.0/14
ip4:208.68.108.0/23
ip6:2600:1900::/35
Je l'ai fait rapidement, pour l'utiliser avec le gcloud create-firewall
la commande.
#!/bin/bash
netblocks=$(dig TXT _cloud-netblocks.googleusercontent.com @ns1.google.com +short | sed -e 's/"//g')
for block in $netblocks; do
if [[ $block == include:* ]]; then
ipblocks=$(dig TXT ${block#include:} @ns1.google.com +short)
for ipblock in $ipblocks; do
if [[ $ipblock == ip4:* ]]; then
printf "${ipblock:4},"
fi
done
fi
done
j'ai créé un script ruby dans ce but précis (super simple, facile à mettre à jour):
https://github.com/stephengroat/whitelist-travisci
Resolv::DNS.open do |dns|
ress = dns.getresource "_cloud-netblocks.googleusercontent.com", Resolv::DNS::Resource::IN::TXT
ress.data.scan(/(?<=include:)_cloud-netblocks+\d.googleusercontent.com/).each do |r|
subress = dns.getresource r, Resolv::DNS::Resource::IN::TXT
subress.data.scan(/(?<=ip[4|6]:)[^\s]+/).each do |sr|
puts sr
end
end
end