H Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.

Выявляем и блокируем пакеты пассивного DPI

Поддельные пакеты, формируемые DPI, легко обнаружить анализатором трафика, например, Wireshark.
Пробуем зайти на заблокированный сайт:
Wireshark

Мы видим, что сначала приходит пакет от DPI, с HTTP-перенаправлением кодом 302, а затем настоящий ответ от сайта. Ответ от сайта расценивается как ретрансмиссия и отбрасывается операционной системой. Браузер переходит по ссылке, указанной в ответе DPI, и мы видим страницу блокировки.

Рассмотрим пакет от DPI подробнее:
image

HTTP/1.1 302 Found
Connection: close
Location: http://warning.rt.ru/?id=17&st=0&dt=195.82.146.214&rs=http%3A%2F%2Frutracker.org%2F

В ответе DPI не устанавливается флаг «Don't Fragment», и в поле Identification указано 1. Серверы в интернете обычно устанавливают бит «Don't Fragment», и пакеты без этого бита встречаются нечасто. Мы можем использовать это в качестве отличительной особенности пакетов от DPI, вместе с тем фактом, что такие пакеты всегда содержат HTTP-перенаправление кодом 302, и написать правило iptables, блокирующее их:
# iptables -A FORWARD -p tcp --sport 80 -m u32 --u32 "0x4=0x10000 && 0x60=0x7761726e && 0x64=0x696e672e && 0x68=0x72742e72" -m comment --comment "Rostelecom HTTP" -j DROP

Что это такое? Модуль u32 iptables позволяет выполнять битовые операции и операции сравнения над 4-байтовыми данными в пакете. По смещению 0x4 хранится 2-байтное поле Indentification, сразу за ним идут 1-байтные поля Flags и Fragment Offset.
Начиная со смещения 0x60 расположен домен перенаправления (HTTP-заголовок Location).
Если Identification = 1, Flags = 0, Fragment Offset = 0, 0x60 = «warn», 0x64 = «ing.», 0x68 = «rt.ru», то отбрасываем пакет, и получаем настоящий ответ от сайта.

В случае с HTTPS-сайтами, DPI присылает TCP Reset-пакет, тоже с Identification = 1 и Flags = 0.

Активный DPI

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

Системы DPI разработаны таким образом, чтобы обрабатывать трафик с максимально возможной скоростью, исследуя только самые популярные и игнорируя нетипичные запросы, даже если они полностью соответствуют стандарту.

Изучаем стандарт HTTP

Типичные HTTP-запросы в упрощенном виде выглядят следующим образом:
GET / HTTP/1.1
Host: habrahabr.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

Запрос начинается с HTTP-метода, затем следует один пробел, после него указывается путь, затем еще один пробел, и заканчивается строка протоколом и переносом строки CRLF.
Заголовки начинаются с большой буквы, после двоеточия ставится символ пробела.

Давайте заглянем в последнюю версию стандарта HTTP/1.1 от 2014 года. Согласно RFC 7230, HTTP-заголовки не зависят от регистра символов, а после двоеточия может стоять произвольное количество пробелов (или не быть их вовсе).
   Each header field consists of a case-insensitive field name followed
   by a colon (":"), optional leading whitespace, the field value, and
   optional trailing whitespace.

     header-field   = field-name ":" OWS field-value OWS

     field-name     = token
     field-value    = *( field-content / obs-fold )
     field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]
     field-vchar    = VCHAR / obs-text

     obs-fold       = CRLF 1*( SP / HTAB )
                    ; obsolete line folding

OWS — опциональный один или несколько символов пробела или табуляции, SP — одинарный символ пробела, HTAB — табуляция, CRLF — перенос строки и возврат каретки (\r\n).

Это значит, что запрос ниже полностью соответствует стандарту, его должны принять многие веб-серверы, придерживающиеся стандарта:
GET / HTTP/1.1
hoSt:habrahabr.ru
user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding:           gzip, deflate, br
coNNecTion:	keep-alive      ← здесь символ табуляции между двоеточием и значением

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

Старый стандарт, RFC 2616, рекомендует снисходительно парсить запросы и ответы сломанных веб-северов и клиентов, и корректно обрабатывать произвольное количество пробелов в самой первой строке HTTP-запросов и ответов в тех местах, где требуется только один:
Clients SHOULD be tolerant in parsing the Status-Line and servers tolerant when parsing the Request-Line. In particular, they SHOULD accept any amount of SP or HT characters between fields, even though only a single SP is required.
Этой рекомендации придерживаются далеко не все веб-серверы. Из-за двух пробелов между методом и путем ломаются некоторые сайты.

Спускаемся на уровень TCP

Соединение TCP начинается с SYN-запроса и SYN/ACK-ответа. В запросе клиент, среди прочей информации, указывает размер TCP-окна (TCP Window Size) — количество байт, которые он готов принимать без подтверждения передачи. Сервер тоже указывает это значение. В интернете используется значение MTU 1500, что позволяет отправить до 1460 байтов данных в одном TCP-пакете.
Если сервер указывает размер TCP-окна менее 1460, клиент отправит в первом пакете данных столько, сколько указано в этом параметре.

Если сервер пришлет TCP Window Size = 2 в SYN/ACK-пакете (или мы его изменим на это значение на стороне клиента), то браузер отправит HTTP-запрос двумя пакетами:

Пакет 1:
GE
Пакет 2:
T / HTTP/1.1
Host: habrahabr.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding: gzip, deflate, br
Connection: keep-alive


Используем особенности HTTP и TCP для обхода активного DPI

Многие решения DPI ожидают заголовки только в стандартном виде.
Для блокировки сайтов по домену или URI, они ищут строку "Host: " в теле запроса. Стоит заменить заголовок «Host» на «hoSt» или убрать пробел после двоеточия, и перед вами открывается запрошенный сайт.
Не все DPI можно обмануть таким простым трюком. DPI некоторых провайдеров корректно анализируют HTTP-заголовки в соответствии со стандартом, но не умеют собирать TCP-поток из нескольких пакетов. Для таких DPI подойдет «фрагментирование» пакета, путем искусственного уменьшения TCP Window Size.

В настоящий момент, в РФ DPI устанавливают и у конечных провайдеров, и на каналах транзитного трафика. Бывают случаи, когда одним способом можно обойти DPI вашего провайдера, но вы видите заглушку транзитного провайдера. В таких случаях нужно комбинировать все доступные способы.

Программа для обхода DPI

Я написал программу для обхода DPI под Windows: GoodbyeDPI.
Она умеет блокировать пакеты с перенаправлением от пассивного DPI, заменять Host на hoSt, удалять пробел между двоеточием и значением хоста в заголовке Host, «фрагментировать» HTTP и HTTPS-пакеты (устанавливать TCP Window Size), и добавлять дополнительный пробел между HTTP-методом и путем.
Преимущество этого метода обхода в том, что он полностью автономный: нет внешних серверов, которые могут заблокировать.

По умолчанию активированы опции, нацеленные на максимальную совместимость с провайдерами, но не на скорость работы. Запустите программу следующим образом:
goodbyedpi.exe -1 -a
Если заблокированные сайты стали открываться, DPI вашего провайдера можно обойти.
Попробуйте запустить программу с параметром -2 и зайти на заблокированный HTTPS-сайт. Если все продолжает работать, попробуйте режим -3 и -4 (наиболее быстрый).
Некоторые провайдеры, например, Мегафон и Yota, не пропускают фрагментированные пакеты по HTTP, и сайты перестают открываться вообще. С такими провайдерами используйте опцию -3 -a

Эффективное проксирование для обхода блокировок по IP

В случае блокировок по IP-адресу, провайдеры фильтруют только исходящие запросы на IP-адреса из реестра, но не входящие пакеты с этих адресов.
Программа ReQrypt работает как эффективный прокси-сервер: исходящие от клиента пакеты отправляются на сервер ReQrypt в зашифрованном виде, сервер ReQrypt пересылает их серверу назначения с подменой исходящего IP-адреса на клиентский, сервер назначения отвечает клиенту напрямую, минуя ReQrypt.

ReQrypt

Если наш компьютер находится за NAT, мы не можем просто отправить запрос на сервер ReQrypt и ожидать ответа от сайта. Ответ не дойдет, т.к. в таблице NAT не создана запись для этого IP-адреса.
Для «пробива» NAT, ReQrypt отправляет первый пакет в TCP-соединении напрямую сайту, но с TTL = 3. Он добавляет запись в NAT-таблицу роутера, но не доходит до сайта назначения.

Долгое время разработка была заморожена из-за того, что автор не мог найти сервер с возможностью спуфинга. Спуфинг IP-адресов часто используется для амплификации атак через DNS, NNTP и другие протоколы, из-за чего он запрещен у подавляющего большинства провайдеров. Но сервер все-таки был найден, хоть и не самый удачный. Разработка продолжается.

Заключение и TL;DR

GoodbyeDPI — программа под Windows, позволяющая обходить пассивные и активные DPI. Просто скачайте и запустите ее, и заблокированные сайты станут снова доступны.
Для Linux есть аналогичная программа — zapret.

Используйте кроссплатформенную программу ReQrypt, если ваш провайдер блокирует сайты по IP-адресу.

Определить тип блокировки сайтов можно программой Blockcheck. Если в тестах DPI вы видите, что сайты открываются, или видите строку «обнаружен пассивный DPI», то GoodbyeDPI вам поможет. Если нет, используйте ReQrypt.

Дополнительная полезная информация есть здесь и здесь.
+212

комментарии (291)

0
FisHlaBsoMAN ,  

Я когда то обходил блокировку подменяя GET на POST, изначально проверял head'ом и обнаружил что работает

