Внереестровая блокировка Google Firebase (firebaseapp.com, forms.gle, posts.gle)

У нас присвоен регион eur3 - мультирегион в восточной Европе. Сейчас нельзя изменить регион, его можно менять только при создании нового проекта в файрбейс. Может стоит попробовать создать новый проект, присвоить другой регион (Азию, Восток) и перенести на него базу? Спасибо. PS не программист.

Кстати, у пользователей, у которых отваливалась firestore database, вполне себе нормально в браузере открывался firestore.googleapis.com И еще, когда я сразу пытался поднять nginx чтобы проксировать все в него приходили CONNECT запросы по каждому адресу выше. Может это важно.

У iOS пользователей приложения были те же проблемы?

Попробовал создать проекты в разных регионах и все также. Не помогает

Да, они и остались. Прямо сейчас пытаюсь что-то похожее, как я сделал на Android, провернуть и на ios, но ничего не выходит. Задать “глобальный прокси” для ios приложения не выходит. Можно только перед отправкой самого запроса. Если кто поможет, буду признателен

Без сетевого дампа от клиента проблему не понять, imho.

firebase-ios-sdk и firebase-android-sdk используют разные стеки для TLS, у iOS С++ либы, у Android java. При этом через браузер работает (только неизвестно какой ip адрес получали для firestore). Если это не блок на стороне самих apis (не сетевой или TLS), возможно есть попытка цензора отсечь не api трафик и случился false positive. Вариантов у цензора масса, даже с данными из дампа воспроизвести блокировку из другой точки будет сложно. Это сетевой ад.

У меня есть пара пользователей у которых стабильно воспроизводится. Если есть способ снять дамп максимально просто, так чтобы бабуля разобралась, то возможно я смогу этот дамп добыть.

Всем привет. Через прокси тоже заработало.
Вот настройки для реализации на iOS:

Firebase осуществляет сетевой слой посредством gRPC.
Необходимо найти класс C++ “grpc_connection”
(лежит в папке FirebaseFirestore)
Найти Метод - CreateChannel (у меня на строке 300)
В параметрах к ChannelArguments добавить две строки

args.SetString(GRPC_ARG_HTTP_PROXY, “http://proxyHost:proxyPort”); (url и порт одной строкой (порт через двоеточие))
args.SetInt(GRPC_ARG_ENABLE_HTTP_PROXY, 1);

Непосредственно процедуру формирования данных для сетевого соединения с учетом настроек прокси можно отследить (проверить) в классе http_proxy (лежит в папке gRPC-Core) это строка 132 - absl::optionalstd::string HttpProxyMapper::MapName
Если прокси url указан некорректно, то Firebase в консоле напишет что-то вроде - cannot parse value of ‘http_proxy’ итп

Важно! При обновлении зависимостей Firestore проекта, эти правки перетрутся.

Надеюсь помог

Есть вариант чуть проще.

setenv("grpc_proxy", "http://x.x.x.x:yyyy", 1);

Вот это в любом месте своего кода и не будет перетираться.

Спасибо usnevst!

Ого, круто! А я ковырял гугловский SDK, тоже полезно )))

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

Есть примеры, когда проблема исчезала при переключении на wi-fi проводного провайдера?

Да, есть, провайдер к-телеком

Есть, причем множество. И есть примеры когда в сести wi-fi проводного провайдера те же проблемы.

Клиенты использовали нестандартные dns настройки? Провайдеры известны?

Переписываюсь с ТП Файрбейс,
Скриншот Ой!
Предлагаю вам также написать в ТП, более подробно изложить проблему (не программист), возможно у вас получится донести все нюансы данной проблемы, возможно предложить им решение.

https://firebase.google.com/support/troubleshooter/contact

Чтобы сообщить о проблеме, нужно сначала понять, где она происходит: блокируется ли какой-то конкретный домен, IP-адрес, порт. Без этой информации ни провайдер, ни поддержка Google вам никак не поможет.

Чтобы собрать эту информацию, достаточно захватить трафик и проанализировать его, либо выложить дамп сюда.

Все IP-адреса домена firestore.googleapis.com, которые мне удалось найти, открываются со всех точек в России, которые у меня имеются.

Я не разбираюсь особо в этом. Но вот попытался перехватить трафик, у меня пакеты идут туда когда пытаюсь обратиться к firestore базе данных. А в ответ никаких.


Хотя пинг к lu-in-f95.1e100.net проходит

У меня есть 1 пользователь, у которого сваливается по таймауту http://play.google.com Мегафон и NetByNet даже VPN не помогает. Какую информацию мы можем от него получить? Мой метод с прокси у него не работает. Т.е. даже запросы, которые проксируются через мой сервер в СПб у него не проходят.

Захватите трафик с помощью Wireshark, в pcap-файл. На вашем скриншоте недостаточно информации.

  1. Установите WireShark
  2. Выберите в нём сетевой интерфейс и укажите в строке filter: port 53 or port 443
  3. Запустите захват
  4. Откройте сервис/запустите программу, которая не работает
  5. Проверьте, есть ли какие-то адреса, на которые не удаётся подключение (много красных строк TCP SYN либо много повторений ClientHello).
  6. Остановите захват кнопкой с красным квадратом, сохраните в pcap-файл.

Выложите дамп (pcap-файл) сюда или отправьте личным сообщением.

Он заблокирован с марта 2022: Блокировка news.google.com и недоступность play.google.com