Google App Engine - IP 地址列表?
Posted
技术标签:
【中文标题】Google App Engine - IP 地址列表?【英文标题】:Google App Engine - list of IP addresses? 【发布时间】:2012-06-24 08:31:45 【问题描述】:我知道 Google App Engine 不支持具有静态 IP 地址的应用程序,但我想知道是否存在应用程序可能拥有的 IP 地址列表或范围?我想将该列表用作部署在其他地方的另一个应用程序的 IP 地址白名单。
【问题讨论】:
我对此了解不多,但这可能是“安全数据连接器”的用途:developers.google.com/secure-data-connector 您将需要使用其他机制。 为什么要依赖远程 IP 地址?将您的应用列入白名单会将所有个 App Engine 应用列入白名单。使用身份验证。 @NickJohnson 我正在使用身份验证,但由于我还可以选择将 IP 列入白名单,因此我也想利用它。 IP Address Block of Appengine Servers?的可能重复 【参考方案1】:除了其他答案之外,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 年 6 月 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
【讨论】:
你成就了我的一天/一周/一个月,伙计!非常感谢!我已经在尝试在 Gcloud 上配置 VPC 和负载均衡器时大吃一惊了……这好多了!【参考方案2】:使用命令:
dig -t txt _netblocks.google.com
获取最新的 google ip 块,然后您可以将结果添加到白名单中。 请注意,该列表不是静态的,并且会不时更新。
【讨论】:
这仅适用于 Google 的邮件服务器。其他服务(如地图等)的 IP 地址与该 IP4 网络块中列出的不同。 截至 29.04.2013 也有来自以下范围的请求:Level 3 Communications, Inc. LVLT-ORG-8-8 (NET-8-0-0-0-1) 8.0 .0.0 - 8.255.255.255 Google Apps。 LVLT-GOOGL-2-8-35-200 (NET-8-35-200-0-1) 8.35.200.0 - 8.35.207.255【参考方案3】:从GAE documentationn 开始,您需要使用 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"
如果您需要,这里是 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 范围将来可能会发生变化,因此您需要不时运行此查询。
【讨论】:
这里有一个单行代码来帮助你解析它:dig -t TXT _netblocks.google.com @ns1.google.com | grep '^_netblocks.google.com' | grep -o 'ip4:.* ' | sed -e 's/ip4://g' -e 's/ /\n/g'
【参考方案4】:
我很快把它放在一起,用于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
【讨论】:
谢谢,我最终将整个内容包装在function source_ranges()
中,然后添加 gcloud compute firewall-rules update RULEX --source-ranges=$(source_ranges) ...
现在我只需每周一次在 cron 工作中调用它以使其保持最新【参考方案5】:
这是截至 2016 年 3 月 20 日的更新列表:
使用指令in this KB article提取。
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
【讨论】:
【参考方案6】:我为此目的创建了一个 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
【讨论】:
以上是关于Google App Engine - IP 地址列表?的主要内容,如果未能解决你的问题,请参考以下文章
连接 Google App Engine 和 Google Compute Engine
Google Compute Engine gcutil 使用 ssh 和实例的内部/私有地址 [关闭]
是否可以防止 Google App Engine 上的 DoSing?
在 Google 虚拟机上处理来自 Google App Engine 的数据