我知道Google App Engine不支持具有静态IP地址的应用程序,但我想知道应用程序可能具有的列表或IP地址范围?我想将该列表用作部署在其他地方的另一个应用程序的IP地址白名单。
答案 0 :(得分:16)
除了其他答案之外,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
答案 1 :(得分:7)
使用命令:
dig -t txt _netblocks.google.com
获取最新的google ip block,然后您可以将结果添加到白名单中。 请注意,该列表不是静态的,并且会不时更新。
答案 2 :(得分:5)
从GAE documentationn开始,您需要使用 dig 命令,因为它目前没有提供将静态IP地址映射到应用程序的方法,因为它的设计:
dig -t TXT _netblocks.google.com @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"
如果需要,请在此处显示Google API控制台的格式化列表:
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范围将来可能会发生变化,因此您需要不时运行此查询。
答案 3 :(得分:3)
答案 4 :(得分:2)
我快速将它们放在一起,以便与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
答案 5 :(得分:0)
我为这个目的创建了一个ruby脚本(超级简单,易于更新):
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