Pull to refresh

“Блокировки которые никого не должны зацепить”.  Или как я восстанавливал работу Talkvio из-за блокировок Cloudflare

Level of difficultyEasy
Reading time3 min
Views9.3K

Немного предыстории, прежде чем начать — о том, что у меня за проект такой — Talkvio. Уже два года я в свободное от основной работы время разрабатываю свой пет-проект — Talkvio, альтернативу Пикабу, где всё должно быть лампово и плюшево.

Проект уже довольно сильно развился: там есть нейросети для проверки орфографии, автотегов и помощи в формировании контента и заголовков. Есть Android-клиент, а iOS-версия находится в разработке. Реализована похожая система кармы, как на Хабре, есть даже минусы (привет администрации Пикабу), и многое-многое другое.

У нас на ресурсе пользователи больше фокусируются на авторском контенте — всевозможных интересных статьях и т.п., помимо юмористического. То есть казалось, что ничего не предвещает беды.

Забегая вперед, чтобы читателю было интересно, ресурс НЕ использовал Cloudflare.

Вот так ресурс выглядит, когда работает :)
Вот так ресурс выглядит, когда работает :)

И вот буквально пять дней назад я начал получать сообщения от пользователей примерно такого содержания:

Те кто смог добраться до самого Talkvio, писали в приватных сообщениях там.
Те кто смог добраться до самого Talkvio, писали в приватных сообщениях там.

Стоит немного уточнить технические детали: сайт способен подгружать определённый контент офлайн с использованием сервис-воркеров. Так что такая картина вполне закономерна. Явно что-то не так с коммуникацией с серверами — и это очень странно, учитывая, что, хоть ресурс и активно развивается, эта часть системы стабильна и никто в саму коммуникацию не вмешивался.

Узнаем дальше:

Как видите, я получаю противоречивую информацию: у кого-то с VPN всё работает, у кого-то — нет. Это делает ситуацию ещё более странной. Забегая вперёд, могу сказать, что по статистике в 50% случаев с VPN всё работало, в остальных — даже так нет.

Один человек даже обратился в поддержку МТС.

В любой непонятной ситуации обвиняем сервис, который ничего не делал ;).

Ладно, ситуация совершенно не ясна. Нужно было что-то выяснять. Я сам не проживаю в России, и у всех, кто находится за рубежом, проблем с доступом к серверам не было. Основные серверы расположены в Германии, на платформе DigitalOcean.

Уже закрадывались нехорошие мысли — ведь когда-то уже были массовые блокировки IP-адресов их сети, ещё во времена блокировки Telegram. Я начал проверять всё, что только можно: вдруг из-за какого-то поста попал под блокировку. Но всё оказалось чисто.

Ещё больше смущало то, что постепенно выяснялось: проблема касалась именно мобильного интернета.

В этот момент я понял, что пора серьёзно что-то выяснять — проблема не рассасывается. Поскольку все проблемы касались в основном мобильных телефонов, я набросал приложение на Android, которое должно было проверять конфигурацию сети и всевозможные параметры, включая сертификаты, порты, ответы серверов, скорость, контент и т.п.

Вот результат теста одного из пользователей с проблемой:

Результат меня неожиданно удивил. Все ответы от сервера, даже контент и DNS — всё было валидно. Но скорость подгрузки CSS/JS была запредельной: за 10 секунд мы не можем получить файл размером в 25 KB с gzip-сжатием? Бред. Однако ответа на тот момент у меня ещё не было: я понял, что это разновидность блокировки, но не обычная, а больше похожая на YouTube с его замедлением.

Следующим этапом стало самое важное — решение проблемы, когда стало понятно, как всё выглядит. С грустью я выяснил, что Amazon CloudFront в России недоступен. Я запустил текстовый кэширующий сервер внутри России — именно кэширующий, потому что, учитывая количество медиа-контента на данный момент, такое решение для меня оказалось приемлемее, чем искать какой-то непонятный внутренний CDN.

Потом весь исходящий из России трафик я перенаправил через этот кэширующий сервер, и вуаля — после распространения нового адреса среди пользователей из России грустные пользователи наконец смогли зайти на сайт снова.

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

Что же дальше — вот буквально вчера появилась любопытная новость из блога Cloudflare, о том что доступ к веб содержимому ограничен до неприемлемых значений скорости.

И я понял — это оно: даты совпадают, симптомы совпадают, всё именно так, как описывал Cloudflare в своём блоге. Единственный нюанс — я не использовал Cloudflare на своём ресурсе.

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

UPD1:

Также оказалось, что в этой статье упоминались важные детали, которые наши журналисты почему-то совсем упустили:

External reports corroborate our analysis, and further suggest that a number of other service providers are also affected by throttling or other disruptive actions in Russia, including at least Hetzner, DigitalOcean, and OVH.

Это очень важный нюанс. Если вглядеться в детали, почитать External reports, можно наконец сложить полную картину произошедшего. Под блокировки попали не только Cloudflare, но и огромные дата-центры и VPS-кластеры крупных зарубежных провайдеров.

Это, блин, крайне немаловажная деталь, которую почему-то все решили упустить и сфокусировали внимание на Cloudflare.

О количестве случайных сайтов, попавших под эту «случайную» блокировку, могу только гадать. Но об этом уже в обсуждении.

Tags:
Hubs:
+20
Comments26

Articles