【问题标题】:Android FCM - What are the IPs and Ports for firewall?Android FCM - 防火墙的 IP 和端口是什么?
【发布时间】:2018-01-13 16:53:30
【问题描述】:

我们在受限环境中的服务器需要将通知推送到安装了我们的应用程序的设备。我们在一个开放的环境中尝试了我们的推送客户端,它成功了。但是,当移动到我们的服务器时,由于防火墙阻塞而出现网络错误。

根据谷歌文档:

如果您的组织有防火墙将流量限制为或 从 Internet,您需要对其进行配置以允许与 FCM 以便您的 Firebase 云消息传递客户端应用接收 消息。要打开的端口是:5228、5229 和 5230。通常为 FCM 只使用 5228,但有时使用 5229 和 5230。FCM 不 提供特定的 IP,所以你应该允许你的防火墙接受 到 IP 块中包含的所有 IP 地址的传出连接 列在 Google 的 ASN 15169 中。

但是,我们实际上是使用带有以下 URL 的 HTTP 协议进行推送:

https://fcm.googleapis.com/fcm/send

这是否意味着要打开的端口现在是443 而不是5228

此外,我们还需要配置主机,因为安全团队不允许我们连接到域。从上面的段落中,所有的 IP 地址都在 ASN 15169 中,我只设法找到了一个列表 here

有这方面经验的可以指点一下吗?谢谢。

【问题讨论】:

    标签: android firebase push-notification firebase-cloud-messaging


    【解决方案1】:

    这是否意味着要打开的端口现在是 443 而不是 5228?

    接收消息

    您应该按照documentation 打开 5228、5229 和 5230。

    发送消息

    FCM 不提供特定 IP,因为我们的 IP 范围变化太频繁,而且您的防火墙规则可能会过时,从而影响您的用户体验。 理想情况下,您会将端口 5228-5230 列入白名单,没有 IP 限制。

    但是,如果您必须有 IP 限制,则应将Google's ASN of 15169 中列出的 IPv4 和 IPv6 块中的所有 IP 地址列入白名单。这是一个很大的列表,您应该计划每月更新您的规则。

    【讨论】:

    • 由于 URL 部分已加密,因此无法将 HTTPS 后面的任何 URL 列入白名单。
    • 我应该将哪个 FCM IP 列入白名单以便在设备中接收?
    • @Darish 您能否在答案更新中包含指向文档的链接?
    • 只需要将https://fcm.googleapis.com/fcm/send的5228列入白名单吗?文档中提到的所有 ip 怎么样?
    • 根据文档,移动设备使用5228端口接收推送消息,与服务器端能否推送 向 Firebase 发送消息。此答案提供的信息不正确,不应被接受。
    【解决方案2】:

    除了 Darish 的回答,Google 不建议将 IP 或 URL 列入白名单:

    对于传出连接,FCM 不提供特定 IP,因为我们的 IP 范围更改过于频繁,您的防火墙规则可能会泄露 影响用户体验的日期。理想情况下,您将列入白名单 端口 5228-5230,没有 IP 限制。但是,如果您必须拥有 IP限制,您应该将所有IP地址列入白名单 在 Google 的 ASN 15169 中列出的 IPv4 和 IPv6 块。这是一个大 列表,您应该计划每月更新您的规则。引起的问题 受防火墙 IP 限制往往是断断续续的,难以 诊断。

    您可以找到有关 Google 的 IP 地址here(Google 帮助页面)或here (ipinfo.io) 的信息。

    你也可以试试这些命令(从上面的第一个链接,从netstat翻译成dig):

    dig @8.8.8.8 _spf.google.com TXT
    dig @8.8.8.8 _netblocks.google.com TXT
    dig @8.8.8.8 _netblocks2.google.com TXT
    dig @8.8.8.8 _netblocks3.google.com TXT
    

    第一个命令为您获取 Google 邮件服务器的 SPF 记录(这是他们拥有的所有 IP)。这会将您带到 _netblockN.google.com TXT 记录,该记录会为您提供所有 IP 范围。我刚才的查询产生了以下结果:

    _netblocks.google.com.  3599    IN      TXT     "v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all"
    _netblocks2.google.com. 3599    IN      TXT     "v=spf1 ip6:2001:4860:4000::/36 ip6:2404:6800:4000::/36 ip6:2607:f8b0:4000::/36 ip6:2800:3f0:4000::/36 ip6:2a00:1450:4000::/36 ip6:2c0f:fb50:4000::/36 ~all"
    _netblocks3.google.com. 3599    IN      TXT     "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
    

    您可以解析这些 TXT 记录并将生成的 IP 范围用于您的防火墙规则。不过,Google 确实建议您每月更新您的规则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      相关资源
      最近更新 更多