Интернет тяжело заблокировать, проще отключить Вы когда-нибудь задумывались насколько сложно выборочно блокировать интернет? Разберем на простом домашнем примере.
Помните свой прошлый роутер? Который верой и правдой служил вам лет пять, но внезапно стал так тормозить, что пришлось покупать новый, помощнее? Износился наверное. Нет, три новых смартфона в доме, умная кофеварка и подписка на порнхаб в HD никак с этим не связаны.
По сути всё, чем занимается ваш роутер — читает четыре байта из каждого пакета и решает кому отправить его содержимое. Простейшая работа, как кубики в формочки вставлять. Только пакетов этих проходит так много, что даже неплохой домашний роутер за $150 поднимает лапки на втором десятке устройств.
Теперь представьте сколько таких устройств во всём вашем городе. А во всей стране?
Из каждого пакета каждого устройства нужно не просто прочитать пару байтиков. Нужно сравнить их с базой «запрещенных байтиков», что невообразимо долго и несовместимо с нормальной работой сети. Когда так сделали в Китае, внешний интернет вообще перестал работать.
Как блокируют у нас и в Китае
В Китае потратили миллиарды долларов на оборудование и добились работы внешнего интернета со скоростью примерно один мегабит. Он как бы есть, но пользоваться им невозможно. В России пошли своим путём — начали ставить блокировку не на канал, а рядом.
Систему назвали DPI — Deep Packet Inspection. Если она стоит прям на канале провайдера — это активный DPI, если параллельно — пассивный. В Китае применяют оба варианта, в России — в основном пассивный.
Когда вы запрашиваете рутрекер, запрос без каких-либо проверок улетает на сервер рутрекера. Одновременно с этим он дублируется на коробочку с DPI, чья задача проверить заблокирован ли сайт. Если да — вернуть редирект на страничку «сайт заблокирован» быстрее, чем вам ответит сам рутрекер. Протупил — проиграл, рутрекер загрузился.
В Китае вместо редиректа используют флаг сброса соединения. Там не парятся с заглушками, просто показывают вечную загрузку.
Уже становится понятно насколько всё тупо. Ведь можно просто настроить свой компьютер отбрасывать все «редиректы» от пассивного DPI и смотреть любой запрещенный сайт. Кек.
DPI физически не успевает анализировать все пакеты, поэтому он выбирает только подозрительные. «Подозрительность» он определяет по словам «HTTP» и «Host» внутри. Причем именно в таком регистре. Если написать, скажем, «hoSt», что совершенно валидно для протокола HTTP, DPI даже не посмотрит на такой пакет. Снова кек.
Ладно, представим, что кто-то изобрел самый умный в мире DPI. Он ничего не отбрасывает, знает все тонкости HTTP и стоит полтора миллиарда. Зато ни один пакет, содержащий «Host: rutracker.org», не пройдет. Зато пройдут два пакета: «Hos» и «t: rutracker.org». Трипл кек.
Я думал не бывает цирка смешнее этого. Можете почитать подробнее в статье ValdikSS на хабре: Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу
Когда Роскомнадзор понял насколько нелепо были потрачены миллионы на всю эту затею с DPI, они озверели начали банить тупо по IP. В таком случае блокируется сама попытка отправить запрос и делается это обычным фаерволлом.
Всё это легко обходится проксями, где запрос сначала отправляется на другой IP, или VPN, где все данные идут через шифрованный тоннель и IP из них вообще не прочитать.
Самое смешное, что тот же Китай, на который они так равняются, прошел ровно те же этапы еще 10-15 лет назад.
Китай тоже не смог заблокировать интернет. Он сделал так, что сайтами «снаружи» стало мучительно невозможно пользоваться. И подождал 20 лет.
Раз уж Китай впереди планеты всей, заглянем на 10 лет вперед и посмотрим что нас ждет:
- Активные DPI на граничных магистралях. Как виза в интернет. Китайцы не пользуются внешними сервисами потому что они практически не грузятся;
- Полный запрет прокси и VPN. Китайский Роскомнадзор следит за всеми новыми VPN и заранее банит их;
- Подмена DNS (DNS Hijacking). Еще с 2002 года Китай начал фильтровать ответы корневых DNS серверов и подделывать их. К 2007 году в стране не осталось DNS, которые бы не управлялись правительством. Все внутренние DNS провайдеров общаются только с доверенным списком серверов. Одно время даже домен google.com вёл на китайский поисковик Baidu, что нехило повысило его популярность;
- Поиск запрещенных иероглифов в пакетах. Китайцам «помог» их собственный язык. Если даже на разрешенном сайте DPI увидит иероглиф, связанный с запрещенными политическими событиями, он разорвёт соединение и настучит куда надо. Как хорошо, что в русском и английском языках так не получится.;
- Рандомные разрывы соединений. «Не можешь запретить — сделай жизнь невыносимой». Смотреть ролики на ютюбе китайцы бы не смогли, даже не будь он заблокирован. Их пассивный DPI просто рвет в случайных местах внешние UDP-потоки.
Как Телеграм клал болт на это всё
У телеграма есть специальный тип пуш-уведомлений, который не отображается нотифом на экране вашего смартфона (как новое сообщение), а тихо обрабатывается самим приложением в фоне. Называется он DC_Update (DC — от Data Center), через него приложение получает IP адрес нового сервера, с которым отныне общается. Раньше его использовали для ускорения работы, но на прошлой неделе у него была минута славы.
Пуш-уведомления рассылаются с серверов Apple (APNS) или Google (GCM, Firebase). Так сделано, чтобы смартфон мог держать только одно фоновое соединение, не бегая по серверам каждого приложения отдельно. Телеграм говорит серверам Apple «пошли такой-то пуш такому-то пользователю» и Apple посылает.
Так началась гонка вооружений. Телеграм регистрирует новый IP, сообщает его своим пользователям через этот пуш, Роскомнадзор блокирует подсеть, телеграм рассылает новый.
Есть только два способа это прекратить:
- Запретить Apple и Google рассылать пуш-уведомления телеграма. Но это требование незаконно. Максимум на что они пойдут — удалят приложение из сторов для российских аккаунтов, но это никак не скажется на работе пуш-уведомлений.
- Заблокировать сами пуш-сервера. Тогда на всех телефонах в России перестанут работать все пуш-уведомления. Добро пожаловать в каменный век!
Телеграм может и дальше перебирать IP адреса пока они вообще не закончатся. 20 млн IP — это меньше 1% от их общего количества. Есть еще куда стремиться. Будет хуже.
Вот хорошая статья 2017 года про историю и устройство блокировок в Китае. Автор собрал много источников: Золотая Цензура Китая.