+4
ValdikSS ,  
Это будет работать только на очень ограниченном количестве сайтов.
0
FisHlaBsoMAN ,  
Это само собой, но качать файлики через wget самописным скриптом мне удавалось. Если что я про ныне покойный(?) ex
+5
nesselrode ,  
Статья понравилась, автор молодец. Сразу поселилась мысль, что тут содержатся способы обхода блокировок, что запрещено в РФ. Надеюсь роскомнадзор с прихвостнями пройдут мимо
+13
Meklon ,  
Боюсь скоро начнут выпиливать эти публикации. И прошлые тоже. Вариантов нет особо.
+10
vconst ,  
Тогда тут останутся только пустые корпоративные блоги с нулем просмотров
0
+1 –1
Meklon ,  
Беда утром, что баланса особо не получится (( законы хреновые.
+1
Dmitry_5 ,  

Просмотры будут писаться кто сколько проплатит

+3
tersuren ,  
Тут скорее надо боятся что ValdikSS'а выпилят :(
+4
omgiafs ,  
Пора выводить часть статей в Tor.

Как у флибусты — зайдешь на «луковый» сайт — полный доступ, зайдёшь на flisland.net — нет доступа к текстам.

Заходят ребята к РосКомНадзора — всё чинно, благородно.
Заходят остальные через Тор — всё как до РосКомНадзоров и регулирований интернета.
0
eov ,  

нужно качнуть для автономного прочтения…

0
arabesc ,  
Можете оформить статью, как исследование способов фильтрации инжектированных в трафик третьей стороной левых пакетов, своеобразная защита от MitM. В качестве примера взять хост, ошибочно попавший под блокировку.
0
gorbln ,  
Я сделал так: распечатал статью в ПДФ. Единственное, что непонятно — сконвертировались ли ссылки.

+2
ivan386 ,  

У браузеров же есть возможность сохранить HTML со всеми ресурсами.

0
gorbln ,  
Согласен. Не подумал.
0
Garrett ,  
Ну не со всеми, хром например не сохраняет файлы шрифтов прописанные в css, у них это в TODO с лохматых годов =\
0
EvilGenius18 ,   * (был изменён)
А, кроме DPI и IP, какие еще типы блокировок существуют?
Провайдеры разве не имеют возможность видеть кто обходит блокировки, а кто нет?
+7
vilgeforce ,  
Есть подозрение, что дрючат провов за то, что «ревизор» обходит блокировки, а не продвинутые юзеры
+1
+2 –1
ivan386 ,  

Кальмаром ещё блокируют.

+3
ValdikSS ,  
Да, у некоторых провайдеров установлен zapretservice, который представляет собой настроенный Squid.

EvilGenius18
Провайдеры разве не имеют возможность видеть кто обходит блокировки, а кто нет?
Имеют, конечно.
0
ivan386 ,  

Объясняю. По IP трафик заворачивают на прозрачный прокси а он уже вычитывает url или домен в случае https и блокирует в случае соответствии с правилами. Такой способ используют мелкие провайдеры.

0
mikluha ,  
Ну так могут позволить себе делать только очень мелкие провайдеры, которые всех натят в один адрес. Ведь в этом случае у тебя адрес будет тот, что у прокси.
К тому же это достаточно «тяжелый» вариант
0
GloooM ,  
У Squid есть TPROXY он позволяет оставлять оригинальный адрес https://wiki.squid-cache.org/Features/Tproxy4 так что это не проблема, учитывая что поток на заблокированные ресурсы не так велик, вполне себе можно переварить.
+1
ivan386 ,  

Ещё подменяют ответы DNS.

0
mikluha ,  
Смотря как обходит. Но провайдеру это не интересно. Провайдеру эти блокировки как серпом по яй… ой, ну вы поняли :).
Провайдеру главное, чтобы установленный ревизор не ходил куда не надо и РКН был удовлетворен.
0
DenimTornado ,  
Спасибо, интересно. Для Мака подобное есть?
+2
ValdikSS ,  
ReQrypt должен работать и на macOS, и на FreeBSD, но его никто не собирал. Попробуйте, напишите о результатах, если будете пробовать.
Вот что пишет автор:
It is supported, see the build instructions for MacOSX in the INSTALL file. The Mac build is mostly the same as FreeBSD since they are similar systems. That said, I have not tested it in a long time, so I don't know if it still works.

Вообще, я планировал перенести всю функциональность GoodbyeDPI в ReQrypt, чтобы была одна большая кроссплатформенная программа, с веб-интерфейсом, но пока как-то руки не доходят. Будет здорово, если кто-нибудь поможет мне и автору ReQrypt. Здесь есть план: https://github.com/ValdikSS/ruqrypt/issues/1
0
DenimTornado ,  
Спасибо за наводку, попробую собрать под Мак!
0
DenimTornado ,   * (был изменён)
Не собралось, к сожалению. Оставил issue — https://github.com/basil00/reqrypt/issues/2
+1
ValdikSS ,  
Автор исправил, теперь собирается?
0
DenimTornado ,  
Собраться-то собралось, только на новых версиях macOS нет ipfw, его заменили на PF, в итоге пакет превратился в тыкву…
0
MyOnAsSalat ,  
Не думаю что обывателю очень удобно держать открытую вкладку хотя это и кроссплатформенно, к тому же ваш сервис переодически вызывает bsod у некоторых пользователей так что использовать его бы хотелось с возможностью отключения и включения в пару кликов, у меня появилась идея сделать под .net приложение и запихать туда openvpn, ruqrypt, goodbyedpl и все основные способы обхода с возможностью обновлять модули и gui по отдельности.
+1
dzhidzhoev ,   * (был изменён)
Запилил небольшое расширение ядра для macOS (IP Filter), блокирующее пакеты пассивного DPI Ростелекома.
Можно попробовать переписать фильтры под себя, если необходимо.

https://github.com/dzhidzhoev/AntiRTDPI
0
ValdikSS ,  
Надоело копипастить сравнение «warning.rt.ru» побайтово?
0
ValdikSS ,   * (был изменён)
Вы, видимо, хотели оптимизировать сравнение вложенными if'ами, но это не нужно: как только не сработает первое правило, сравнение остальных не будет производится, если это логическое «и» (&&).
0
dzhidzhoev ,   * (был изменён)
В Си ведь нет сокращенного вычисления логических выражений?
UPD: ок, понял, есть.
+1
ValdikSS ,  
if (0 && exit(-1)) {something};

exit(-1) не будет выполняться.
–1
Orient ,  
+3
MonkAlex ,   * (был изменён)
Внезапно, просто запустил и работает.
Спасибо.

UPD: я правильно понимаю, что это единственное решение, когда мой трафик не ходит никуда, всмысле в том числе на неизвестные прокси\впн? =)
0
ivan386 ,  

Да

+49
ValdikSS ,  
Клёво. Я и хотел так сделать, чтобы можно было просто запустить, и оно просто заработало.
Считаю, что у нас глобально не хватает хороших программ. Есть идеи, есть технологии, есть исследования, а софт писать разучились, либо просто лень людям. Что ни прокси-сервер или мессенджер, то обязательно на Electron, с chromium и ffmpeg.dll, на 60+ МБ, отъедающий 200+ МБ RAM, и еще нужно, чтобы при нажатии правой кнопки вываливалось меню с пунктами «Back» и «Refresh». И обязательно с рекламой или привязкой ко своим серверам.

Я написал GoodbyeDPI, потому что мне было интересно, и потому что я стараюсь заботиться о людях. Я не пользуюсь Windows, но, тем не менее, эта программа под Windows.
+5
OnkelTem ,  

Человечище!

+1
+2 –1
nikitasius ,  
VPS за 3 бакса, проброс порта PuTTy (win)/ssh (linux), Firefox, sock5 прокси, галка «proxy DNS when using SOCK v5».

Все.
0
+1 –1
ValdikSS ,   * (был изменён)
Ну и работать это будет только в браузере. Зачем мне браузер, ведь есть telnet. Я же не браузер смотрю, а интернет!
+1
+2 –1
nikitasius ,  

Работать это будет где угодно :)
Это sock5. И браузер, и игрушки, TCP/IP который приносит радости. Если прописать на уровне системы — то весь системный софт, который умеет "в настройки системы" будет ее юзать.


Конечно, это чуть дольше чем скачать программу, которая будет обходить какие-то частные случаи.


Это всего лишь:


  • купить виртуалку за 3 бакса или евро (если дорого, скинуться с 3 друзьями, кто будет сидеть на ней же)
  • выбрать установку дебиана в админ панели хостера, сервер можно и не настраивать, ну или минимум добавить юзера для прокси
  • скачать PuTTy (windows) и настроить как на картинке (и нажать [Add]):
    image
  • в случае линукса обойтись 1й строкой ssh -D 3128 -i /путь/к/ключу root@айпи_сервера -p22, вместо root указать юзера, которого сделали для прокси, если сделали.
  • Следом в системе или в браузе указать проксю
    image

Радоваться тому, что траффик зашифрован до VPS и далее спокойно идет до цели и это работает во всех случаях, а ныть можно будет, когда всех обяжут пускать ssh траффик через главный сервер прокуратуры.

+2
+3 –1
avost ,  

А где повод для радости-то? Закон о незаконности вашего способа уже есть.

0
edogs ,  
Не совсем так. VPN не запрещены, запрещены сервисы для обхода блокировок. Автор статьи описал один способ обхода блокировок, автор комментария второй способ обхода блокировок. В контексте закона они равноценны.
0
+1 –1
avost ,  

Не совсем так. Способ автора не является сервисом и не запрещён текущим законодательством совсем.
Способ из комментария предлагает использовать именно запрещённый сервис и при выявлении подлежит блокировке.

+2
darkslave ,  
Не соглашусь, nikitasius предлагает использовать ssh туннель до своего vds/vps, на котором запущен прокси (тот же squid). По факту о вашем закрытом прокси знает только хостер и провайдер vds. Ваш же провайдер видит только шифрованный ssh траффик — а чем вы там занимаетесь ему неизвестно. Пока что закона об ограничении ssh нет, и надеюсь не будет.
+1
nikitasius ,  

Запущенный прокси НЕ нужен. Это просто туннель до сервера.
При использовании SOCK5 все запросы улетают через сервер на нужные ресурсы. Никакого лишнего софта.


user -> {ssh} -> VPS -> TCP/IP {worldwide}


будь то сайты или онлайн игры.

+2
edogs ,  
> Способ из комментария предлагает использовать именно запрещённый сервис
Не-а, еще раз — vpn не запрещены.
Запрещено оказывать услуги vpn если не блокируются нужные сайты, но автор комментария услуги не предлагает оказывать, он предлагает использовать это «лично для себя».
–2
avost ,  

Так автора комментария и не будут запрещать. Заблокируют тот впн, который предоставляет ему эту услугу. Всё в точном соответствии.

0
SergeyUstinov ,  
Если найдут. :)))
Количество VPN соединений не очень маленькое.
+3
mayorovp ,  

Так он предлагает же не чужой VPN искать, а VDS арендовать.

–3
avost ,  

Сомневаюсь, что вы сможете доказать разницу прокурору. Или роскомпозору. Но можно да, тешить себя и такой мыслью.

–2
+1 –3
nikitasius ,  

А что мешает сказать, что это твои вирусы коннекты поднимают?
Ейбогу… соображалка-то где?

+3
Hardcoin ,  

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

0
+1 –1
avost ,  

Кому, простите, сказать? — дяденька прокурор, снимите с моего сервера блокировку, это не я там впном на "запрещённые" сайты ходил, это мои вирусы туда что-то сливали… — и прокурор, такой, — а, ну раз вирусы, то это меняет дело, снимаем блокировку, спасибо, что сказали!
Ей богу, соображалка-то где?

+1
ximaera ,  

Просто поверьте на слово тем, кто читал закон: это будет работать.

0
+1 –1
alek0585 ,  
0
+1 –1
JerleShannara ,  
Тут работает принцип неуловимого джо, который неуловим потому, что никому нафиг не нужен.
+3
+4 –1
edogs ,   * (был изменён)
Заблокируют тот впн, который предоставляет ему эту услугу.
Он не предлагает покупать ВПН который «окажет ему услугу», он предлагает сделать свой ВПН и использовать его лично для себя, а не оказывать услуги кому-то.

Оказание услуг третьим лицам и личное пользование — сильно разные вещи, в том числе и юридически.
0
+3 –3
avost ,  

