APNS服务器的IP地址范围?

时间:2012-05-21 16:20:12

标签: apple-push-notifications

有没有人拥有Apple推送通知服务使用的所有IP地址的完整列表?

我知道Apple使用内容分发网络来分发这些请求,DNS查找将返回靠近请求者位置的服务器 - 我遇到的问题是找到处理美国内容的所有服务器。 / p>

例如:

$ nslookup gateway.push.apple.com

Non-authoritative answer:
canonical name = gateway.push-apple.com.akadns.net.

Address: 17.172.238.216
Address: 17.172.238.224
Address: 17.172.238.226

每次查询DNS时此列表都会更改 - 但所有地址似乎都在17.172.238.x范围内 - 但不能保证明天或下周我会看到不同的范围。

但是,对于测试推送服务器,我已经在不同的子网中获得了结果。有时我得到一组地址:

$ nslookup gateway.sandbox.push.apple.com

Non-authoritative answer:
canonical name = gateway.sandbox.push-apple.com.akadns.net.

Address: 17.149.34.66
Address: 17.149.34.65

有时,我会得到这些地址:

Address: 17.172.233.65
Address: 17.172.233.66

我将使用Apple推送通知服务的服务器将在公司防火墙后面,我需要为生产和测试网关打开端口2195和2196 - 但是,我的防火墙团队需要特定的IP地址代替主持人名称。

我担心如果我只是要求防火墙团队允许我到目前为止看到的IP地址,那么当DNS服务器决定提供服务时,我的服务器将在一天或一周后停止工作不同的范围。

如果有人对生产和测试环境都有完整的清单,我会很感激。

更新:我试过要求防火墙团队打开Apple的整个IP块(17.0.0.0/8),但是他们不会这样做 - 我需要缩小范围地址有点。

最终更新 - 2016年10月16日

即使这个问题已经结束,我想我会添加一个解释我最终解决方案的说明 - 并不是任何寻找答案的人都想听到的。我永远无法超越CDN使用的不断变化的地址,所以我最终放弃并从Rackspace租用了一台外部服务器。我得到了最小的服务器,唯一运行它的是一个侦听2195和2916的端口转发器,并将连接发送给Apple。

我在Rackspace服务器上使用了一个简单的iptables配置,只允许来自我公司网关的2195/2916上的连接,然后我的防火墙团队打开了通往外部服务器上静态IP地址的路径。防火墙团队很高兴,实现了单一路径,外部服务器可以连接到Apple使用的整个17.0.0.0/8范围。

2 个答案:

答案 0 :(得分:24)

来自Apple's documentation(强调添加的有趣位):

  

推送提供商,iOS设备和Mac计算机通常都在防火墙之后。要发送通知,您需要打开TCP端口2195。要访问反馈服务,您需要打开TCP端口2196。通过Wi-Fi连接到推送服务的设备和计算机需要打开TCP端口5223。

     

推送服务的IP地址范围可能会发生变化;期望提供者将通过主机名而不是IP地址进行连接。推送服务使用负载平衡方案,为同一主机名生成不同的IP地址。 但是,整个17.0.0.0/8地址块已分配给Apple,因此您可以在防火墙规则中指定该范围。

17.0.0.0/8是17.0.0.1到17.255.255.254的CIDR表示法。

答案 1 :(得分:8)

不幸的是,官方的答案是没有正式的答案:) - 除非你考虑Apple的简单方法,只允许所有流量到17.0.0.0/8。 Apple开发人员支持在第一个答案中提供了与 vcsjones 相同的文档链接。

对于我的特殊情况,在过去几周定期检查DNS后,我已将IP地址缩小到这些范围。请记住,这些仅适用于美国的中西部地区,因为Apple的CDN将返回最接近进行查询的服务器的一组地址。

对于gateway.push.apple.com,我在防火墙上打开端口2195和2196:

17.149.35.0 / 24
17.172.238.0 / 24

对于gateway.sandbox.push.apple.com,我在防火墙上打开端口2195和2196:

17.149.34.66
17.149.34.65
17.172.233.65
17.172.233.66

由于这些地址显然可能会发生变化,因此我为应用程序内置了一些监控功能,以检测APNS服务器何时无法访问(并回退到这些地址范围而不是使用DNS)。它不是理想的解决方案,但它现在可以工作,直到我可以与我的公司网络/防火墙团队一起制定解决方案......