Простой обход блокировки сайтов Ростелекомом на маршрутизаторе MikroTik

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

Стал изучать подробности работы механизма блокировки Ростелекомом неугодных сайтов, и wireshark на пару с гуглом подсказали, что механизм блокировки сайтов более чем примитивен — на неугодные запросы система блокировки у провайдера (DPI) возвращает от имени запрошенного сервера пакет с http переадресацией на страницу блокировки. Пакет же от самого сайта тоже приходит, но не обрабатывается по причине нарушения номера tcp последовательности (TCP-out-of-order) и по сути, являющегося для системы дублем уже принятого, не смотря на отличия в содержании.

rutracker-blocked

Итак, всё что нам нужно для счастья — заблокировать файрволом эти самые ответы от DPI провайдера. Определить их можно по вхождению строки с переадресацией на страницу с информацией о запрете, на момент написания статьи все страницы с описанием запрета у Ростелекома начинаются с «http://95.167.13.50/?», а http-header переадресация пишет перед путём перенаправления «Location:», таким образом фильтровать будем по строке «Location: http://95.167.13.50/?». Полное правило для MikroTik будет выглядеть так:

/ip firewall filter add action=drop chain=forward content="Location: http://95.167.13.50/\?" in-interface=rt protocol=tcp src-port=80

Не забываем экранировать знак вопроса! Так же в примере для снижения нагрузки на процессор роутера указан входящий интерфейс для пакетов, в содержимом которых будем копаться, но это делать не обязательно.

Вот то же самое, но в картинках winbox:

mt-fw1 mt-fw2 mt-fw3

После добавления данного правила в начало списка firewall, раздел filter все сайты стали открываться на всех домашних устройствах.

Всем MikroTik!

P.S. После создания этого правила данная страница перестанет полностью открываться по понятным причинам 😉

 

UPD: Ростелеком внёс небольшие изменения, подробнее в продолжении статьи по ссылке: Ростелеком обновил механизм блокировки сайтов — обходим снова

Простой обход блокировки сайтов Ростелекомом на маршрутизаторе MikroTik: 8 комментариев

  1. 1) Предложенный вами пример:
    —-
    /ip firewall filter add action=drop chain=forward content=»Location: http://95.167.13.50/\?» in-interface=rt protocol=tcp src-port=80
    —-
    по блокировки пакетов с контентом «Location: http://95.167.13.50» помогает, но лишь частично. На указанную заглушку Ростелекома — http://95.167.13.50 я уже не натыкаюсь. Но на некторые ресурсы зайти не могу, например http://kinozal.tv/ При попытке открыть сайт выскакивает заглушка Онлайм — 77.37.254.90:
    http://77.37.254.90/zapret/?sa=104.24.106.53&da=xxx.xxx.xxx.xxx&url=http://kinozal.tv/

    Попытки её обойти в виде указания на роутере
    —-
    /ip firewall filter add action=drop chain=forward content=»Location: http://77.37.254.90\?» in-interface=rt protocol=tcp src-port=80

    # или
    /ip firewall filter add action=drop chain=forward content=»Location: Location: http://77.37.254.90/zapret/?\?» in-interface=rt protocol=tcp src-port=80

    # или даже полная блокировка пакетов с dst. address 77.37.254.90
    —-
    не помогают. Страница http://kinozal.tv/ просто не открывается вовсе. Предположу, что DPI у Онлайма в этом случае подключён последовательно. И пакеты от kinozal.tv не приходят вовсе. Но почему тогда открываются другие сайты? Если бы DPI был последовательный не открывались бы вообще никакие сайты. А значит я просто не правильно обрабатываю блокировку пакетов. Может как-то иначе?

    2) Кстати, при условиии что работает предложенной вами правило «Location: http://95.167.13.50«, а в адрес kinozal.tv добавить точку в конце «http://kinozal.tv./» — сайт открывается. Я так понимаю Микротик добавлять точки в адреса (модифицировать заголовки) не умеет. Не нашёл такого функционала. Есть идеи?

    3) Также пару раз наталкивался на заглушку ТТК (Транстелеком) — http://62.33.207.197/ Смоделировать ситуацию сейчас не могу. Потому не могу прокомментировать понять в каких случаях происходило подобное. Помню только то, что блокировка пакетов как и в случае с Онлайм, в этом случает также не срабатывала.

    Смотреть приходящие пакеты я не умею. Пробовал, но ничего толком не понял. Есть идеи?)

    1. Добрый вечер!
      Отвечу по пунктам —
      1. Так а какой у вас провайдер то? Онлайм или Ростелеком? Описанная в статье система блокировки эффективна только если она стоит «близко» к клиенту и быстро отвечает, поэтому если блокировка идет у магистральных провайдеров, то вероятно иначе. А если трафик смотреть в wireshark то в первую очередь обратите внимание на пакеты ответа на запрос вашего браузера — нет ли ошибок TCP Dup как на скриншоте. Эта ошибка говорит о «дублях» пакетов. В случае как с DPI от ростелекома это по сути не дубль, а подделка (точнее дубль это как раз настоящий пакет, а первый был подделка)
      2. Идея интересная, но проверить сейчас не могу ибо у меня и так всё открывается на базе правила, описанного в статье. А для модификации url можно попробовать использовать proxy в прозрачном режиме. С файрволом это не получится т.к. нарушатся контрольные суммы пакетов.
      3. Да, я тоже встречался с такой заглушкой, но это таким образом не обойти и это уже не ростелеком — с аналогичными проблемами сталкиваются даже заграничные пользователи совсем других провайдеров если их трафик идет через ТТК. Сейчас у меня такая ошибка перестала вылезать — или поменялись маршруты или ТТК опомнился и убрал. Хотя трейс подсказывает, что маршрут идёт сейчас не через ТТК 🙂
      4. Вы правы, SSL не позволяет промежуточным узлам узнать на какой URL будет запрос, поэтому тут решают иначе, скорее всего по IP.

  2. 4) И ещё, забыл сказать. Также не открываются сайт работающие по SSL-протоколу:
    —-
    http://2chru.cafe
    http://e621.net

    Но об этом и так вроде было известно. Так как в случае протокола SSL скорее всего у провайдера идёт блокировка по IP-адресу.

    Хм, может для kinozal.tv тоже идёт блокировка по IP…

  3. А можно поподробней остановиться на wireshark, у меня местечковый провайдер и я хотел-бы адаптировать статью под него,но моих познаний не хватает.

    1. Что именно интересует? Не все провайдеры блокируют таким образом, так что не на всех может сработать. В принципе по wireshark всё достаточно просто — нужно его установить (можно с дефолтными параметрами, главное не забыть winpcap поставить, он там в комплекте) и включить сниффинг пакетов на внешнем интерфейсе, после чего попробовать зайти за заблокированный сайт, после сниффинг остановить и смотреть по аналогии со статьёй что там будет видно.

Добавить комментарий для Кирилл Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *