設定 FCM 的網路

本文將說明 FCM 在網路環境中正常運作所需的網路設定。

設定網路,將訊息傳送至 FCM

開始前,請先確認系統可與 FCM 伺服器通訊,以便傳送訊息及管理訂閱項目。

如要傳送 FCM 訊息或管理訂閱項目,您的網路必須透過 https 與下列伺服器通訊:

  • fcm.googleapis.com (傳送訊息)
  • accounts.google.com (傳送訊息的驗證)
  • iid.googleapis.com (主題訂閱和裝置群組管理)

這份清單可能會隨時變動。我們無法為這些端點提供以 IP 為準的許可清單。

使用 FCM 為 Android 裝置設定網路

本節將詳細說明如何設定網路,支援 Android 裝置的 FCM 流量。

FCM 通訊埠和防火牆

絕大多數網路不會限制裝置連線至網際網路的其餘部分。一般而言,我們建議採用這種做法。不過,部分機構需要防火牆,做為周邊安全計畫的一部分。

防火牆選項

選項 服務內容 專屬規則 附註
無 (偏好) - - -
依通訊埠篩選 (第二個選項) 限制特定通訊埠的流量

要開啟的 TCP 通訊埠:

  • 5228
  • 5229
  • 5230
  • 443
這是最簡單的規則,可避免依賴隨時間變化的事物。
依主機名稱篩選 使用特殊防火牆設定,將特定 TLS SNI 項目加入許可清單,允許通過防火牆。這項功能可與以連接埠為準的篩選功能搭配使用。

要開啟的主機名稱:

  • mtalk.google.com
  • mtalk4.google.com
  • mtalk-staging.google.com
  • mtalk-dev.google.com
  • alt1-mtalk.google.com
  • alt2-mtalk.google.com
  • alt3-mtalk.google.com
  • alt4-mtalk.google.com
  • alt5-mtalk.google.com
  • alt6-mtalk.google.com
  • alt7-mtalk.google.com
  • alt8-mtalk.google.com
  • android.apis.google.com
  • device-provisioning.googleapis.com
  • firebaseinstallations.googleapis.com
並非所有防火牆軟體都支援這項功能,但許多軟體都支援。這份清單相當穩定,但如有變更,我們不會主動通知您。
以 IP 為準的篩選條件 (強烈建議) 使用非常龐大的靜態 IP 位址清單。 goog.json 中列出的所有 IP 位址加入許可清單。這份清單會定期更新,建議您每月更新規則。防火牆 IP 限制造成的問題通常是間歇性,難以診斷。 我們會非常頻繁地變更 IP 位址清單,且不會發出警告,因此您需要輸入這份龐大的清單,並經常更新。

此外,我們發現使用者在防火牆規則中輸入 IP 允許清單時,經常會發生錯字。

我們不建議這麼做,因為資訊一定會過時,且不會維護。

此外,清單大小對某些路由器來說可能過於龐大。

網路位址轉譯或具狀態封包檢查防火牆

如果您的網路實作網路位址轉譯 (NAT) 或有狀態封包檢查 (SPI),請為透過通訊埠 5228-5230 的連線實作 30 分鐘以上的逾時。這樣一來,我們就能提供可靠的連線,同時減少使用者行動裝置的電池耗電量。

FCM」和 Proxy

FCM 的通訊協定無法透過網路 Proxy 傳送推播訊息到裝置。因此,請務必確保網路上的裝置可以透過 FCM 連線直接連上我們的伺服器。

VPN 互動和可略過性

Firebase Cloud Messaging 會採取各種步驟,確保手機與伺服器之間的即時訊息連線穩定可靠,並盡可能保持連線狀態。使用 VPN 會使這項作業更加複雜。

VPN 會遮蓋基礎資訊,FCM 需要這些資訊才能調整連線,盡可能延長電池續航力並提升穩定性。在某些情況下,VPN 會主動中斷長期連線,導致訊息遺失或延遲,或是耗用大量電量,造成使用者體驗不佳。如果 VPN 設定允許我們這麼做,我們會使用加密連線 (透過基本網路 Wi-Fi 或 LTE) 略過 VPN,確保提供穩定且省電的體驗。FCM使用可略過的 VPN 僅適用於FCM推播通知管道。如果 VPN 處於啟用狀態,其他 FCM 流量 (例如註冊流量) 會使用 VPN。如果連線FCM繞過 VPN,就會失去 VPN 可能提供的額外好處,例如隱藏 IP 位址。

不同的 VPN 會有不同的方法,可控制是否能繞過 VPN。如需操作說明,請參閱特定 VPN 的說明文件。

如果 VPN 未設定為可略過,Firebase Cloud Messaging 會使用 VPN 網路連線至伺服器。這可能會導致訊息延遲傳送,且 Cloud Messaging 必須透過 VPN 連線維持連線,因此可能會消耗更多電量。