Google App Engineが静的IPアドレスを持つアプリケーションをサポートしていないことは知っていますが、アプリが持つ可能性のあるIPアドレスのリストまたは範囲があるかどうかを知りたいですか?そのリストを、他の場所に展開されている別のアプリケーションのIPアドレスのホワイトリストとして使用したいと思います。
6 に答える
他の回答に加えて、GAEプレミアサポートは私にこの名前、特にURLFetch呼び出しの送信元IPアドレスとして指示しました。
$ dig -t txt _cloud-netblocks.googleusercontent.com
答え:
include:_cloud-netblocks1.googleusercontent.com
include:_cloud-netblocks2.googleusercontent.com
include:_cloud-netblocks3.googleusercontent.com
次にそれらを照会すると、次の範囲のリストが表示されます(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
コマンドを使用します:
dig -t txt _netblocks.google.com
最新のグーグルIPブロックを取得し、その結果をホワイトリストに追加できます。リストは静的ではなく、時々更新されることに注意してください。
GAEのドキュメントから、 digコマンドを使用する必要があります。これは、その設計により、静的IPアドレスをアプリケーションにマップする方法が現在提供されていないためです。
dig -t TXT _netblocks.google.com @ns1.google.com
システムでdigコマンドを使用できない場合は、オンラインサービスを使用できます。
この回答を書いている時点で、http ://www.digwebinterface.com/?hostnames = _netblocks.google.com&type = TXT&useresolver = 8.8.4.4&ns = self&nameservers=ns1.google.comにクエリを実行すると次のようになり ます。
_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"
必要に応じて、GoogleAPIコンソールのフォーマット済みリストを次に示します。
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
IP範囲は将来変更される可能性があるため、このクエリを時々実行する必要があることに注意してください。
gcloud create-firewall
コマンドで使用するために、これをすばやく一緒に投げました。
#!/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
そして、これは2016年3月20日現在の更新されたリストです。
この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
私はこの正確な目的のためにルビースクリプトを作成しました(非常にシンプルで更新が簡単です):
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