Вы полагаете, вы сможете это доказать? А действительно сможете? Расскажите Дмитрию Богатову как доказать, что это не он был тем экстремистом, за которого его закрыли. Серых мразей не смутило даже то, что "экстремист" действовал в то время, когда Богатов уже сидел в тюрьме. Прочтите его интервью. "Там" никому не интересно ничего ни юридически ни, даже, то, что некоторые вещи невозможно сделать физически. Поэтому Богатова обвиняют в экстремизме, который он "совершал" сидя в тюрьме. Поэтому Серебренникова обвиняют в том, что он не ставил спектакль, не смотря на то, что его посмотрели тысячи людей и даже в момент обвинения он шёл в театрах. Поэтому парализованного чувака в инвалидной коляске обвиняют в разбойном нападении и завладении мотороллером. Поэтому в крови сбитого насмерть шестилетнего ребёнка находят дозу алкоголя, срубающую с ног взрослого мужика… В общем, удачи вам!

+3
Renaissance ,  
К сожалению, «системные» настройки прокси, которые в Windows реализованы через Internet Explorer, не умеют «Proxy DNS when using SOCKS v5» и будут слать DNS запросы через DNS прописанный в системе.

В итоге получается, что работать это будет только в Mozilla Firefox (потому что он умеет слать запросы DNS через прокси) и в ПО где предусмотрены такие настройки.

Google Chrome и его производные, а также любое ПО использующее системные настройки прокси Windows будут слать запросы через DNS роутера-провайдера.

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

GoodbyeDPI и ReQrypt в моем случае не работают.
+1
ValdikSS ,  
Так настройте себе DNSCrypt.
0
Renaissance ,  
DNSCrypt настроен на роутере.
Но при таком раскладе теряется доступ ко внутренним сервисам провайдера.
+1
SagePtr ,  
Внутренние сервисы через hosts прописать, если их не так много
0
Bonio ,  
Так настройте dnsmasq.
0
Renaissance ,  
Проблема в том, что я не знаю адресации сервисов провайдера, а он мне такую информацию не предоставит.

Есть вариант выловить всё это дело вручную, но я до него ещё не дошел.
0
Bonio ,  
Я думал, у вас локальные адреса с локальными же доменами, вроде sitename.local.
А если их там считанные единицы и вы их все знаете, то можно так же в dnsmasq указать, через какой dns сервер разрешать конкретное имя.
0
Renaissance ,  
К сожалению, нет, .local не используется.
Про настройку dnsmasq я в курсе, спасибо.

У прошлого провайдера всё было проще в этом плане, а вот текущий добавил сложностей.

По крайней мере, в своём браузере у меня блокировок нет, спасибо ValdikSS за это.
0
ivan386 ,  

Можно у провайдера спросить список доменов локальных сервисов (возможно на форуме он уже есть) и скриптом вогнать в hosts.

0
Renaissance ,  
На форуме нет, провайдер не даёт такой информации (и я его понимаю прекрасно), уже пробовал.
0
skobkin ,  
Я, если честно, не прекрасно понимаю провайдера. Можно, например, пользоваться сторонними (Google, Яндекс, HE, etc) DNS-серверами и хотеть подключаться к сервисам провайдера. Предоставить список доменов доступным клиентам мешает скорее лень.
–1
Geograph ,  
Минусы способа:
— падение скорости интернета
— ограничения трафика у хостинга за 3 бакса.
+2
nikitasius ,  

Вам, с дивана, виднее. 100 Мбит и анлим траффик, и все за 3 евро.

0
Geograph ,  
Да, с дивана хороший обзор.
100 Мбит на сервере, не равно 100 Мбит на локальном ПК + увеличение пинга.
Особенно, если VPS не из твоей страны (не все живут в России).
+2
vconst ,  
Зато туннели могут работать на любом устройстве и любой системе, все вообще стандартная функция ос даже на мобильных.
+3
nikitasius ,  

Правильные ДЦ имеют правильные маршруты, так что если до VPS 40мс (40мс это между москвой и францией или германией), а до западного сайта 60мс, то в итоге будет 50мс :)
Я одно время держал "публичный гейт" (sock5) для игроков eveonline, так как из России до Исландии было дольше, чем из России до германии и из германии до исландии. Некоторые получили -30мс (минус 30мс к пингу) + у них "обрывов не было" при такой игре.


Теперь про 100Мбит — на сервере гарантированно 100 Мбит (реально 104 на 100 тарифе), следом имеет важность канал провайдера (юзера) в европу. И если он говно, то прямой ли коннент или через сервер — одни яйца.


Пример сервера — VPS1 от OVH. Я использую из в пакете public cloud, а конкретно этот мелкий ВПС для частных прокси для друзей и как нода TOX.

0
NickyX3 ,  
Поставьте Proxifier, он умеет заворачивать в любой SOCKS5 сервер ЛЮБОЙ трафик прозрачно на уровне TCP/IP.
0
mikluha ,  
Блокируют-то веб (http/https).
0
ivan386 ,  

Помоему скачать и запустить прграмму легче чем ваш вариант. Да и много дешевле.

0
nikitasius ,  
Я не спорю, просто тут решение из проверенных вариантов, которые используются в повседневке годами (от проброса порта к себе, до прокси на определенную страну через виртуалку в ней же).

Он требует вложений, но не требует настройки сервера (если только idle уменьшить, чтобы sshd не рвал коннекты с клиентами, которые долго молчат).
+2
softaria ,  
Да, но эта программа будет работать пока провайдеров не заставят использовать более изощренные способы блокировок. А вариант nikitasius можно отменить лишь вообще запретив ssh.
0
nikitasius ,  

Именно так. А запрет SSH… ну это вообще "приехали".


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


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


Это гораздо более гибкая политика, чем тот же hetzner, запрещающий tor или швейцарцы, которые против irc, tor и любый проксей.

0
klirichek ,  

Да ну, это слишком узкое применение.
Лучше уж sshuttle — он по крайней мере весь трафик заворачивает одной командой, а не только из браузера.

0
nikitasius ,  

Узкое — если sock5 только в firefox использовать.


Если на уровне системы — тогда глобальное.

0
Lsh ,  
VPS за 3 бакса

Где взять? Какие там ограничения на место/трафик? Там дают root права на систему и можно доустановить что потребуется? Спасибо!
0
sticks ,  
Как вариант мониторить предложения на https://lowendbox.com/.
0
ValdikSS ,  
0
nikitasius ,  

https://www.ovh.com/fr/vps/vps-ssd.xml


полный доступ, любая система (для винды дороже есессно).

0
bgBrother ,  
Можно через QEMU вручную накатить любой «пробный» Windows абсолютно бесплатно:
Инструкция №1
Инструкция №2

Во время установки надо сидеть в графическом интерфейсе через VNC Server, прокинутый в QEMU. В ином случае, весь диск пойдёт под раздел С.

Так же в инструкции одна команда может не заработать. У меня работало с командой:
qemu-system-x86_64 -machine accel=kvm -cdrom windows_install.iso -boot d windows.img -m 16000
+1
bgBrother ,   * (был изменён)
$1.3+ firstbyte.ru
$3.9+ gmhost.com.ua (лично использовал, всё понравилось)
0
nikitasius ,  

Тариф за бакс — отлично для ssh!

0
mike_y_k ,  
Спасибо за статью. Будем собирать арсенал.
+3
Digriz ,  
Заработало отменно с -4, автору глубочайший респект.
Закину свои мысли по поводу «запуска как сервис» — в Win это можно сделать проще, через планировщик.
Ставим задание «при старте машины запускать от имени аккаунта SYSTEM», прописываем путь к программе с нужными ключами, PROFIT!
XML для импорта
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2017-08-11T22:54:06.3052904</Date>
    <Author>Habrahabr</Author>
  </RegistrationInfo>
  <Triggers>
    <BootTrigger>
      <Enabled>true</Enabled>
    </BootTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-18</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>false</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>true</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
    <Priority>7</Priority>
    <RestartOnFailure>
      <Interval>PT1M</Interval>
      <Count>3</Count>
    </RestartOnFailure>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>"goodbyedpi.exe"</Command>
      <Arguments>-4</Arguments>
    </Exec>
  </Actions>
</Task>
0
mayorovp ,  

А останавливать такой сервис предполагается перезагрузкой? :-)

0
Digriz ,  
Зачем, достаточно просто задание остановить.
0
AcidVenom ,  
Есть еще NSSM, с ним полноценная служба получится.
+1
Reeze ,  
Какие методы могут начать применять провайдеры для обхода данной программы (общими чертами)?
Насколько будет просто их будет обходить обновлениями?
Гонка вооружений или в один момент могут глобально что-то придумать?
+12
vsb ,   * (был изменён)
Насколько я понимаю ситуацию: провайдерам плевать с высокой колокольни на то, что вы обходите блокировки. У них стоит задача — заблокировать сайты из списка. Выполнение задачи проверяет специальное ПО «Ревизор». Соответственно всё, что надо провайдерам — делать Ревизора счастливым. Они закупают ПО и железо у каких-то поставщиков, которые опять же должны сделать Ревизора счастливым, а на вас им плевать. Ревизора пишет кто-то по заказу Роскомнадзора. Опять же этому кому-то плевать на вас, ему важно, чтобы Ревизор имитировал обычного пользователя на популярном браузере и ОС без всяких ухищрений.

Резюмируя — думаю этот способ будет работать для большинства провайдеров, если он работает сейчас. Однако во исполнение закона о запрете обхода блокировок скорее всего эту статью удалят, а доступ к софту постараются так или иначе заблокировать. Его прокси-сервер, наверное, тоже. Ну по крайней мере если это будет популярный способ.
0
softaria ,  
Тогда вопрос в том насолько «умным» сделают этого самого Ревизора и как часто станут его обновлять.
–5
+4 –9
eov ,  

Испытываю смешанные чувства по поводу того, что наш умный (DPI-ный) блокиратор обходится утилитой goodbyedpi. Как сотрудник компании расстроен, а как резидент страны и пользователь ru.net рад…
Я по-прежнему убежден, что все ограничительные меры в сфере информационных технологий, придуманные "теми кого в слух не произносим" и продвинутые "народными избранниками" направлены исключительно против простых сограждан. Родина от этого НЕ становится безопаснее....

+22
+23 –1
Reeze ,  
Как сотрудник компании расстроен...


Напомню, что ваша компания перенаправляла (и наверняка делает это и сейчас) доставку SMS для авторизации на устройства третьим лицам.
–17
+5 –22
eov ,  

Не думаю, что это уместно обсуждать здесь и сейчас...

+21
+22 –1
Reeze ,   * (был изменён)
Этот факт просто необходимо выводить под комментариями расстроенных сотрудников МТС.
Вы на другой стороне баррикад, вы работаете там и размещение здесь мнимых рефлексий неуместно.
+4
OnkelTem ,  

Человек к вам со всей душой, за Родину радеет, а вы его так отхлестали! Быгы… :)

+5
+6 –1
eov ,  

