Как настроить сеть для FCM

В этом документе описаны настройки сети, необходимые для правильной работы FCM в вашей сетевой среде.

Настройте сеть для отправки сообщений в FCM

Прежде чем начать, убедитесь, что ваша система обменивается данными с серверами FCM для отправки сообщений и управления подписками.

Чтобы отправлять сообщения FCM или управлять подписками, ваша сеть должна обмениваться данными со следующими серверами по протоколу HTTPS:

  • fcm.googleapis.com (отправка сообщений)
  • accounts.google.com (аутентификация для отправки сообщений);
  • iid.googleapis.com (подписка на темы и управление группами устройств)

Этот список может меняться. Мы не можем предоставить белый список на основе IP-адресов для этих конечных точек.

Настройте сеть для устройств Android с помощью FCM

В этом разделе рассказывается, как настроить сеть для поддержки трафика FCM для устройств Android.

Порты 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-адресов. Добавьте в белый список все IP-адреса, указанные в файле goog.json. Этот список регулярно обновляется, и мы рекомендуем вам ежемесячно обновлять свои правила. Проблемы, вызванные ограничениями IP-адресов брандмауэра, часто носят периодический характер и трудно диагностируются. Мы очень часто и без предупреждения меняем список IP-адресов, поэтому вам придется ввести этот большой список и часто его обновлять.

Кроме того, мы часто видим опечатки, когда люди пытаются ввести белые списки IP-адресов в правила брандмауэра.

Мы не рекомендуем этот способ, поскольку информация неизменно устаревает и не поддерживается.

Кроме того, размер списка может быть слишком большим для некоторых маршрутизаторов.

Брандмауэры с преобразованием сетевых адресов или проверкой пакетов с учетом состояния

Если в вашей сети используется преобразование сетевых адресов (NAT) или проверка пакетов с учетом состояния протокола (SPI), установите для подключений через порты 5228–5230 время ожидания не менее 30 минут. Это позволяет нам обеспечивать надежное подключение и при этом снижать расход заряда батареи на мобильных устройствах пользователей.

FCM и прокси-серверы

Протокол FCM для доставки push-уведомлений на устройства не поддерживает прокси-серверы. Поэтому вам нужно убедиться, что устройства в вашей сети могут подключаться к нашим серверам напрямую по протоколу FCM.

Взаимодействие с VPN и обход блокировок

Firebase Cloud Messaging принимает различные меры, чтобы обеспечить надежность и доступность подключения для push-сообщений между телефоном и сервером. Использование VPN усложняет эту задачу.

VPN-сервисы скрывают информацию, которая нужна FCM, чтобы настраивать подключение для максимальной надежности и экономии заряда батареи. В некоторых случаях VPN-сервисы активно разрывают долгосрочные подключения, что приводит к задержке или потере сообщений, а также к повышенному расходу заряда батареи. Если VPN настроена так, чтобы разрешать нам это делать, мы обходим VPN, используя зашифрованное соединение (через базовую сеть Wi-Fi или LTE), чтобы обеспечить надежную работу и экономию заряда батареи. FCM использует обходимые VPN только для канала push-уведомлений FCM. Другой трафик FCM, например трафик регистрации, использует VPN, если он активен. Когда подключение FCM обходит VPN, оно теряет дополнительные преимущества, которые может предоставлять VPN, например маскировку IP-адреса.

В разных VPN-сервисах могут быть разные способы управления обходом. Инструкции можно найти в документации к VPN.

Если VPN не настроена для обхода, Firebase Cloud Messaging будет использовать сеть VPN для подключения к серверу. Это может привести к задержкам в доставке сообщений и повышенному расходу заряда батареи, поскольку Cloud Messaging будет пытаться поддерживать связь через VPN.