27.02.2022 наблюдается блокировка IP-адреса 199.36.158.100 сервиса Google Firebase, который используется на доменах forms.gle, posts.gle и firebaseapp.com от Google.
Блокировка осуществляется системой ТСПУ DPI, на провайдерах, где эта система установлена. TCP-соединение закрывается пакетом TCP RSTACK в ответ на SYN, ICMP-ответ (ping) не получается.
Сервис ping-admin показывает доступность сервиса в целом. ОБИТ, Ростелеком, МТС и Tele2 (все с ТСПУ) не устанавливают соединение до этого IP-адреса, причём с соседними адресами 199.36.158.99, 199.36.158.101 и 199.36.158.102 проблем не наблюдается.
В Реестре данный адрес не значится. Потенциальные заблокированные домены, ссылающиеся на этот адрес, также не найдены.
# traceroute 199.36.158.100 --tcp
traceroute to 199.36.158.100 (199.36.158.100), 30 hops max, 60 byte packets
1 _gateway (192.168.69.1) 0.431 ms 0.388 ms 0.583 ms
2 185-171-192-41.obit.ru (185.171.192.41) 1.378 ms 1.774 ms 2.161 ms
3 172.29.192.206 (172.29.192.206) 1.748 ms 1.949 ms 2.132 ms
4 172.29.192.121 (172.29.192.121) 2.720 ms 2.965 ms 3.103 ms
5 172.29.194.77 (172.29.194.77) 2.692 ms 2.945 ms 2.938 ms
6 172.29.194.102 (172.29.194.102) 2.930 ms 1.633 ms 1.762 ms
7 172.29.255.217 (172.29.255.217) 1.079 ms 1.867 ms 1.282 ms
8 172.29.194.121 (172.29.194.121) 1.694 ms 1.888 ms 1.880 ms
9 172.29.194.37 (172.29.194.37) 1.872 ms 1.864 ms 2.061 ms 10 censor-02.obit.ru (85.114.3.53) 2.053 ms 2.046 ms 2.039 ms 11 vi-xx-1874.brc1.spb.obit.ru (85.114.3.56) 2.440 ms 2.637 ms 2.835 ms
12 ae1-144.rt.ov.spb.ru.retn.net (87.245.250.65) 2.828 ms 1.884 ms 1.867 ms
13 * * *
14 * * *
15 * * *
16 ae0-3.rt.irx.fkt.de.retn.net (87.245.232.181) 33.290 ms * 33.267 ms
17 gw-fastly.retn.net (87.245.236.129) 32.644 ms 32.447 ms 32.603 ms
18 199.36.158.100 (199.36.158.100) 33.621 ms 30.754 ms 38.735 ms
Traceroute соседнего адреса:
# traceroute 199.36.158.102 --tcp
traceroute to 199.36.158.102 (199.36.158.102), 30 hops max, 60 byte packets
1 _gateway (192.168.69.1) 0.466 ms 0.450 ms 0.625 ms
2 185-171-192-41.obit.ru (185.171.192.41) 1.438 ms 1.838 ms 2.241 ms
3 172.29.194.72 (172.29.194.72) 1.823 ms 2.020 ms 2.221 ms
4 172.29.192.121 (172.29.192.121) 2.467 ms 2.563 ms 2.760 ms
5 172.29.194.77 (172.29.194.77) 2.447 ms 2.441 ms 2.435 ms
6 172.29.194.102 (172.29.194.102) 2.428 ms 1.063 ms 0.954 ms
7 172.29.255.217 (172.29.255.217) 1.353 ms 2.251 ms 1.136 ms
8 172.29.194.121 (172.29.194.121) 1.515 ms 1.508 ms 1.500 ms
9 172.29.194.37 (172.29.194.37) 2.931 ms 2.923 ms 3.115 ms
10 ae1-144.rt.ov.spb.ru.retn.net (87.245.250.65) 2.501 ms 2.494 ms 2.488 ms
11 * * *
12 gw-fastly.retn.net (87.245.236.129) 31.493 ms 31.068 ms 31.060 ms
13 199.36.158.102 (199.36.158.102) 38.291 ms 38.266 ms 38.859 ms
2022-02-27T11:01:31.875Z
bfov0jzd
mars-stub.web.app
2022-03-01T15:07:22.372Z
ValdikSS
$ host mars-stub.web.app
mars-stub.web.app has address 199.36.158.100
mars-stub.web.app has IPv6 address 2620:0:890::100
2022-03-01T15:07:34.233Z
nitesco
199.36.158.100 разблокировали?
2022-03-02T07:01:03.557Z
ValdikSS
Да.
2022-03-02T07:01:32.162Z
oLejikOnMyEvent(OLejik On My Event)
все еще не пашет, причем уже давно
2022-04-26T11:16:15.236Z
diwenx
It looks like the IP is still being blocked, same mechanism as the tor entry IP.
2022-04-26T19:39:35.104Z
ValdikSS
Убедился еще раз — 199.36.158.100 с моих провайдеров доступен.
forms.gle, posts.gle, firebaseapp.com открываются.
2022-05-22T09:41:36.673Z
UzverNumber47(Uzver Number47)
В последнее время ни у кого не было проблем с доступом к firebase из МегаФон и МТС? Именно мобильных сетей. С VPN все нормально начинает работать.
Firebase клиент пишет “Failed to fetch document because the client is offline”. И это все, что у меня есть.
2023-10-13T09:09:28.493Z
rubkv(rubkv)
Подтверждаю. Тоже есть периодические проблемы с доступом к Firebase через Мегафон и Ростелеком (Теле2). Начались примерно 3-4 дня назад. Database location: nam5 (не знаю имеет ли это значение).
Не знаю куда копать…
2023-10-15T00:29:35.316Z
UzverNumber47(Uzver Number47)
У меня все началось в ночь 7-8.10.2023. С каждым днем у большего числа людей начинает глючить. Домашние, мобильные сети, уже независимо от провайдера. Но еще есть у кого нормально работает. Видимо постепенно вводят свои блокировки
2023-10-15T09:50:38.894Z
ValdikSS
Все предыдущие домены, которые были недоступны год назад, работают.
2023-10-15T16:08:36.534Z
rubkv(rubkv)
Аналогично, всё так. С каждым днём всё большее количество пользователей жалуются на ошибку о недоступности БД Firebase. Подскажите, какая у вас локация серверов в Firebase, nam5 или другая?
Пока не понимаю как отловить заблокированные IP-адреса, чтобы сообщить здесь. У тех пользователей, у которых проблема с доступностью Firebase если включить VPN - всё работает отлично.
2023-10-15T16:43:00.364Z
amen
Такая же проблема, началась 3 дня назад.
Firestore сервер используем eur3.
Есть подозрение, что проблема именно с авторизацией в Firebase, а не с самой базой данных.
Если кто найдет решение этой проблемы, было бы здорово.
С VPN тоже все работает.
2023-10-15T17:35:47.216Z
rubkv(rubkv)
Коллеги, есть у кого-нибудь возможность попробовать отловить какие IP-адреса все-таки попали под блокировку? У нас авторизации нет, но проблема с запуском приложений из-за недоступности Firebase - есть.
Я попробую сегодня собрать дамп через PCAPdroid, может тоже кто-нибудь попробует отловить заблокированные адреса? Едва ли такая частичная блокировка серверов Firebase носит преднамеренный характер?
2023-10-15T18:26:58.268Z
ValdikSS
Firebase изначально работал по протоколу XMPP, но сейчас он объявлен deprecated и используется HTTP API.
Возможно, в вашем ПО используется XMPP-версия, а проблемы вызваны Обсуждение: Блокировка Jabber/XMPP в России?
2023-10-15T21:16:04.236Z
UzverNumber47(Uzver Number47)
Database location: eur3
2023-10-16T07:26:35.825Z
evilandfox(Rinat)
У нас тоже проблема, у многих пользователей (зависит походу от интернет провайдера) не работают запросы к firestore, причем только во flutter-библиотеке. Firebase Admin SDK и Firebase web SDK ок.
Предполагаю тогда что cloud_firestore | Flutter Package работет на XMPP и из за этого возникают проблемы. Пока непонятно как это решать.
По некоторым IP-адресам есть ответ Server Hello:
37 2.710146 192.168.1.118 216.58.209.170 TLSv1.2 247 Client Hello
40 2.758502 216.58.209.170 192.168.1.118 TLSv1.2 1466 Server Hello
Но не уверен, что правильно смотрю.
2023-10-16T11:10:38.727Z
usnevst
Чем заканчиваются TCP streams c этими Retransmission?
PCAPdroid использует zdtun, реализуя логику tun2socket. Пишет пакеты клиента на VPN интерфейсе, транслируя дату в сетевые сокеты. ACK’ает пакеты клиента при удачной записи в сокет, связь с ответом сервера косвенная. Дампы, при блокировке, могут сильно отличаться от снятых на внешнем интерфейсе или далее в сети. Retransmission может совсем не быть в дампах PCAPdroid, при реальной блокировке. Получается, надо смотреть все streams.
РКН ранее уже блокировал Google. Было масштабней, не нужно было искать иголку в стогу сена. Но можно использовать тот опыт для сбора всех адресов используемых гуглом для apis. Только не понятно, каких apis, блокируют ли проблемные адреса на всех ТСПУ, что именно по адресам блокируют.
2023-10-16T18:05:20.957Z
evilandfox(Rinat)
что делать то, ребят?
2023-10-17T05:09:47.431Z
usnevst
Мобильные платформы существуют в мире единорогов и розовых пони, там никогда не бывает сетевых сбоев. “client is offline” (unavailable) возвращает также когда проблемы с бэкендом, но апи доступно и отвечает. Идеальная цель для РКН, могут кошмарить и отмараживаться.
2023-10-17T12:18:19.716Z
ValdikSS
2023-10-17T12:26:24.469Z
ValdikSS
Удалось выяснить, к какому домену идут эти запросы?
Всё TLS на порт 443?
Доступно отовсюду, проблем не наблюдаю.
2023-10-18T09:05:52.273Z
UzverNumber47(Uzver Number47)
У меня проблема решилась перенаправлением трафика через прокси-сервер, который находится в СПб. Squid с дефолтными настройками и вот такой кусочек кода в андроид приложении.
Может кому-то поможет.
Firebase ios SDK вроде тоже так умеет, но я бы сам не отказался если бы кто-то показал как сделать подобное на ios.
2023-10-18T14:39:34.896Z
usnevst
Там есть другие внереестровые блокировки?
2023-10-19T09:56:01.244Z
UzverNumber47(Uzver Number47)
Я не знаю, с тех пор как подключил этот сервер пользователи больше не жаловались. В будущем если и на нем появятся блокировки - поставлю VPN прямо на сервер. Как-то так придумал.
2023-10-19T10:15:57.108Z
usnevst
Проверка на внереестровые блокировки
curl https://play.google.com/
2023-10-19T10:26:54.939Z
UzverNumber47(Uzver Number47)
Именно в таком виде ничего не выводит. С опцией -v много текста и в конце Connection … left intact.
2023-10-19T10:34:09.211Z
usnevst
Нет ошибок.
Блокировок нет.
2023-10-19T10:41:22.593Z
UzverNumber47(Uzver Number47)
Тогда, думаю, можно рекомендовать этот подход. Сервер брал самый дешевый на selectel.ru
Почему сurl на play.google.com? Все запросы в моем приложении шли на .googleapis.com правда это уже с включенным прокси в приложении.
2023-10-19T11:10:53.882Z
usnevst
Потому что .googleapis.com пока непонятно где и что блокируют, а https://play.google.com стабильно везде где есть внереестровые блокировки, и сайт близок к теме.
Есть полный список доменов которое приложение запрашивает при нулевом старте (без кеша, даты)?
Как у вас успехи? Приложение с базой firebase работает только через впн или ноунем провайдеров. Стоит ли ожидать разрешения проблемы со стороны Firebase Support. Написал им, но пока тишина.
2023-10-20T09:23:51.513Z
Andrew(Андрей)
У нас присвоен регион eur3 - мультирегион в восточной Европе. Сейчас нельзя изменить регион, его можно менять только при создании нового проекта в файрбейс. Может стоит попробовать создать новый проект, присвоить другой регион (Азию, Восток) и перенести на него базу? Спасибо. PS не программист.
2023-10-20T09:28:21.894Z
UzverNumber47(Uzver Number47)
Кстати, у пользователей, у которых отваливалась firestore database, вполне себе нормально в браузере открывался firestore.googleapis.com И еще, когда я сразу пытался поднять nginx чтобы проксировать все в него приходили CONNECT запросы по каждому адресу выше. Может это важно.
2023-10-20T11:06:28.182Z
usnevst
У iOS пользователей приложения были те же проблемы?
2023-10-20T11:47:41.851Z
Deniska(Denis)
Попробовал создать проекты в разных регионах и все также. Не помогает
2023-10-20T11:50:42.589Z
UzverNumber47(Uzver Number47)
Да, они и остались. Прямо сейчас пытаюсь что-то похожее, как я сделал на Android, провернуть и на ios, но ничего не выходит. Задать “глобальный прокси” для ios приложения не выходит. Можно только перед отправкой самого запроса. Если кто поможет, буду признателен
2023-10-20T12:13:09.475Z
usnevst
Без сетевого дампа от клиента проблему не понять, imho.
firebase-ios-sdk и firebase-android-sdk используют разные стеки для TLS, у iOS С++ либы, у Android java. При этом через браузер работает (только неизвестно какой ip адрес получали для firestore). Если это не блок на стороне самих apis (не сетевой или TLS), возможно есть попытка цензора отсечь не api трафик и случился false positive. Вариантов у цензора масса, даже с данными из дампа воспроизвести блокировку из другой точки будет сложно. Это сетевой ад.
2023-10-20T15:12:41.316Z
UzverNumber47(Uzver Number47)
У меня есть пара пользователей у которых стабильно воспроизводится. Если есть способ снять дамп максимально просто, так чтобы бабуля разобралась, то возможно я смогу этот дамп добыть.
2023-10-20T15:59:44.233Z
Vladimir(Vladimir)
Всем привет. Через прокси тоже заработало.
Вот настройки для реализации на 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 проекта, эти правки перетрутся.
Надеюсь помог
2023-10-20T17:07:22.767Z
UzverNumber47(Uzver Number47)
Есть вариант чуть проще.
setenv("grpc_proxy", "http://x.x.x.x:yyyy", 1);
Вот это в любом месте своего кода и не будет перетираться.
Ого, круто! А я ковырял гугловский SDK, тоже полезно )))
2023-10-20T17:45:42.410Z
ValdikSS
Вместо того, чтобы использовать обходные решения, гораздо продуктивнее было бы захватить трафик, как описано, например, здесь, выявить причину проблемы и проанализировать её, чтобы не гадать.
2023-10-22T16:59:47.168Z
usnevst
Есть примеры, когда проблема исчезала при переключении на wi-fi проводного провайдера?
2023-10-22T20:11:18.857Z
Andrew(Андрей)
Да, есть, провайдер к-телеком
2023-10-23T04:10:57.230Z
UzverNumber47(Uzver Number47)
Есть, причем множество. И есть примеры когда в сести wi-fi проводного провайдера те же проблемы.
2023-10-23T07:08:20.365Z
usnevst
Клиенты использовали нестандартные dns настройки? Провайдеры известны?
2023-10-23T08:49:37.852Z
Andrew(Андрей)
Переписываюсь с ТП Файрбейс,
Скриншот Ой!
Предлагаю вам также написать в ТП, более подробно изложить проблему (не программист), возможно у вас получится донести все нюансы данной проблемы, возможно предложить им решение.
Чтобы сообщить о проблеме, нужно сначала понять, где она происходит: блокируется ли какой-то конкретный домен, IP-адрес, порт. Без этой информации ни провайдер, ни поддержка Google вам никак не поможет.
Чтобы собрать эту информацию, достаточно захватить трафик и проанализировать его, либо выложить дамп сюда.
Все IP-адреса домена firestore.googleapis.com, которые мне удалось найти, открываются со всех точек в России, которые у меня имеются.
2023-10-23T20:16:29.029Z
Deniska(Denis)
Я не разбираюсь особо в этом. Но вот попытался перехватить трафик, у меня пакеты идут туда когда пытаюсь обратиться к firestore базе данных. А в ответ никаких.
У меня есть 1 пользователь, у которого сваливается по таймауту http://play.google.com Мегафон и NetByNet даже VPN не помогает. Какую информацию мы можем от него получить? Мой метод с прокси у него не работает. Т.е. даже запросы, которые проксируются через мой сервер в СПб у него не проходят.
2023-10-24T13:25:49.208Z
ValdikSS
Захватите трафик с помощью Wireshark, в pcap-файл. На вашем скриншоте недостаточно информации.
Я нашел причину — Android-приложение meduza в режиме обхода блокировок обращается к Firebase (firestore.googleapis.com) при запуске.
Блокируют сочетание TLS ciphersuites + server_name + supported_groups средствами ТСПУ. Как я понимаю, оно стандартное, из Firebase SDK.
Столкнулся с той же проблемой. Заметил, что на некоторых операторах начали зависать обращения к firestore документам и отваливаться транзакции. Меняешь сеть или используешь vpn - проблема уходит. Налицо блокировки. Начал копать и разбираться. Приложение на Flutter. Работает нативно на android и ios, и есть web версия.
Любопытно, что на операторе, на котором нативные flutter (AOT) версии блокируются, web версия работает! Первое предположение было, что может как-то хитро разные IP используются, для натива и web, отсюда и разное поведение (с блокировкой и без) Забегая вперед - нет, IP адреса одинаковые. [64.233.165.95] Ну и это же логично, их же выдает DNS по UDP, а там user-agent’a нет.
Первое что потребовалось, это исключить влияние Flutter. Сделал тестовый проект на Android. Чистое Android приложение на kotlin с последними версиями библиотек - симптомы те же.
В логах немного разные ошибки в зависимости от провайдера, видимо зависит от того как провайдеры рубят коннекшен, или не рубят его. все не сохранилось, вот одна из них такая: Caused by: io.grpc.StatusException: UNAVAILABLE: Channel shutdownNow invoked
Когда сеть без блокировок firestore работает по gRPC и создание документа выглядит так:
POST https://firestore.googleapis.com/google.firestore.v1.Firestore/Write HTTP/2.0
user-agent: grpc-java-okhttp/1.52.1
...
POST https://firestore.googleapis.com/google.firestore.v1.Firestore/Commit HTTP/2.0
user-agent: grpc-java-okhttp/1.52.1
...
Начал снимать TCP DUMP на разных провайдерах и анализировать их.
Далее начал искать по ключевым словам “Client Hello” и наткнулся на этот сайт и это обсуждение.
Надеюсь мои наблюдения будут полезны.
У меня два вопроса:
Как ValdikSS узнал что блокировка была нацелена на программу от meduza?
такая блокировка не является точечной, кто отвечает за то, чтобы уведомить РКН о необходимости пересмотреть правило блокировки, и будет ли это сделано в обозримом будущем? Или нам нужно костылять прокси обходы на клиентах?
2023-10-28T23:08:09.536Z
nail(Nail)
Дополню, сейчас речь об од wifi сети оператора ufanet, который блочит работу с firestore.
Но как было замечено, блочатся только наивные приложения android и ios (Flutter).
То же самое приложение запущенное в браузере, web версия (Fluter) - не блочится.
Девайс тот же самый, приложение нативное и web работает с одним и тем же firestore, сеть одна и та же.
пакет Client Hello для handshake собираются немного по разному:
У вас в дампе подтверждение для “Client Hello” приходит через 0.3 мс. Подтверждал явно не сервер.
Можете показать дампы для iOS?
2023-10-29T08:39:51.471Z
nail(Nail)
Так, я сейчас уехал из дома на квартиру, поэтому сеть другая.
Но dom.ru тоже блочит.
mac подключен проводом к роутеру. share internet через wifi.
ios подключен к маку по wifi на созданный hotspot
на маке запущен wireshark
ip срезолвился другой 209.85.233.95
Интересно TLS_CHACHA20_POLY1305_SHA256 идет первым, хотя в коде grpc++ он третий. В сборке отдельно от SDK, он таки третий.
Причина в железе, run-time условие:
// Order the bulk ciphers. First the preferred AEAD ciphers. We prefer
// CHACHA20 unless there is hardware support for fast and constant-time
// AES_GCM. Of the two CHACHA20 variants, the new one is preferred over the
// old one.
2023-10-29T13:59:27.758Z
nail(Nail)
железка была iPhone xs, iOS 16.7.1
2023-10-29T15:58:42.755Z
usnevst
В сети пишут, что начиная с 5 iPhone используемые процессоры имеют поддержку AES инструкций.
Но в BoringSSL по факту игнорируют эту поддержку. Можно при сборке отдельно включить, но тогда приложение может упасть на древних гаджетах, если поддерживаются.
То есть нет ситуации, что где-то есть пользователи у которых отсутствуют блокировки по причине железа, у всех будет едино. Но вот есть ситуация, когда невозможно воспроизвести блокировку вне блокируемой платформы, даже если можно собрать тот же код. Тот, да не тот.
2023-10-29T18:51:51.151Z
nail(Nail)
Возможно я не до конца понял Вас, но вот мои наблюдения насчет устройств:
На всех наблюдаемых устройствах (и android и iOS) блокировка на “плохих” операторах присутствует, если запускать нативную версию приложения. Как Flutter так и обычные. А вот если запустить веб версию (Fluttre) приложения блокировки нет.
Если есть подозрения, что поведение может отличаться в зависимости от устройств, обоснуйте причины и я проведу серию тестов на устройствах, до которых могу дотянуться.
Если говорить про Apple оборудование, вот такие устройства есть рядом.
iphone xs
iphone 12
iphone 13 pro max
iphone 14
ipad pro (не M)
ipad air 4
Можно попробовать приложение еще на маке запустить
Android оборудование тоже есть разнообразное.
2023-10-29T20:39:31.526Z
evilandfox(Rinat)
А если на уровне приложения задать прокси, то повляет ли это на модерацию приложения в Apple/Google? Не будет проблем с тем, что трафик проксируется?
2023-11-01T11:56:42.373Z
Vladimir(Vladimir)
У нас всё норм на обеих платформах прошло.
2023-11-01T13:50:20.897Z
UzverNumber47(Uzver Number47)
У меня на обеих платформах все норм. Крутится уже 2 недели, 4 апдейта
2023-11-01T15:42:56.705Z
evilandfox(Rinat)
Можете пожалуйста привести пример кода для обеих платформ?..
2023-11-02T10:37:32.218Z
evilandfox(Rinat)
А вообще возможно кто то на флаттер это реализовал, можете скинуть?
2023-11-02T10:39:49.660Z
Vladimir(Vladimir)
Там выше, на 15 дней назад необходимо ленту отмотать. Есть примеры кода
Товарищи, никто в последние 3 дня не сталкивался с проблемами доступа к firebase? Очень похоже, что опять началось. И обход со squid сервером перестал работать. Пока есть 2 пользователя Питер - Билайн, Екатерингбург - Теле2. VPN помогает.