Я не буду оправдываться, вполне допуская, что что-то подобное и было и в этом преступлении были задействованы и сотрудники компании. Скажу лишь, что мир не идеален и некоторые вещи (пример) можно делать без участия оператора. Еще скажу, что если «Яровая» заработает, то использовать sms для чего-то серьезного (авторизация, восстановление пароля и др.) станет просто невозможно, потому что к текстам (как в on-line, так и off-line) получит куда более широкий “круг лиц”, как говорится, без «суда и следствия»...

0
skobkin ,  
Да и сейчас СОРМ — «чёрный ящик», который без спросу снимает данные у оператора.
0
eov ,  

+1
Ключевое слово "снимает". А тут еще будет и хранить…
Еще прикол в том, что разработка "решения" для "Яровой" еще в самом начале. На этапе тестирования "решения" к трафику получат доступ дополнительные люди (разработчики).
Сейчас, формально, голосовой СОРМ работает путем установки "на мониторинг" конкретных абонентов на оборудовании оператора, а по "Яровой" потребуется полный слив сигнализации (в ней ходят SMS-ки) и самого голоса.

0
skobkin ,  
Да. Суть в том, что текущий СОРМ — реалтайм, а пакет Яровой-Озерова — доступ в ретроспективе. Причём в текущих формулировках — доступ достаточно широкого круга лиц. Огромная дыра в безопасности и конфиденциальности.
0
Frankenstine ,   * (был изменён)
Интересно получается, я как клиент украинского Приватбанка только сейчас подумал, насколько банк старается уйти от СМСок:
— При «незнакомом» входе в клиентбанк осуществляется вызов на финансовый номер клиента, робобаба просит нажать единичку (перехват кода невозможен)
— При установленном на смартфоне клиенте приложении Приват24, подтверждение «серьёзных» операций делается через приложение (просто нажать кнопку подтверждения, никакого кода вводить не нужно)

Осталось придумать что-то с 3D-Secure, где пока ещё передаётся, если не ошибаюсь, код СМСкой (а может уже тоже через приложение — нет телефона под рукой проверить).
0
+2 –2
skobkin ,   * (был изменён)
Не очень понимаю, чего вы хотите от eov. Я правильно понимаю, что он и все остальные сотрудники МТС должны были написать заявление об увольнении по собственному желанию после того случая?
А почему тогда они не должны этого делать при каждом мелком нарушении прав абонентов многие годы назад? А где они тогда будут искать работу, если все разом уволятся? Или уволиться должен был только eov? Если так, то почему только он? И почему он теряет право «расстраиваться», что решение компании не работает с точки зрения сотрудника (это проффесионализм) и радоваться этому же с точки зрения прав человека (это гражданская позиция)?

Вы так всё это пишете как будто он — депутат, который эти законы разрабатывает.

// Да, вы, конечно, можете и на Нюрнбергский процесс сослаться. Вот только это с натяжкой будет работать если eov сам занят блокировками в своей компании.
–1
+3 –4
eov ,  

Спасибо, я уже все понял… Это была просто попытка остановить офтоп обсуждение…
Еще бы напомнил бы правила Хабра:


Путать сайт с жалобной книгой
Если у вас проблемы с сотовым оператором, с провайдером интернета или хостинга, или с чем-то ещё, всегда можно связаться со службой поддержки нужного вам ресурса. Или с компетентными органами. Но не следует использовать «Хабр» как рупор, дабы рассказать всем о постигшей вас ситуации.

Оскорблять других пользователей, не следить за эмоциями
Мат, оскорбления, переходы на личности, эвфемизмы, троллинг — хорошие способы быстро и надежно сменить текущий статус аккаунта на ReadOnly.
0
Dmitry_5 ,  

Это надо пометить тегом 'хранить вечно'

0
akzhan ,  

можно пруф, я что-то пропустил.

+1
erlyvideo ,  
о чем речь?
+2
Antelle ,  

Не расстраивайтесь :) Задача компании заработать бабки, а не заблочить. Закон, он такой: надо — сделали; можно не делать, пользователи довольны, роскомпозор не бесится — всем пофиг.

+4
+8 –4
akzhan ,   * (был изменён)

Знаете, многие немцы абсолютно так же оправдывались насчет Освенцима.


Пока это просто аналогия...

0
kromm ,  
Замечательная статья, спасибо!
Одно грустно, что это все привязка к конкретному ПК. Вот бы все это на роутер утащить.

У себя пока решил проблему так: микротик отлавливает входящие пакеты с переадресацией на заглушку провайдера, добавляет IP в отдельный список, после чего уже все IP из этого списка через policy-based routing маршрутизируются в поднятый там же vpn. В итоге при первом заходе на сайт вылазит заглушка (которую тот же микротик подменяет на свою), последующие уже идут через vpn.

Ваш вариант на микротике, видимо, не реализовать, а на чем-нибудь посерьезнее, вроде openWRT, может и получится.
0
Furriest ,  
А не будет наглостью попросить описать решение на микротике поподробнее, для повторения? Я недостаточно знаю эту платформу для реализации первой половины задачи (отловить ответы от заглушки и на этом основании сделать таблицу для PBR), а решение по описанию красивое.
0
kromm ,  
Без проблем, правда на отдельную статью это решение, по моему мнению, не тянет, а для комментария слишком длинное, поэтому набросал примерный алгоритм тут
+2
ValdikSS ,  
zapret работает на роутерах под OpenWRT.
0
IGHOR ,  
Еще HTTP клиент может вместо CRLF присылать LF, что тоже должно корректно обрабатываться сервером.
0
ValdikSS ,  
Это рекомендация, ее не придерживаются еще большее число веб-серверов, чем несколько пробелов в первой строке запроса.
0
Akuma ,  
А вообще на каких веб-серверах тестировали?
Поидее нужны всего три: Apache, nginx, IIS, может быть lighttpd. Остальные встречаются или крайне редко или используются только при разработке.
+1
mayorovp ,  

А куда пропали Tomcat, а также сервера встроенные в node.js, go и другие популярные языки?


PS IIS не парсит заголовки HTTP, этим занимается HTTP.SYS

0
Akuma ,  
Да, про ноду что-то я и забыл. Хотя ее часто ставят за nginx, но не знаю будет ли это играть какую-то роль.

На счет go и «других попурярных языков», не хочу никого обидеть, но в процентном соотношении их использование в интернете стремится к нулю: https://news.netcraft.com/archives/category/web-server-survey/ или https://trends.builtwith.com/web-server
Поправьте если ошибаюсь.

Поддерживать все и вся, я думаю, у автора не получится, да и не нужно это, думаю оно и так будет работать.
0
IGHOR ,  

Как знать без статистики? Такие пакеты даже iOS отправляет из некоторых сервисов.

+2
ukt ,   * (был изменён)
Отличная статья. Сразу почему то вспомнился Марк Руссинович.
0
weirded ,   * (был изменён)

[удалил]

0
saag ,  
На мой взгляд не хватает варианта для мобильных устройств…
0
ValdikSS ,  
Телефоны ограничивают свободу, не давая пользователю права root. Обоим программам они потребовались бы, будь они переделаны для телефонов. Это можно обойти через VPN API, но все же, на iOS и Windows Phone нельзя установить программы не из магазина программ штатными средствами, а в магазин такое вряд ли пропустят.
–4
+2 –6
vconst ,  
Подавляющее количество телефонов — андроид, а там никаких проблем с root. Другое дело, что там проще пользоваться обычным VPN.
–1
vconst ,  
Минусующие могут объясню свою точку зрения?

У меня Mi5, он на андроид, у меня есть рут (хотя он в данном случае не нужен) и я пользуюсь своим собственным ВПН, потому что предлагаемое решение на телефоне не работает и работать не может.
+1
S-trace ,  
Ну тут уж вы точно не правы.

Утром нашёл эту статью, протестировал на ПК, потом попытался на телефоне — получил ошибку.
Пересобрал ядро и boot.img, прошил — команды отработали, проверил — всё работает.
Написал скрипт init.d, положил куда надо, перезагрузил смарт — изменения перезагрузку пережили.
Вытащил этот скрипт со смарта в device tree, пересобрал прошивку, прошил полностью — работает.

Так что со всей ответственностью могу заявить — этот способ на Android смартфоне в принципе работоспособен. Если лично у вас не работает — претензии к производителю.
0
vconst ,  
Ну тогда это автор не прав, потому что он выше говорит о том, почему его способ не для телефонов. И пересборка ядра прошивки — это, мягко говоря, не самый тривиальный способ. ВПН на порядок проще и надёжнее.
0
skobkin ,  
Вы как обладатель смартфона Xiaomi должны знать, что производители уже давно противятся получению root и разблокировке загрузчиков на устройствах. На многих устройствах единственно доступный способ достигнуть получения прав root — использование эксплоитов. Что никак не гарантирует, что на ваш смартфон не будет занесено вредоносное ПО.
0
vconst ,  
Мой Mi5 пришлось разблокировать через сайт сяоми, это заняло пару дней и с тех пор никаких проблем, никаких эксплоитов.
0
skobkin ,   * (был изменён)
Вы же в курсе, что Xiaomi могут НЕ РАЗРЕШИТЬ разблокировку? Я вам сейчас могут провести небольшую аналогию между конституционным правом и согласованием митингов, и покупкой устройства и просьбой получить root.

Это не говоря о том, что их европейская утилита, например, на моём Mi5S нормально не заработала — пришлось использовать китайскую версию.
0
vconst ,  
Начнем сначала.

Если пользоваться стандартными туннелями типа впн — то никакой рут не нужен, от слова «вообще». В большинстве случаев достаточно вообще стандартного функционала, встроенного прямо в систему. Надо только подключиться к серверу, лучше к своему собственному. Это не так сложно, как пытаться перекомпилировать ядро прошивки телефона. Это будет работать на любой системе, независимо от провайдера и прочего.
0
skobkin ,  
Понятное дело. Но это создаёт необходимость купить VPN/VPS.
Кстати, выше я вам ответил совсем не на то (мой косяк — отвлекался пока читал его). Так что предмет спора отсутствует.
0
vconst ,  
Тут уже вопрос — что важнее, ставить эту утилиту, которая будет работать только в винде и не под всеми провайдерами, или получать гарантию работы на любой системе, но покупать впн/впс.

Если человек не умеет или не знает где/как поднять/найти впн-сервер, он будет пользоваться этой утилитой и разбираться, как ее заставить работать под его провайдером. Если умеет и знает — ему эта утилита не нужна.
+1
skobkin ,  
Если человек знает и умеет — он будет пользоваться тем инструментом, который ему лучше подходит. Не уверен, что стоит обобщать.
+2
vconst ,  
Тоже верно. Я решил пользоваться своим впн, ибо один сервер для всех устройств, независимо от провайдера, плюс — защита трафика в публичных сетях типа мосметро, макдак, гостиницы и тд тп.
+1
kSx ,  
С получением root, может, и никаких проблем, но, например, банковский клиент отказывается работать на рутованном телефоне. И не только он.
0
jryj ,  
Это уже давно обходится. Гугли — Magisk.
0
SegaZero ,   * (был изменён)
На iOS можно, если собрать самому со своим провижн профилем, который доступен фор фри. Так что можно попробовать. Любой маковод сможет собрать и накатить на девайс из сорцов. Для других можно настроить сборку в travis. Тогда можно будет форкнуть реп и вписать туда teamId от личного аккаунта
0
Alexufo ,  
opera vpn есть в маркетах гугла и апла
+1
vconst ,  
Только по новому закону — подобные программы должны будут сами себя кастрировать, или их самих заблокируют.
0
frees2 ,  
У меня создалось впечатление ( не профессиональное, ибо не знаю сетей), что DPI таки стоят не только у провайдеров, какие то узлы, пути прохождения меняются. Тестировал только ReQrypt.
Напрягает отключение ipv6.
+1
ValdikSS ,  
Поддержки IPv6 нет в ReQrypt потому, что когда он писался, IPv6 был еще не везде, и автор его просто проигнорировал. Ее обязательно добавят. В GoodbyeDPI тоже пока нет, тоже добавлю.
0
ks0 ,  
А почему апач на 127.0.0.1 при запущенной программе тоже отваливается? Куда копать?
0
ValdikSS ,  
Не знаю, посмотрю.
0
DCNick3 ,  
Похоже, что у dom.ru не работает (проверял с -1 -a в Internet Explorer)
+1
ValdikSS ,  
У Дом.Ру еще и DNS подменяется и перенаправляется. Используйте GoodbyeDPI в связке с DNSCrypt. Это должно быть написано в результатах Blockcheck.
0
DCNick3 ,  
Да, с DNSCrypt завелось с -1, спасибо
0
bgBrother ,  
Спасибо, всё заработало с DNSCrypt+ReQrypt.

Lanet, Украина. Блокирует по IP+подменяет DNS.
Провайдер выдает только IPv4 и блокирует, видимо, только IPv4.

По этому ранее был доступ через IPv6 over IPv4 тунель. Яндекс, КиноПоиск и другие (кто имел АААА запись) открывались сразу же, но не ВКонтакте. Для него был FriGate.
0
pha ,   * (был изменён)
ValdikSS
У Zapret'a есть способ без DNSCrypt — игнорить липовые ответы от domru.
iptables
iptables -t raw -C PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff164|" --algo bm -j DROP --from 40 --to 300 ||
iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff164|" --algo bm -j DROP --from 40 --to 300
iptables -t raw -C PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000064|" --algo bm -j DROP --from 40 --to 300 ||
iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000064|" --algo bm -j DROP --from 40 --to 300
iptables -t raw -C PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff16e|" --algo bm -j DROP --from 40 --to 300 ||
iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff16e|" --algo bm -j DROP --from 40 --to 300
iptables -t raw -C PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000110|" --algo bm -j DROP --from 40 --to 300 ||
iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000110|" --algo bm -j DROP --from 40 --to 300


А тут есть способ сделать также в микротиках.
0
dolcom ,  
Весьма интересная статья: открыла мне глаза на то, как блокируется доступ к сайтам. Ранее не задумывался. Естественно, после прочтения побежал испытывать представленные в статье утилитки: Blockcheck'ом выяснил, что провайдер блокирует доступ по IP, соответственно, скачал попытался скачать ReQrypt. Так как сайт reqrypt.org заблокирован, утилитка работать не будет, если верить схеме работы и её описанию. В итоге, reqrypt скачал через прокси. Запустил и вуаля — не работает. Решил проверить GoodbyeDPI на деле. Запустил, попробовал открыть незаблокированный сайт и посмотреть заголовки: заголовки не видоизменены (проверял chrom'ом). Вердикт: утилиты более не эффективны (по крайней мере для обхода блокировок провайдера Telenet)
0
ValdikSS ,  
Сервер ReQrypt находится на другом IP-адресе, не связанным с сайтом, он не заблокирован. Приложите полный вывод Blockcheck, чтобы делать какие-то выводы.
0
eov ,  

Я так вижу, что блокировка по IP выполняется мелкими операторами, которые не могут себе позволить потратиться на DPI. Мой домашний провайдер точно блочит по IP. Они сами сказали, когда я переписывался с поддержкой после того, как стал недоступен Хабр и Гик (их IP адреса тоже на какое-то время попали в DNS одного ресурса из списка РКН).

0
Blogoslov ,  

Статья — бомба. Автору огромный респект (жаль, что нет возможности плюсануть пару плюсиков в карму) за техническое разъяснение тонкостей работы DPI.
Всегда интересно было узнать, а как там все блокируется. Оказывается, что много подводных камней в работе DPI и на самом деле это все технические недочеты, на программном уровне, который можно устранить новой прошивкой. Все эти неточности с парсерами и разбивками пакетов — ведь это тоже можно предусмотреть, но тк это провайдерское оборудование, то чуется все это не скоро исправится и можно пользоваться этим обходным путем достаточно долго.

+11
+12 –1
TerraV ,  
Политические проблемы невозможно решить техническими средствами. Я без всяких оговорок восхищен проделанной работой, но это решение из серии неуловимый Джо. Если им будут пользоваться полтора человека, да пусть себе. Если решение пойдет в массы, то изменить конфигурацию DPI не такая большая проблема. На данный момент единственный надежный способ обхода блокировок — это трактор.
0
+2 –2
ivan386 ,   * (был изменён)

Цензура распространяется потихоньку и на другие страны. Это очень удобный инструмент для политиков. С ней надо бороться.

+4
TerraV ,  
Я имею возможность купить козу, но не имею желания. Я имею желание купить автомобиль но не имею возможности. Давайте все-таки смотреть на мир трезво, это продлевает жизнь. Сейчас бороться в России с цензурой это все равно что бороться с ветряными мельницами. Но даже не смотря на бессмыслицу я уважаю таких людей. А вы лично к ним относитесь? В скольки политических акциях поучаствовали за последние 3 года? А то призывы призывами а дел как правило нет.
0
ivan386 ,  

Я техническими и просветительскими методами борюсь с цензурой.

+6
TerraV ,  
Извините, но это не борьба. Это адаптация. С точки зрения здравого смысла одна из наиболее выигрышных индивидуальных стратегий.
0
ivan386 ,  

Технические решения противостоят цензуре здесь и сейчас. Приведите примеры эффективности ваших методов.

+3
+4 –1
TerraV ,  
Технические решения позволяют уживаться с цензурой, так как именно вас она «как бы» не касается. Мой метод — трактор. И я очень доволен его эффективностью.
0
ivan386 ,   * (был изменён)

Я естественно спрашивал про трактор. Это можно по вашему назвать борьбой с цензурой?

+4
TerraV ,  
Я вроде бы довольно ясно сформулировал отношение к борьбе с цензурой в России. Трактор это не способ борьбы, это способ обхода блокировок. Я понимаю что это никак не влияет на ситуацию, но мне приятно осознавать что теперь я ни единым рублем не поддерживаю Роскомнадзор.
–2
+1 –3
ivan386 ,   * (был изменён)
Но даже не смотря на бессмыслицу я уважаю таких людей. А вы лично к ним относитесь? В скольки политических акциях поучаствовали за последние 3 года?

Какие акции? Они более эффективны?

0
+1 –1
fukkit ,  
Статья хорошая, автор молодец. Описанные способы подойдут для багтрекера и тех задания на доработку соответствующих кривых решений. Возможности для попила темы автор увеличил нехило, если ему ещё не доплачивают разработчики «защиты», то имхо уже пора начинать.
+1
ivan386 ,   * (был изменён)

Этим способам 100 лет в обед и не исправили: Изучаем deep packet inspection у RETN 2013г.

0
+1 –1
fukkit ,  
Дело не в возрасте способов, а в грамотном пиаре на профильном ресурсе.

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

В общем случае, считаю детальное техническое обсуждение подобных вещей в паблике — вредным, а людей, таковые заводящие — недальновидными ССЗБ. Ну или дальновидными, смотря за кого играют.
0
S-trace ,  
iptables -A FORWARD -p tcp --sport 443 -m u32 --u32 "0x0=0x45000028 && 0x4=0x10000" -m comment --comment "Rostelecom HTTPS" -j DROP


Для настройки оконечного устройства заменить FORWARD на INPUT
0
ValdikSS ,  
У вас плохое правило, с ним могут перестать работать некоторые сайты, которые не выставляют бит «Don't Fragment» (хотя, правда, именно в этом случае это маловероятно).
Нужно проверять и TCP Identification, и TCP.RST = 1, и только в первых нескольких пакетах в TCP-сессии.
У меня так:
iptables -A FORWARD -p tcp --sport 443 -m connbytes --connbytes-dir reply --connbytes-mode packets --connbytes 1:3 -m u32 --u32 "0x4=0x10000 && 0x1E&0xFFFF=0x5004" -m comment --comment "Rostelecom HTTPS" -j DROP
0
S-trace ,  
Спасибо, буду теперь знать!
0
rd_nino ,  
Возможно я туплю, но я запустил эту программу, попробовал — да, работает. Оставил работающей и у меня прекратила обновляться страница хабра. :) Выключил — хабр открывается, включил — не открывается.
Но в любом случае — автору программы спасибо! Это решение лучше, чем остальные. (по крайней мере для меня).
0
ValdikSS ,  
Предоставьте больше информации: как конкретно не открывается, выдает какую-то ошибку, или бесконечно долго загружается?
0
rd_nino ,  
Смотрю страницу этой статьи в FireFox.
Запускаю программу со следующими параметрами (ключи -4 -a).
Block passive: 1, Fragment HTTP: 0, Fragment HTTPS: 0, hoSt: 1, Host no space: 1, Additional space: 1

Нажимаю в браузере обновить страницу — идёт бесконечная загрузка и всё… Дольше 2 минут ждать не стал.
Выключаю программу, ещё раз нажимаю «обновить страницу» — всё ОК. Страница грузится.
0
+1 –1
Alexeyslav ,  
в FireFox — ctrl+shift+k и открыть вкладку «сеть» там можно увидеть процесс загрузки страницы и выяснить на чем стопорится.
0
inakrin ,  
А в Китае тоже работает?
0
ValdikSS ,  
Сомневаюсь.
0
+1 –1
zumpel ,  
Подскажите пожалуйста, как запустить под win7 эту программу, я новичок в этом деле. Скачать то я ее скачал, а дальше не вижу exe-шник или bat-ник. Я так понимаю набор этих файлов надо каким-то образом «собрать»? Или подскажите ссылочку как это сделать, на сайте github я не разобрался, к сожалению…
+1
ValdikSS ,  
Вы скачали исходники. Скомпилированная версия скачивается из раздела releases.
0
+1 –1
zumpel ,  
Спасибо!
0
pha ,  
Тут даже аддон для firefox кто-то делал с частью функционала (про host и пробел).
0
zumpel ,  
Хотел бы поинтересоваться, проверил своего провайдера (билайн) программой Blockchek, выдал результат:
[!] Результат:
[] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.

Что это означает «из реестра»?
0
ValdikSS ,  
Ваш провайдер полностью блокирует доступ к HTTPS-сайтам, которые внесены в реестр заблокированных сайтов.
0
zumpel ,  
понял, спасибо
0
GreatWizard ,  
Для таких случаев есть возможность обхода?
0
ValdikSS ,  
ReQrypt.
0
Tomok ,  

Если сам ip-адрес не заблокирован, то можно попробовать зайти на https://ip-адрес/ и передать нужные заголовки для сайта, например, плагином для firefox Header Tool правилом:


@108.174.10.14
Host:www.linkedin.com
Referer:https://www.linkedin.com

Для удобства, можно придумать себе любой домен и намапить его на адрес заблокированного ресурса в hosts и отредактировать правило header tool'а.

0
ValdikSS ,  
Это будет работать только в том случае, если на IP-адресе только один домен, и веб-сервер настроен так, что сайт доступен с любым Host.
0
Tomok ,  

А адреса cloudflare именно так настроены? Ведь с одного их адреса можно получить разные сайты, которые там хостятся, меняя host.

0
+1 –1
ivan386 ,  

Протестировал CloudFlare используя proxy.pac.


function FindProxyForURL( url, host)
{
 if (host == "blocked.example")
  return "https allowed.example;";
 else
  return "DIRECT";
}

Способ работает если целевой домен и домен прикрытия записаны в одном сертификате. Иначе ошибка 403.


Такой способ использовал Signal:
Мобильное приложение Signal обходит государственную блокировку, пропуская трафик через Google App Engine


Как понятно из иллюстрации внизу, схема предусматривает использование промежуточной «крыши» — это сервер фронтенда на промежуточном веб-сервисе. Для такой «крыши» используется легальный посторонний домен. Для этого подходят домены различных облачных сервисов, которые пропускают трафик. Самый надёжный — это домен Google.
image
Схема обхода государственной цензуры через крышевание доменов, из научной работы 2015 года
0
ivan386 ,   * (был изменён)

Алгоритм действий такой.


  1. Заходим на sslchecker
  2. Вводим заблокированный домен
  3. В поле SAN выбираем рабочий не заблокированный домен
  4. Проверяем выбранный домен(должен открываться по https)
  5. Подставляем домены в proxy.pac скрипт соответственно

function FindProxyForURL(url, host)
{
 if (host == "[заблокированный домен]" && shExpMatch(url, "http:*"))
  return "HTTPS [не блокируемый домен];";
 else
  return "DIRECT";
}

Данный скрипт сработает для адреса http://[заблокированный домен]

0
edogs ,  
http://eais.rkn.gov.ru/
0
ivan386 ,  
+1
i_told_you_so ,  
Фокус с iptables не сработал. Наверное, мой провайдер закрывает соединение на удалённом хосте.

Но зато у меня сработало разбиение «GET» на два пакета, например «G» и «ET». Пропатчил Firefox:

в файле nsSocketTransport2.cpp заменяем
    int32_t n = PR_Write(fd, buf, count);
на
    int32_t n;
    if( count>4 && buf[0] == 'G' && buf[1] == 'E' && buf[2] == 'T' && buf[3] == ' ')
    {
    	n = PR_Write(fd, buf, 1);
    	if( n == 1 ) {
    		int32_t n1 = PR_Write(fd, buf+1, count-1);
    		if(n1 == count-1) n += n1;
    		else n=n1;
    	}
    } else {
    	n = PR_Write(fd, buf, count);
    }
+1
mayorovp ,   * (был изменён)

Э… какая-то у вас странная проверка на n1 стоит.


Вот так правильнее:


if (n1 < 0) n = n1;
else n += n1;

И еще надо отключить алгоритм Нейгла на всякий случай, а то драйвер TCP может додуматься склеить пакеты обратно.

0
mayorovp ,  

UPD: хотя при отключенном HTTP pipelining алгоритм Нейгла можно не отключать.

0
ivan386 ,  

А я то думаю почему первый пакет отправляется отдельно а остальные склеиваются. Интересно как эту опцию отключить?

+1
ivan386 ,  

Сам спросил и сам ответил: TCP_NODELAY

+1
mayorovp ,   * (был изменён)

https://linux.die.net/man/2/setsockopt
https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms740476(v=vs.85).aspx


см. параметр TCP_NODELAY


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

0
zumpel ,  
Все работает, спасибо, у меня правда только с параметром: -3 или -4
–2
akzhan ,  

ValdikSS, вы на чем это все компилируете?


Код вообще не рабочий, вы попробуйте его сбилдить с clang.


https://github.com/basil00/reqrypt/issues/4

0
ValdikSS ,  
Вам уже ответили в issue, что gcc это симлинк на clang на macOS.
–1
akzhan ,   * (был изменён)

то есть, вы считаете, что некорректный код, который можно скомпилировать GCC, типа ОК?


нормальный код должен компилироваться и clang, как минимум.


Но вам решать.


P.S.: прочел ваш ответ в issue, все ок.

0
ValdikSS ,  
Я не разработчик ReQrypt. Код корректный, он использует массивы динамической длины, что поддерживается только в GCC.
+1
mayorovp ,  

В стандарте C99 VLA присутствуют, так что код совершенно корректен. То, что его не компилирует clang — это проблема clang. Ну и еще ваша :-)

–1
akzhan ,  
  1. В стандарте C11 VLA уже вынесены из списка обязательных возможностей.
  2. Clang поддерживает VLA.
  3. VLAIS не поддерживаются и никогда не будут поддерживаться стандартом С.

но в любом случае авторы планируют избавиться от кода, несоответствующего стандарту.

0
MonkAlex ,  
Попытался завести zapret на linux mint, но я нуб-нубом и что-то получаю не то:
systemctl start zapret
Failed to start zapret.service: Unit zapret.service not found.
Откуда должен был взяться сервис?
–2
+1 –3
fukkit ,  
Подобный класс ошибок начинает распутываться с /etc/rc*, ну или маны почитать можно, если религия позволяет.
0
Renaissance ,  
Юнит нужно сгенерировать вручную, описано в разделе «Пример установки -> ubuntu 16,debian 8».
0
zumpel ,  
еще раз хочу вас поблагодарить за эту программку, дело в том, что запуская ее, интерент у меня стал работать гораздо шустрее и отзывчивее (серфинг, открытие одновременно нескольких вкладок в браузере, скачка, снизились даже пинги в wot!). не знаю с чем это связанно, но думаю что у провайдера (билайн) стоят какие то тормозные «фильтра», что непосредственно и влияет на скорость работы инета
0
TriAn ,  

Спасибо за интересное исследование. Но у меня осталась пара вопросов после прочтения материала:


  1. Как вы "фрагментируете" https?
  2. В статье вообще не освещены механизмы работы DPI с https трафиком. На сколько я понимаю без того, чтобы в DPI был установлен валидный (с точки зрения браузера) сертификат, организовать глубокую инспекцию невозможно, и значит нужно блокировать весь https по IP. Тогда опять же в каких случаях ваше ПО помогает обойти DPI для https?
0
TriAn ,  
Отдельный вопрос в том, как вообще получить такой доверенный сертификат, который позволяет выдавать сертификаты на любые веб ресурсы. Мне кажется, что производителю DPI в таком случае нужно очень тесно дружить с разработчиками ОС и браузеров.
0
bgBrother ,  
Отдельный вопрос в том, как вообще получить такой доверенный сертификат, который позволяет выдавать сертификаты на любые веб ресурсы.
Нужно быть доверенным центром сертификации (Certification authority, CA). Не самое трудное.

производителю DPI в таком случае нужно очень тесно дружить с разработчиками ОС и браузеров
Смею предположить, что производителю DPI никогда не позволят использовать корневой сертификат для дешифрации трафика. Сертификат скорее всего отзовут. Подобное было в Китайском Фаерволе (ссылку найти не смог, но есть вот это)
0
TriAn ,  

Да, все верно. Но мне кажется, что достаточно проблематично стать таким CA и выдавать сертификаты на любые домены, чтобы при этом сертификат такого CA не заблокировал, например, Google в своём браузере. Производитель браузера может затем и надавить на root CA подписавший такой сертификат. Думаю root CA под угрозой блокировки своего сертификата быстренько отзовет сертификат выданный для CA поставщика DPI решений.

0
ivan386 ,  

DPI вычитывает Server Name Indication. Он идёт открытым текстом. Так что сертификат не нужен.

0
TriAn ,  

Спасибо! Не думал, что SNI идёт открытым текстом. Хотя это логично было бы предположить.

+1
sumanai ,  
В TSL 1.3 его предлагают зашифровать, но когда он ещё придёт.
0
ivan386 ,  

На сколько я понял будет два серфиката. Один общий а второй конкретного сайта. Общий будет также открыто запрашиватся. А сертификат сайта будет запрашиватся под шифрованием.

0
TriAn ,  

Что-то не нашел в драфте RFC упоминание о шифрованном SNI. Только лишь в случае 0RTT-Data, а он работает только в случае переиспользование предыдущей уже установленной сессии. Так как SNI это часть Client Hello, то что-то я не представляю как его можно зашифровать до обмена ключами.

0
ivan386 ,  

Есть обсуждение: Encrypted SNI

0
TriAn ,   * (был изменён)
Мне кажется, что это предложение не пройдет: слишком многое надо делать для того, чтобы защитить адрес узла для обращения. SNI введен для того, чтобы на одном IP можно было обслуживать несколько виртуальных серверов с разными доменными именами. Т.е. SNI позволяет установить шифрованное соединение не IP<->IP а IP<->DomainService, что хорошо соответсвует сегодняшней практике использования сервисов в интернете. Если нужен тоннель в стиле IP<->IP то для этого лучше подойдут решения типа VPN. Городить TLS поверх VPN мне кажется никто не будет, что косвенно подтверждается тем, что за 2,5 года с момента возникновения обсуждения Encrypted SNI в текущем драфте нет никакого намека на предложенный вариант.
0
TriAn ,  
>защитить адрес узла для обращения.
Т.е. защитить доменное имя узла
0
ivan386 ,  

А чего там много делать то? После того как под шифрованием получил всё необходимое можно устанавливать прямое соединение по 0-RTT. Он то уже будет.

0
TriAn ,   * (был изменён)
Насколько я понял предложенное в обсуждении, это установление tls тоннеля с dns узлом поверх tls тоннеля с узлом идентифицируемым ip адресом. Мне кажется что с точки зрения библиотеки tls это много работы. Плюс много работы в том, чтобы подумать соответствую архитектуру системы: сертификатов на ip адреса я не видел.

А в том, что вы предлагаете есть серьезная проблема: 0-rtt используется для восстановления уже установленной сессии. Т.е. когда доверенность узла установлена. В вашем случае, совершенно непонятно с каким узлом было установлено изначальное соединение. Если следовать вашей логике, то это будет сервер, обслуживающий виртуальные сервера возможно даже с абсолютно разными доменами. В случае провайдера виртуального хостинга это будут все сайты его клиентов находящиеся на одной машине. Мне лично абсолютно не хочется доверять всем этим сайтам.
0
ivan386 ,  

Где вы там про DNS то увидели? Может говорилось что ему тоже нужна защита но разрабатывать её нужно отдельно. Уже сейчас есть DNSCrypt и DNSSEC.


А Encrypted SNI работает так:


  1. При первом соединении клиент получит сертификат выданный на IP.
  2. Открывается tls тунель в котором он запрашивает уже целевой сертификат сервера.
  3. Во втором tls после обмена всеми ключами разрывает соединение и подключается напрямую по 0-rtt.
0
TriAn ,   * (был изменён)
Под фразой «dns узел» имелось в виду узел, идентифицируемый при помощи системы доменных имён, сиречь — dns.

Пункт 2 вашего описания рождает множество вопросов, например: что такое tls тоннель, каким образом он реализуется, как связан с текущим положением tls в стеке tcp/ip, как он будет инкапсулироваться в текущие форматы пакетов или сообщений? Думаю, что аккуратный вариант ответов на эти вопросы (в рамках существующих технологий) очень трудоёмок, а реализация в конкретных библиотеках ещё более затратна.

Да плюс такая реализация кроме привнесения инфраструктурных проблем ещё и добавит как минимум один раундтрип при установке соединения. А текущий драфт как раз направлен в том числе на минимизацию их количества. И я считаю, что это движение в правильном направлении.
–1
ivan386 ,  

Эта схема только для первого соединения в котором нужно получить ключи и проверить сертификаты. Дальше используется только 0-RTT.


Я чувствую что мы не понимаем друг друга.


Вы вкурсе что такое HTTPS вообще?


HTTPS (аббр. от англ. HyperText Transfer Protocol Secure) — расширение протокола HTTP для поддержки шифрования в целях повышения безопасности. Данные в протоколе HTTPS передаются поверх криптографических протоколов SSL или TLS. В отличие от HTTP с TCP-портом 80, для HTTPS по умолчанию используется TCP-порт 443.

TLS (англ. Transport Layer Security — защищённый транспортный узел), как и его предшественник SSL (англ. Secure Sockets Layer — транспорт защищённых сокетов) — криптографические протоколы, обеспечивающие защищённую передачу данных между узлами в сети Интернет[1]. TLS и SSL используют асимметричное шифрование для аутентификации, симметричное шифрование для конфиденциальности и коды аутентичности сообщений для сохранения целостности сообщений.

Эту схему только уже с неизбежным двойным шифрованием можно реализовать и сейчас посавив [stunnel]
(https://en.wikipedia.org/wiki/Stunnel) и http прокси на сервер и используя proxy.pac на клиенте.


function FindProxyForURL(url, host)
{
 if (shExpMatch(url, "https:*"))
  return "HTTPS "+dnsResolve(host)+"; DIRECT;";
else
  return "DIRECT;";
}
0
sumanai ,  
Так как SNI это часть Client Hello, то что-то я не представляю как его можно зашифровать до обмена ключами.

Не вникал в детали предложения в стандарте, но лично я бы ввёл это вместе с обязательностью PFS, всё равно там есть дополнительный шаг обмена ключами.
0
TriAn ,  
PFS скорее относится к ключам симметричного шифрования для уже установленного соединения.
А SNI как и получение сертификата (читай публичного ключа) для соответсвующего запрашиваемого имени — в установлении шифрованного соединения.
0
bgBrother ,  
без того, чтобы в DPI был установлен валидный (с точки зрения браузера) сертификат, организовать глубокую инспекцию невозможно, и значит нужно блокировать весь https по IP.

Скорее всего возможно и по домену заблокировать.
HTTPS пакет к vk.com в ПО Charles
image
0
ValdikSS ,  
Как вы «фрагментируете» https?
Так же, как и HTTP — изменением TCP Window Size.
В статье вообще не освещены механизмы работы DPI с https трафиком.
Большинство DPI просто проверяют значение TLS SNI, и блокируют по домену.
0
TriAn ,  
Так же, как и HTTP — изменением TCP Window Size.

Т.е. если я правильно понимаю, ПО фрагментирует не HTTP заголовок (которой идёт уже зашифрованным), а сообщение TLS Client Hello?

0
ValdikSS ,  
Да.
0
zxsavage ,  
В Казахстане (Казахтелеком) работает. Частично правда.
-p -f 2 -e 40 открывается часть сайтов (flickr.com, например).
Не открывается к примеру archive.org, в т.ч. с параметрами "-1" и "-1 -a" — превышено время ожидания.
0
Lomuel ,  
Словил bluescreen через пару секунд после запуска goodbyedpi.exe -1 -a
WIndows 8.1
Консоль была открыта от пользователя.

В чем может быть проблема?
0
ValdikSS ,  
В драйвере WinDivert. Попробуйте последнюю версию 1.2, во всех трех вариантах: MSVC, WDDK, MINGW. Просто подмените sys и dll-файлы. Каждый раз нужно перезагружаться. Заведите issue по результатам, пожалуйста.
0
alkoro ,  
Как я понял, эта программа бесполезна, если в браузере используется прокси-подключение. Что будет, если эту программу запустить прямо на прокси-сервере с win2008r2+TMG2010? Не будет ли проблем или конфликтов драйвера Windivert и TMG?

Ну а дома всё прекрасно «работает» (РТ) — даже с единственным ключом "-p". Пока отлаживал, обнаружил дополнительную блокировку по DNS. Если использовать открытые DNS, то до вывода заглушки дело даже не доходит — host not found. Так что DNScrypt+GoodByDPI.
0
ValdikSS ,  
Попробуйте, не знаю, будет ли работать.
0
alkoro ,  
Отчитываюсь, добравшись до раб. места… Никаких заморочек с Win2008R2/TMG2010, установил, запустил, никаких перезапусков служб, работает сразу. Провайдер (не общероссийский) выдаёт местную заглушку, но помогает просто ключ -p без модификаций заголовков. Также необходим DNSCrypt, видимо пров. тем самым просто облегчает себе работу.
зы. Осталось потестировать на нагрузке, когда юзеры толпой навалятся на проксик.
0
alkoro ,   * (был изменён)
… Регистрируется единичный warning в журале, в момент запуска службы (используется nssm для пуска GoodByeDPI)
Event
Source: Microsoft Forefront TMG Control
EventID: 23474
Forefront TMG обнаружил фильтры WFP, которые могут стать причиной конфликтов политик на сервере XXXX. Следующие поставщики могут предоставлять фильтры, конфликтующие с политикой межсетевого экрана Forefront TMG: провайдер(ы) без имени.


В остальном отклонений в работе не выявлено.
0
Bonio ,  
ReQrypt у меня не заработал, как я не пытался.
Интересно, а его можно перенести с компьютера на роутер или на отдельный сервер? Чтобы работало не на единственном компьютере, а на всех устройствах в сети.
0
ValdikSS ,  
Какой у вас провайдер и роутер? У вас ReQrypt может не заработать только в том случае, если провайдер блокирует по IP-адресу в том числе и входящий трафик, или у вас симметричный NAT. Подразумевается, что у вас с DNS все в порядке, а если не в порядке, то вы используете DNSCrypt.
0
Bonio ,  
Провайдер Билайн, ip адреса серверов ReQrypt пигнуются, DNSCrypt использую. Роутер TP-Link TL-WR1043N с OpenWRT прошивкой.
А про тип NAT не скажу, не знаю, но он есть, провайдер выдает только серые ip. Как это можно узнать?
0
ValdikSS ,  
Вы же включили ReQrypt в веб-интерфейсе?
0
Bonio ,   * (был изменён)
Конечно же. И настройки по всякому изменял. Не работает. Проверял на рутрекере. Может я чего-то не учел? Программу же просто запустить надо и все?
0
ValdikSS ,  
Да, достаточно просто запустить.
Скачайте stuntman, запустите так:
stunclient --mode behavior stun.ekiga.net

И приложите вывод.
0
Bonio ,  
stunclient --mode behavior stun.ekiga.net
$ stunclient --mode behavior stun.ekiga.net
Binding test: success
Local address: 172.16.xx.xx:25479
Mapped address: xx.xx.xx.xx:25479
Behavior test: success
Nat behavior: Endpoint Independent Mapping
0
ValdikSS ,  
А если TTL увеличить? Поставьте 5, например.
0
Bonio ,  
Я разобрался. reqrypt работает, но только на заблокированных http url, например, вот на этом. Заблокированные https сайты, такие, как рутрекер, и заблокированные по ip, такие, как bt.t-ru.org, не открываются и с reqrypt.
Это нормально?
0
ValdikSS ,  
Возможно, ваш провайдер блокирует и входящий трафик с заблокированных IP-адресов, увы.
0
Bonio ,  
Да, не весело. Спасибо за помощь вам.
А вообще часто провайдеры так делают, в смысле блокируют не только исходящий трафик, но и входящий?
0
ValdikSS ,  
Я пробовал на 6 разных провайдерах, и все блокировали только исходящий.
0
Bonio ,  
А вот, что интересно, ip рутрекера у меня не заблокирован, на 195.82.146.214 я могу зайти браузером. То есть там не по ip блокировка, а по имени. И все равно он через reqrypt не открывается.
0
rogoz ,  
В копилку глухих блокировок. Это на роутере помогает полностью:
iptables
-A PREROUTING --ipv4 -i ppp0 -p tcp -m tcp --tcp-flags RST RST --sport 443 -m ttl --ttl-eq=62 -j DROP
-A PREROUTING --ipv4 -i ppp0 -p tcp -m tcp --tcp-flags RST RST --sport 443 -m ttl --ttl-eq=63 -j DROP
-A PREROUTING --ipv4 -i ppp0 -p tcp -m tcp --tcp-flags RST RST --sport 80 -m ttl --ttl-eq=62 -j DROP
-A PREROUTING --ipv4 -i ppp0 -p tcp -m tcp --tcp-flags RST RST --sport 80 -m ttl --ttl-eq=63 -j DROP
-A PREROUTING --ipv4 -i ppp0 -p tcp -m tcp --sport 80 -m ttl --ttl-eq=62 -m length --length 384 -j DROP
-A PREROUTING --ipv4 -i ppp0 -p tcp -m tcp --sport 80 -m ttl --ttl-eq=63 -m length --length 384 -j DROP

кроме *.t-ru.org.
0
Bonio ,  
Наврал я вам, что ip пингуются, прошу прощения. Но, похоже, что они они просто на icmp запросы не отвечают, судя по tracert. C запущенным reqrypt никакие сайты не открываются.
–1
sumanai ,  
Эх, на XP не запускается.
0
coalesce ,  
Кинозал.тв не открывается, хотя рутрекер заработал
0
Infactum ,   * (был изменён)
К сожалению не работает. Проверено со всеми вариантами опций. В том числе в связке с DNSCrypt.
blockcheck
[O] Тестируем обход DPI
Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на pbooru.com
[✓] Сайт открывается
Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на pbooru.com
[✓] Сайт открывается
Пробуем способ «перенос строки перед GET» на pbooru.com
[] Сайт не открывается
Пробуем способ «необычный порядок заголовков» на pbooru.com
[] Сайт не открывается
Пробуем способ «фрагментирование заголовка» на pbooru.com
[] Сайт не открывается
Пробуем способ «точка в конце домена» на pbooru.com
[✓] Сайт открывается
Пробуем способ «дополнительный пробел после GET» на pbooru.com
[] Сайт не открывается
Пробуем способ «заголовок hoSt вместо Host» на pbooru.com
[] Сайт не открывается
Пробуем способ «перенос строки в заголовках в UNIX-стиле» на pbooru.com
[✓] Сайт открывается
Пробуем способ «табуляция в конце домена» на pbooru.com
[] Сайт не открывается
Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «перенос строки перед GET» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «необычный порядок заголовков» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «фрагментирование заголовка» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «точка в конце домена» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «дополнительный пробел после GET» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «заголовок hoSt вместо Host» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «перенос строки в заголовках в UNIX-стиле» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «табуляция в конце домена» на rutracker.org
[] Ошибка: timeout('timed out',)

[] Ваш провайдер подменяет DNS-записи, но не перенаправляет сторонние IPv4 DNS-серверы на свой.
Вам поможет смена DNS, например, на Яндекс.DNS 77.88.8.8 или Google DNS 8.8.8.8 и 8.8.4.4.
[] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
[] У вашего провайдера «обычный» DPI. Вам поможет HTTPS/Socks прокси, VPN или Tor.

Blockcheck тоже ошибается. Записи DNS подменяются независимо от того, какой DNS установлен. То есть без DNSCrypt никак.
0
ValdikSS ,  
Приложите весь вывод Blockcheck.
0
Infactum ,  
Blockcheck
BlockCheck v0.0.9.5
Для получения корректных результатов используйте DNS-сервер провайдера и отключите средства обхода блокировок.

Проверка работоспособности IPv6: IPv6 недоступен.
IP: 176.226.179.xxx, провайдер: Intersvyaz-2 JSC Route/ Интерсвязь

[O] Тестируем IPv4 DNS
Через системный DNS: ['5.178.68.100', '78.29.1.40', '78.29.1.40', '78.29.1.40', '78.29.1.40', '78.29.1.40']
Через Google DNS: ['104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '184.173.146.95', '195.8.215.136', '195.82.146.214', '5.178.68.100']
Через Google API: ['104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '184.173.146.95', '195.8.215.136', '195.82.146.214', '5.178.68.100']
Несуществующий DNS не вернул адресов (это не ошибка)
[] DNS-записи подменяются
[✓] DNS не перенаправляется

[O] Тестируем HTTP (по настоящим IP-адресам сайтов)
Открываем http://furry.booru.org/
[] Сайт не открывается, пробуем через прокси
[✓] Сайт открывается через прокси
Открываем http://a.putinhuylo.com/
[✓] Сайт открывается
Открываем http://pbooru.com/
[✓] Сайт открывается
Открываем http://pbooru.com/index.php?page=post&s=view&id=303026
[] Сайт не открывается, пробуем через прокси
[✓] Сайт открывается через прокси
Открываем http://furry.booru.org/index.php?page=post&s=view&id=111173
[] Сайт не открывается, пробуем через прокси
[✓] Сайт открывается через прокси
Открываем http://rutracker.org/forum/index.php
[] Сайт не открывается, пробуем через прокси
[✓] Сайт открывается через прокси

[O] Тестируем HTTPS
Открываем https://www.dailymotion.com/
[] Сайт не открывается
Открываем https://lolibooru.moe/
[] Сайт не открывается
Открываем https://e621.net/
[] Сайт не открывается
Открываем https://rutracker.org/forum/index.php
[] Сайт не открывается

[O] Тестируем обход DPI
Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на pbooru.com
[✓] Сайт открывается
Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на pbooru.com
[✓] Сайт открывается
Пробуем способ «перенос строки перед GET» на pbooru.com
[] Сайт не открывается
Пробуем способ «необычный порядок заголовков» на pbooru.com
[] Сайт не открывается
Пробуем способ «фрагментирование заголовка» на pbooru.com
[] Сайт не открывается
Пробуем способ «точка в конце домена» на pbooru.com
[✓] Сайт открывается
Пробуем способ «дополнительный пробел после GET» на pbooru.com
[] Сайт не открывается
Пробуем способ «заголовок hoSt вместо Host» на pbooru.com
[] Сайт не открывается
Пробуем способ «перенос строки в заголовках в UNIX-стиле» на pbooru.com
[✓] Сайт открывается
Пробуем способ «табуляция в конце домена» на pbooru.com
[] Сайт не открывается
Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «перенос строки перед GET» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «необычный порядок заголовков» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «фрагментирование заголовка» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «точка в конце домена» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «дополнительный пробел после GET» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «заголовок hoSt вместо Host» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «перенос строки в заголовках в UNIX-стиле» на rutracker.org
[] Ошибка: timeout('timed out',)
Пробуем способ «табуляция в конце домена» на rutracker.org
[] Ошибка: timeout('timed out',)

[!] Результат:
[] Ваш провайдер подменяет DNS-записи, но не перенаправляет сторонние IPv4 DNS-серверы на свой.
Вам поможет смена DNS, например, на Яндекс.DNS 77.88.8.8 или Google DNS 8.8.8.8 и 8.8.4.4.
[] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
[] У вашего провайдера «обычный» DPI. Вам поможет HTTPS/Socks прокси, VPN или Tor.

Проверил более внимательно на разных сайтах из списка antizapret. Кое-где для http все же работает.
0
ValdikSS ,  
Я не вижу ошибки в Blockcheck. Ваш провайдер не подменяет DNS-запросы, если использовать сторонний DNS-сервер. DNSCrypt вам не обязателен. И, похоже, провайдер блокирует часть сайтов по IP-адресу.
–7
Vizavi ,  
Как мило, ANTI DPI от человека стоящего за сервисом по сливу юзеров теоррнетов — iknowwhatyoudownload.
Просто хрестоматийное лицемерие.
+5
ValdikSS ,  
Я не причастен к iknowwhatyoudownload, не знаю, почему вы думаете иначе.
Но, в любом случае, если что-то технически можно сделать, сервис для этого появится, и ни в чьих силах не будет убить все форки и зеркала.
0
ExplosiveZ ,  
Такой сервис любой школьник сделать может, клеветать плохо.
0
ivan386 ,  

Между прочим отличный сервис. Я там смотрю что смотрят соседи. По имени файла нахожу на btdig.com. Тем более будет быстрее с локалки.

0
deustech ,  
А есть альтернативы модулю u32 для iptables?
на большинстве томато роутерах на arm с ним сложности:

x_tables: ip_tables: u32.0 match: invalid size 2032 (kernel) != (user) 1984
0
ValdikSS ,  
Вероятно, у вас что-то не так с модулями iptables. Обращайтесь к создателю прошивки.
0
u007 ,   * (был изменён)
Можно вот так, но это сугубо в качестве эксперимента

iptables -A INPUT --protocol TCP -i eth0 --sport 80 -m ttl --ttl-eq 62 -j DROP

От меня до провайдерского дпи be101.tf01.Moscow.gldn.net ровно два хопа. Это меньше, чем до любого другого сайта, правда, есть сайты, которые ставят изначальный ttl больше 64, и тут можно перебдеть. Но таких мало.
0
ivan386 ,  
TTL=64 (Linux, Mac, Android, iOS), TTL=128 (Windows).

Это сайты с Windows хостинга. Но врятли у них TTL будет меньше 64.

–3
u007 ,   * (был изменён)
А вообше, я считаю, все эти блокировки только на пользу. Посмотрите, сколько людей повысили свои технические навыки! Потрогали iptables, поковыряли tcp/ip, полистали спецификации. А вы ругаетесь, мол, роскомпозор, бешеный принтер… Всё к лучшему!
+1
ivan386 ,  

Ещё списочек годных сайтов с картинками собирает.

0
u007 ,   * (был изменён)
Если бы не BlockCheck, так бы и не знал, сколько интересного в сети водится. Хорошую утилиту Valdik написал ;)

Кстати, кто подскажет, отчего так: набираю rutracker.org./ а firefox лишнюю точку… убирает. С другими сайтами такого нет. Непонятно.
+1
ivan386 ,  

Это сам рутрекер перенаправляет на форум используя полный адрес без точки. Если её добавить после перенаправления то она останется.

0
u007 ,  
А, вспомнил. Спасибо. 301 же. Когда-то давно сабж отдал 301-й редирект, а браузер его закешировал… Теперь все запросы с точкой исправляются сразу, даже до отправки в сеть.
+1
DarkByte ,  
А то! Низкие зарплаты тоже к лучшему, меньше будут ездить отдыхать — меньше возможностей покалечить себя. Кушать меньше тоже к лучшему, британские учёные из журнала woman ведь доказали, что голодание — это полезно для здоровья. Как же плохие дороги не забыть — ведь по ним не только враг не проедет, на своих иномарках, так ещё и гонять не будут — тоже к лучшему! Нужно во всём искать хорошее!
+1
u007 ,   * (был изменён)
Как же плохие дороги не забыть
Дороги… Дороги вообще уберём. Меньше машин — больше велосипедистов. Город — людям!
–1
+1 –2
firk ,  

Больше пиара способам обхода блокировок — больше вероятность исправления этих способов. И я не понимаю, чего все так радуются этой статье.
Технически да, интересно, хотя в целом это и так было известно. Программа вида "просто скачай, запусти и работает" — плохо. Хотите сами пользоваться и подольше — лучше пользоваться тихо и не шуметь, и надеяться что у остальных пользователей тоже хватит ума не пиарить данную технологию. Хотите чтобы для всех — тут путь только законодательный есть (да, сложно стать тем кто влияет на законодательство, но всё остальное — вообще бесполезные или даже вредные действия в этом плане).

+3
eov ,  

Сейчас опять скажу не популярную вещь, но я согласен с предыдущим товарищем. Да, мы тоже мониторим различные форумы, в которых пишут что и как у нас можно сломать или как добыть немного бесплатного интернета. И таки-да, мы закрываем дыры и боремся с фродом. Если бы люди просто пользовались бы по-тихому, то мы могли бы и не заметить.


В данном конкретном случае, не думаю, что ПО "Ревизор" научат проверять возможно ли описанным способом обходить блокировки или нет. Соответственно, DPI-и скорее всего дорабатывать не будут (зачем тратить бабки...). Только в случае если будут сформулированы конкретные технические требования к DPI и ВСЕХ операторов заставят купить "решение", ну скажем у Ростеха, тогда — Да.

0
VSOP_juDGe ,  
А что значит обычный dpi? Тесты dpi не открываются, его не обойти никак без прокси?

[!] Результат:
[] Ваш провайдер подменяет HTTPS-сертификат на свой для сайтов из реестра.
[] У вашего провайдера «обычный» DPI. Вам поможет HTTPS/Socks прокси, VPN или Tor.
0
weekens ,  
Для Linux есть аналогичная программа — zapret.

Блин, так из-за этой софтины теперь GitHub закроют.

0
sanrega ,  
Всё запретят. Они будут истерично запрещать всё и вся, что идёт вразрез с их интересами.

Наш девиз непобедим — Запретим и не дадим!