Существует два распространенных типа подключения DPI: пассивный и активный.
Пассивный DPI
Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.Выявляем и блокируем пакеты пассивного DPI
Поддельные пакеты, формируемые DPI, легко обнаружить анализатором трафика, например, Wireshark.Пробуем зайти на заблокированный сайт:
Мы видим, что сначала приходит пакет от DPI, с HTTP-перенаправлением кодом 302, а затем настоящий ответ от сайта. Ответ от сайта расценивается как ретрансмиссия и отбрасывается операционной системой. Браузер переходит по ссылке, указанной в ответе DPI, и мы видим страницу блокировки.
Рассмотрим пакет от DPI подробнее:
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.
Если наш компьютер находится за 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.
Дополнительная полезная информация есть здесь и здесь.
Комментарии (296)
nesselrode
11.08.2017 19:54+5Статья понравилась, автор молодец. Сразу поселилась мысль, что тут содержатся способы обхода блокировок, что запрещено в РФ. Надеюсь роскомнадзор с прихвостнями пройдут мимо
Meklon
11.08.2017 20:02+13Боюсь скоро начнут выпиливать эти публикации. И прошлые тоже. Вариантов нет особо.
omgiafs
11.08.2017 21:56+4Пора выводить часть статей в Tor.
Как у флибусты — зайдешь на «луковый» сайт — полный доступ, зайдёшь на flisland.net — нет доступа к текстам.
Заходят ребята к РосКомНадзора — всё чинно, благородно.
Заходят остальные через Тор — всё как до РосКомНадзоров и регулирований интернета.
arabesc
13.08.2017 02:42Можете оформить статью, как исследование способов фильтрации инжектированных в трафик третьей стороной левых пакетов, своеобразная защита от MitM. В качестве примера взять хост, ошибочно попавший под блокировку.
EvilGenius18
11.08.2017 20:36А, кроме DPI и IP, какие еще типы блокировок существуют?
Провайдеры разве не имеют возможность видеть кто обходит блокировки, а кто нет?vilgeforce
11.08.2017 20:40+7Есть подозрение, что дрючат провов за то, что «ревизор» обходит блокировки, а не продвинутые юзеры
ivan386
11.08.2017 21:39+1Кальмаром ещё блокируют.
ValdikSS Автор
11.08.2017 21:50+3Да, у некоторых провайдеров установлен zapretservice, который представляет собой настроенный Squid.
EvilGenius18
Провайдеры разве не имеют возможность видеть кто обходит блокировки, а кто нет?
Имеют, конечно.
ivan386
11.08.2017 21:54Объясняю. По IP трафик заворачивают на прозрачный прокси а он уже вычитывает url или домен в случае https и блокирует в случае соответствии с правилами. Такой способ используют мелкие провайдеры.
DenimTornado
11.08.2017 21:47Спасибо, интересно. Для Мака подобное есть?
ValdikSS Автор
11.08.2017 21:56+2ReQrypt должен работать и на 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/1DenimTornado
12.08.2017 01:36Не собралось, к сожалению. Оставил issue — https://github.com/basil00/reqrypt/issues/2
ValdikSS Автор
12.08.2017 08:22+1Автор исправил, теперь собирается?
DenimTornado
12.08.2017 10:59Собраться-то собралось, только на новых версиях macOS нет ipfw, его заменили на PF, в итоге пакет превратился в тыкву…
dzhidzhoev
13.08.2017 03:57+1Запилил небольшое расширение ядра для macOS (IP Filter), блокирующее пакеты пассивного DPI Ростелекома.
Можно попробовать переписать фильтры под себя, если необходимо.
https://github.com/dzhidzhoev/AntiRTDPIValdikSS Автор
13.08.2017 13:29Надоело копипастить сравнение «warning.rt.ru» побайтово?
ValdikSS Автор
13.08.2017 13:31Вы, видимо, хотели оптимизировать сравнение вложенными if'ами, но это не нужно: как только не сработает первое правило, сравнение остальных не будет производится, если это логическое «и» (&&).
dzhidzhoev
13.08.2017 14:01В Си ведь нет сокращенного вычисления логических выражений?
UPD: ок, понял, есть.
MonkAlex
11.08.2017 22:09+3Внезапно, просто запустил и работает.
Спасибо.
UPD: я правильно понимаю, что это единственное решение, когда мой трафик не ходит никуда, всмысле в том числе на неизвестные прокси\впн? =)ValdikSS Автор
11.08.2017 22:53+49Клёво. Я и хотел так сделать, чтобы можно было просто запустить, и оно просто заработало.
Считаю, что у нас глобально не хватает хороших программ. Есть идеи, есть технологии, есть исследования, а софт писать разучились, либо просто лень людям. Что ни прокси-сервер или мессенджер, то обязательно на Electron, с chromium и ffmpeg.dll, на 60+ МБ, отъедающий 200+ МБ RAM, и еще нужно, чтобы при нажатии правой кнопки вываливалось меню с пунктами «Back» и «Refresh». И обязательно с рекламой или привязкой ко своим серверам.
Я написал GoodbyeDPI, потому что мне было интересно, и потому что я стараюсь заботиться о людях. Я не пользуюсь Windows, но, тем не менее, эта программа под Windows.
nikitasius
11.08.2017 22:44+1VPS за 3 бакса, проброс порта PuTTy (win)/ssh (linux), Firefox, sock5 прокси, галка «proxy DNS when using SOCK v5».
Все.ValdikSS Автор
11.08.2017 22:45Ну и работать это будет только в браузере. Зачем мне браузер, ведь есть telnet. Я же не браузер смотрю, а интернет!
nikitasius
11.08.2017 23:12+1Работать это будет где угодно :)
Это sock5. И браузер, и игрушки, TCP/IP который приносит радости. Если прописать на уровне системы — то весь системный софт, который умеет "в настройки системы" будет ее юзать.
Конечно, это чуть дольше чем скачать программу, которая будет обходить какие-то частные случаи.
Это всего лишь:
- купить виртуалку за 3 бакса или евро (если дорого, скинуться с 3 друзьями, кто будет сидеть на ней же)
- выбрать установку дебиана в админ панели хостера, сервер можно и не настраивать, ну или минимум добавить юзера для прокси
- скачать PuTTy (windows) и настроить как на картинке (и нажать [Add]):
- в случае линукса обойтись 1й строкой
ssh -D 3128 -i /путь/к/ключу root@айпи_сервера -p22
, вместоroot
указать юзера, которого сделали для прокси, если сделали. - Следом в системе или в браузе указать проксю
Радоваться тому, что траффик зашифрован до VPS и далее спокойно идет до цели и это работает во всех случаях, а ныть можно будет, когда всех обяжут пускать ssh траффик через главный сервер прокуратуры.
avost
12.08.2017 00:59+2А где повод для радости-то? Закон о незаконности вашего способа уже есть.
edogs
12.08.2017 04:00Не совсем так. VPN не запрещены, запрещены сервисы для обхода блокировок. Автор статьи описал один способ обхода блокировок, автор комментария второй способ обхода блокировок. В контексте закона они равноценны.
avost
12.08.2017 11:13Не совсем так. Способ автора не является сервисом и не запрещён текущим законодательством совсем.
Способ из комментария предлагает использовать именно запрещённый сервис и при выявлении подлежит блокировке.darkslave
12.08.2017 12:43+2Не соглашусь, nikitasius предлагает использовать ssh туннель до своего vds/vps, на котором запущен прокси (тот же squid). По факту о вашем закрытом прокси знает только хостер и провайдер vds. Ваш же провайдер видит только шифрованный ssh траффик — а чем вы там занимаетесь ему неизвестно. Пока что закона об ограничении ssh нет, и надеюсь не будет.
nikitasius
12.08.2017 12:54+1Запущенный прокси НЕ нужен. Это просто туннель до сервера.
При использовании SOCK5 все запросы улетают через сервер на нужные ресурсы. Никакого лишнего софта.
user -> {ssh} -> VPS -> TCP/IP {worldwide}
будь то сайты или онлайн игры.
edogs
12.08.2017 13:00+2> Способ из комментария предлагает использовать именно запрещённый сервис
Не-а, еще раз — vpn не запрещены.
Запрещено оказывать услуги vpn если не блокируются нужные сайты, но автор комментария услуги не предлагает оказывать, он предлагает использовать это «лично для себя».avost
12.08.2017 13:20-2Так автора комментария и не будут запрещать. Заблокируют тот впн, который предоставляет ему эту услугу. Всё в точном соответствии.
mayorovp
12.08.2017 14:23+3Так он предлагает же не чужой VPN искать, а VDS арендовать.
avost
12.08.2017 14:30-3Сомневаюсь, что вы сможете доказать разницу прокурору. Или роскомпозору. Но можно да, тешить себя и такой мыслью.
nikitasius
12.08.2017 14:59-2А что мешает сказать, что это твои вирусы коннекты поднимают?
Ейбогу… соображалка-то где?Hardcoin
12.08.2017 16:40+3Сказать — ничего не мешает. Это не я, я просто рядом стоял. На степень виновности это не повлияет (тем более, что самому обходить блокировки пока можно)
avost
12.08.2017 22:12Кому, простите, сказать? — дяденька прокурор, снимите с моего сервера блокировку, это не я там впном на "запрещённые" сайты ходил, это мои вирусы туда что-то сливали… — и прокурор, такой, — а, ну раз вирусы, то это меняет дело, снимаем блокировку, спасибо, что сказали!
Ей богу, соображалка-то где?
alek0585
12.08.2017 17:31edogs
12.08.2017 14:36+3Заблокируют тот впн, который предоставляет ему эту услугу.
Он не предлагает покупать ВПН который «окажет ему услугу», он предлагает сделать свой ВПН и использовать его лично для себя, а не оказывать услуги кому-то.
Оказание услуг третьим лицам и личное пользование — сильно разные вещи, в том числе и юридически.avost
13.08.2017 00:52-1Вы полагаете, вы сможете это доказать? А действительно сможете? Расскажите Дмитрию Богатову как доказать, что это не он был тем экстремистом, за которого его закрыли. Серых мразей не смутило даже то, что "экстремист" действовал в то время, когда Богатов уже сидел в тюрьме. Прочтите его интервью. "Там" никому не интересно ничего ни юридически ни, даже, то, что некоторые вещи невозможно сделать физически. Поэтому Богатова обвиняют в экстремизме, который он "совершал" сидя в тюрьме. Поэтому Серебренникова обвиняют в том, что он не ставил спектакль, не смотря на то, что его посмотрели тысячи людей и даже в момент обвинения он шёл в театрах. Поэтому парализованного чувака в инвалидной коляске обвиняют в разбойном нападении и завладении мотороллером. Поэтому в крови сбитого насмерть шестилетнего ребёнка находят дозу алкоголя, срубающую с ног взрослого мужика… В общем, удачи вам!
Renaissance
12.08.2017 16:00+3К сожалению, «системные» настройки прокси, которые в Windows реализованы через Internet Explorer, не умеют «Proxy DNS when using SOCKS v5» и будут слать DNS запросы через DNS прописанный в системе.
В итоге получается, что работать это будет только в Mozilla Firefox (потому что он умеет слать запросы DNS через прокси) и в ПО где предусмотрены такие настройки.
Google Chrome и его производные, а также любое ПО использующее системные настройки прокси Windows будут слать запросы через DNS роутера-провайдера.
У меня провайдер подменяет DNS запросы, поэтому вся эта связка работает только в Firefox, и мне просто повезло что я использую его как основной и единственный браузер.
GoodbyeDPI и ReQrypt в моем случае не работают.ValdikSS Автор
12.08.2017 17:16+1Так настройте себе DNSCrypt.
Renaissance
12.08.2017 21:14DNSCrypt настроен на роутере.
Но при таком раскладе теряется доступ ко внутренним сервисам провайдера.Bonio
13.08.2017 00:59Так настройте dnsmasq.
Renaissance
13.08.2017 10:53Проблема в том, что я не знаю адресации сервисов провайдера, а он мне такую информацию не предоставит.
Есть вариант выловить всё это дело вручную, но я до него ещё не дошел.Bonio
13.08.2017 11:08Я думал, у вас локальные адреса с локальными же доменами, вроде sitename.local.
А если их там считанные единицы и вы их все знаете, то можно так же в dnsmasq указать, через какой dns сервер разрешать конкретное имя.Renaissance
13.08.2017 11:16К сожалению, нет, .local не используется.
Про настройку dnsmasq я в курсе, спасибо.
У прошлого провайдера всё было проще в этом плане, а вот текущий добавил сложностей.
По крайней мере, в своём браузере у меня блокировок нет, спасибо ValdikSS за это.ivan386
13.08.2017 11:34Можно у провайдера спросить список доменов локальных сервисов (возможно на форуме он уже есть) и скриптом вогнать в hosts.
Renaissance
13.08.2017 11:35На форуме нет, провайдер не даёт такой информации (и я его понимаю прекрасно), уже пробовал.
skobkin
14.08.2017 11:45Я, если честно, не прекрасно понимаю провайдера. Можно, например, пользоваться сторонними (Google, Яндекс, HE, etc) DNS-серверами и хотеть подключаться к сервисам провайдера. Предоставить список доменов доступным клиентам мешает скорее лень.
Geograph
13.08.2017 00:45-1Минусы способа:
— падение скорости интернета
— ограничения трафика у хостинга за 3 бакса.nikitasius
13.08.2017 01:55+2Вам, с дивана, виднее. 100 Мбит и анлим траффик, и все за 3 евро.
Geograph
13.08.2017 09:49Да, с дивана хороший обзор.
100 Мбит на сервере, не равно 100 Мбит на локальном ПК + увеличение пинга.
Особенно, если VPS не из твоей страны (не все живут в России).vconst
13.08.2017 10:19+2Зато туннели могут работать на любом устройстве и любой системе, все вообще стандартная функция ос даже на мобильных.
nikitasius
13.08.2017 23:21+3Правильные ДЦ имеют правильные маршруты, так что если до VPS 40мс (40мс это между москвой и францией или германией), а до западного сайта 60мс, то в итоге будет 50мс :)
Я одно время держал "публичный гейт" (sock5) для игроков eveonline, так как из России до Исландии было дольше, чем из России до германии и из германии до исландии. Некоторые получили -30мс (минус 30мс к пингу) + у них "обрывов не было" при такой игре.
Теперь про 100Мбит — на сервере гарантированно 100 Мбит (реально 104 на 100 тарифе), следом имеет важность канал провайдера (юзера) в европу. И если он говно, то прямой ли коннент или через сервер — одни яйца.
Пример сервера — VPS1 от OVH. Я использую из в пакете public cloud, а конкретно этот мелкий ВПС для частных прокси для друзей и как нода TOX.
NickyX3
13.08.2017 16:26Поставьте Proxifier, он умеет заворачивать в любой SOCKS5 сервер ЛЮБОЙ трафик прозрачно на уровне TCP/IP.
ivan386
11.08.2017 22:54Помоему скачать и запустить прграмму легче чем ваш вариант. Да и много дешевле.
nikitasius
11.08.2017 22:56Я не спорю, просто тут решение из проверенных вариантов, которые используются в повседневке годами (от проброса порта к себе, до прокси на определенную страну через виртуалку в ней же).
Он требует вложений, но не требует настройки сервера (если только idle уменьшить, чтобы sshd не рвал коннекты с клиентами, которые долго молчат).
softaria
12.08.2017 17:47+2Да, но эта программа будет работать пока провайдеров не заставят использовать более изощренные способы блокировок. А вариант nikitasius можно отменить лишь вообще запретив ssh.
nikitasius
13.08.2017 23:25Именно так. А запрет SSH… ну это вообще "приехали".
Кстати, многие арендуют сервера, следом шарят доступ и получают абузы — в случае публичного сервиса нужно, конечно же, настраивать сервер и лимитировать доступ.
Например такой провайдер как OVH ничего не запрещает ставить, то бишь можно ставить что угодно (реально что угодно), но если активность носит нелегальный характер — будет разбирательство и саспенд.
Это гораздо более гибкая политика, чем тот же hetzner, запрещающий tor или швейцарцы, которые против irc, tor и любый проксей.
klirichek
12.08.2017 08:01Да ну, это слишком узкое применение.
Лучше уж sshuttle — он по крайней мере весь трафик заворачивает одной командой, а не только из браузера.nikitasius
12.08.2017 12:56Узкое — если sock5 только в firefox использовать.
Если на уровне системы — тогда глобальное.
Lsh
14.08.2017 00:13VPS за 3 бакса
Где взять? Какие там ограничения на место/трафик? Там дают root права на систему и можно доустановить что потребуется? Спасибо!nikitasius
14.08.2017 20:51
Digriz
11.08.2017 23:09+3Заработало отменно с -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>
Reeze
12.08.2017 00:00+1Какие методы могут начать применять провайдеры для обхода данной программы (общими чертами)?
Насколько будет просто их будет обходить обновлениями?
Гонка вооружений или в один момент могут глобально что-то придумать?
vsb
12.08.2017 00:15+12Насколько я понимаю ситуацию: провайдерам плевать с высокой колокольни на то, что вы обходите блокировки. У них стоит задача — заблокировать сайты из списка. Выполнение задачи проверяет специальное ПО «Ревизор». Соответственно всё, что надо провайдерам — делать Ревизора счастливым. Они закупают ПО и железо у каких-то поставщиков, которые опять же должны сделать Ревизора счастливым, а на вас им плевать. Ревизора пишет кто-то по заказу Роскомнадзора. Опять же этому кому-то плевать на вас, ему важно, чтобы Ревизор имитировал обычного пользователя на популярном браузере и ОС без всяких ухищрений.
Резюмируя — думаю этот способ будет работать для большинства провайдеров, если он работает сейчас. Однако во исполнение закона о запрете обхода блокировок скорее всего эту статью удалят, а доступ к софту постараются так или иначе заблокировать. Его прокси-сервер, наверное, тоже. Ну по крайней мере если это будет популярный способ.softaria
12.08.2017 17:51Тогда вопрос в том насолько «умным» сделают этого самого Ревизора и как часто станут его обновлять.
eov
12.08.2017 00:06-5Испытываю смешанные чувства по поводу того, что наш умный (DPI-ный) блокиратор обходится утилитой goodbyedpi. Как сотрудник компании расстроен, а как резидент страны и пользователь ru.net рад…
Я по-прежнему убежден, что все ограничительные меры в сфере информационных технологий, придуманные "теми кого в слух не произносим" и продвинутые "народными избранниками" направлены исключительно против простых сограждан. Родина от этого НЕ становится безопаснее....Reeze
12.08.2017 00:10+22Как сотрудник компании расстроен...
Напомню, что ваша компания перенаправляла (и наверняка делает это и сейчас) доставку SMS для авторизации на устройства третьим лицам.
eov
12.08.2017 00:13-17Не думаю, что это уместно обсуждать здесь и сейчас...
Reeze
12.08.2017 00:22+21Этот факт просто необходимо выводить под комментариями расстроенных сотрудников МТС.
Вы на другой стороне баррикад, вы работаете там и размещение здесь мнимых рефлексий неуместно.OnkelTem
12.08.2017 04:04+4Человек к вам со всей душой, за Родину радеет, а вы его так отхлестали! Быгы… :)
eov
12.08.2017 08:49+5Я не буду оправдываться, вполне допуская, что что-то подобное и было и в этом преступлении были задействованы и сотрудники компании. Скажу лишь, что мир не идеален и некоторые вещи (пример) можно делать без участия оператора. Еще скажу, что если «Яровая» заработает, то использовать sms для чего-то серьезного (авторизация, восстановление пароля и др.) станет просто невозможно, потому что к текстам (как в on-line, так и off-line) получит куда более широкий “круг лиц”, как говорится, без «суда и следствия»...
skobkin
14.08.2017 11:58Да и сейчас СОРМ — «чёрный ящик», который без спросу снимает данные у оператора.
eov
14.08.2017 12:19+1
Ключевое слово "снимает". А тут еще будет и хранить…
Еще прикол в том, что разработка "решения" для "Яровой" еще в самом начале. На этапе тестирования "решения" к трафику получат доступ дополнительные люди (разработчики).
Сейчас, формально, голосовой СОРМ работает путем установки "на мониторинг" конкретных абонентов на оборудовании оператора, а по "Яровой" потребуется полный слив сигнализации (в ней ходят SMS-ки) и самого голоса.skobkin
14.08.2017 13:35Да. Суть в том, что текущий СОРМ — реалтайм, а пакет Яровой-Озерова — доступ в ретроспективе. Причём в текущих формулировках — доступ достаточно широкого круга лиц. Огромная дыра в безопасности и конфиденциальности.
skobkin
14.08.2017 12:06-1Не очень понимаю, чего вы хотите от eov. Я правильно понимаю, что он и все остальные сотрудники МТС должны были написать заявление об увольнении по собственному желанию после того случая?
А почему тогда они не должны этого делать при каждом мелком нарушении прав абонентов многие годы назад? А где они тогда будут искать работу, если все разом уволятся? Или уволиться должен был только eov? Если так, то почему только он? И почему он теряет право «расстраиваться», что решение компании не работает с точки зрения сотрудника (это проффесионализм) и радоваться этому же с точки зрения прав человека (это гражданская позиция)?
Вы так всё это пишете как будто он — депутат, который эти законы разрабатывает.
// Да, вы, конечно, можете и на Нюрнбергский процесс сослаться. Вот только это с натяжкой будет работать если eov сам занят блокировками в своей компании.
eov
13.08.2017 11:54-1Спасибо, я уже все понял… Это была просто попытка остановить офтоп обсуждение…
Еще бы напомнил бы правила Хабра:
Путать сайт с жалобной книгой
Если у вас проблемы с сотовым оператором, с провайдером интернета или хостинга, или с чем-то ещё, всегда можно связаться со службой поддержки нужного вам ресурса. Или с компетентными органами. Но не следует использовать «Хабр» как рупор, дабы рассказать всем о постигшей вас ситуации.
Оскорблять других пользователей, не следить за эмоциями
Мат, оскорбления, переходы на личности, эвфемизмы, троллинг — хорошие способы быстро и надежно сменить текущий статус аккаунта на ReadOnly.
Antelle
12.08.2017 01:15+2Не расстраивайтесь :) Задача компании заработать бабки, а не заблочить. Закон, он такой: надо — сделали; можно не делать, пользователи довольны, роскомпозор не бесится — всем пофиг.
akzhan
12.08.2017 03:32+4Знаете, многие немцы абсолютно так же оправдывались насчет Освенцима.
Пока это просто аналогия...
kromm
12.08.2017 02:20Замечательная статья, спасибо!
Одно грустно, что это все привязка к конкретному ПК. Вот бы все это на роутер утащить.
У себя пока решил проблему так: микротик отлавливает входящие пакеты с переадресацией на заглушку провайдера, добавляет IP в отдельный список, после чего уже все IP из этого списка через policy-based routing маршрутизируются в поднятый там же vpn. В итоге при первом заходе на сайт вылазит заглушка (которую тот же микротик подменяет на свою), последующие уже идут через vpn.
Ваш вариант на микротике, видимо, не реализовать, а на чем-нибудь посерьезнее, вроде openWRT, может и получится.Furriest
12.08.2017 06:35А не будет наглостью попросить описать решение на микротике поподробнее, для повторения? Я недостаточно знаю эту платформу для реализации первой половины задачи (отловить ответы от заглушки и на этом основании сделать таблицу для PBR), а решение по описанию красивое.
kromm
12.08.2017 12:48Без проблем, правда на отдельную статью это решение, по моему мнению, не тянет, а для комментария слишком длинное, поэтому набросал примерный алгоритм тут
IGHOR
12.08.2017 03:27Еще HTTP клиент может вместо CRLF присылать LF, что тоже должно корректно обрабатываться сервером.
ValdikSS Автор
12.08.2017 08:41Это рекомендация, ее не придерживаются еще большее число веб-серверов, чем несколько пробелов в первой строке запроса.
Akuma
12.08.2017 15:06А вообще на каких веб-серверах тестировали?
Поидее нужны всего три: Apache, nginx, IIS, может быть lighttpd. Остальные встречаются или крайне редко или используются только при разработке.mayorovp
12.08.2017 15:29+1А куда пропали Tomcat, а также сервера встроенные в node.js, go и другие популярные языки?
PS IIS не парсит заголовки HTTP, этим занимается HTTP.SYS
Akuma
12.08.2017 16:33Да, про ноду что-то я и забыл. Хотя ее часто ставят за nginx, но не знаю будет ли это играть какую-то роль.
На счет go и «других попурярных языков», не хочу никого обидеть, но в процентном соотношении их использование в интернете стремится к нулю: https://news.netcraft.com/archives/category/web-server-survey/ или https://trends.builtwith.com/web-server
Поправьте если ошибаюсь.
Поддерживать все и вся, я думаю, у автора не получится, да и не нужно это, думаю оно и так будет работать.
IGHOR
13.08.2017 03:44Как знать без статистики? Такие пакеты даже iOS отправляет из некоторых сервисов.
saag
12.08.2017 08:48На мой взгляд не хватает варианта для мобильных устройств…
ValdikSS Автор
12.08.2017 08:53Телефоны ограничивают свободу, не давая пользователю права root. Обоим программам они потребовались бы, будь они переделаны для телефонов. Это можно обойти через VPN API, но все же, на iOS и Windows Phone нельзя установить программы не из магазина программ штатными средствами, а в магазин такое вряд ли пропустят.
vconst
12.08.2017 09:57-4Подавляющее количество телефонов — андроид, а там никаких проблем с root. Другое дело, что там проще пользоваться обычным VPN.
vconst
12.08.2017 23:58-1Минусующие могут объясню свою точку зрения?
У меня Mi5, он на андроид, у меня есть рут (хотя он в данном случае не нужен) и я пользуюсь своим собственным ВПН, потому что предлагаемое решение на телефоне не работает и работать не может.S-trace
13.08.2017 00:06+1Ну тут уж вы точно не правы.
Утром нашёл эту статью, протестировал на ПК, потом попытался на телефоне — получил ошибку.
Пересобрал ядро и boot.img, прошил — команды отработали, проверил — всё работает.
Написал скрипт init.d, положил куда надо, перезагрузил смарт — изменения перезагрузку пережили.
Вытащил этот скрипт со смарта в device tree, пересобрал прошивку, прошил полностью — работает.
Так что со всей ответственностью могу заявить — этот способ на Android смартфоне в принципе работоспособен. Если лично у вас не работает — претензии к производителю.vconst
13.08.2017 00:33Ну тогда это автор не прав, потому что он выше говорит о том, почему его способ не для телефонов. И пересборка ядра прошивки — это, мягко говоря, не самый тривиальный способ. ВПН на порядок проще и надёжнее.
skobkin
14.08.2017 12:14Вы как обладатель смартфона Xiaomi должны знать, что производители уже давно противятся получению root и разблокировке загрузчиков на устройствах. На многих устройствах единственно доступный способ достигнуть получения прав root — использование эксплоитов. Что никак не гарантирует, что на ваш смартфон не будет занесено вредоносное ПО.
vconst
14.08.2017 13:13Мой Mi5 пришлось разблокировать через сайт сяоми, это заняло пару дней и с тех пор никаких проблем, никаких эксплоитов.
skobkin
14.08.2017 13:31Вы же в курсе, что Xiaomi могут НЕ РАЗРЕШИТЬ разблокировку? Я вам сейчас могут провести небольшую аналогию между конституционным правом и согласованием митингов, и покупкой устройства и просьбой получить root.
Это не говоря о том, что их европейская утилита, например, на моём Mi5S нормально не заработала — пришлось использовать китайскую версию.vconst
14.08.2017 13:39Начнем сначала.
Если пользоваться стандартными туннелями типа впн — то никакой рут не нужен, от слова «вообще». В большинстве случаев достаточно вообще стандартного функционала, встроенного прямо в систему. Надо только подключиться к серверу, лучше к своему собственному. Это не так сложно, как пытаться перекомпилировать ядро прошивки телефона. Это будет работать на любой системе, независимо от провайдера и прочего.skobkin
14.08.2017 18:32Понятное дело. Но это создаёт необходимость купить VPN/VPS.
Кстати, выше я вам ответил совсем не на то (мой косяк — отвлекался пока читал его). Так что предмет спора отсутствует.vconst
14.08.2017 18:35Тут уже вопрос — что важнее, ставить эту утилиту, которая будет работать только в винде и не под всеми провайдерами, или получать гарантию работы на любой системе, но покупать впн/впс.
Если человек не умеет или не знает где/как поднять/найти впн-сервер, он будет пользоваться этой утилитой и разбираться, как ее заставить работать под его провайдером. Если умеет и знает — ему эта утилита не нужна.skobkin
14.08.2017 18:38+1Если человек знает и умеет — он будет пользоваться тем инструментом, который ему лучше подходит. Не уверен, что стоит обобщать.
vconst
14.08.2017 18:41+2Тоже верно. Я решил пользоваться своим впн, ибо один сервер для всех устройств, независимо от провайдера, плюс — защита трафика в публичных сетях типа мосметро, макдак, гостиницы и тд тп.
SegaZero
12.08.2017 21:30На iOS можно, если собрать самому со своим провижн профилем, который доступен фор фри. Так что можно попробовать. Любой маковод сможет собрать и накатить на девайс из сорцов. Для других можно настроить сборку в travis. Тогда можно будет форкнуть реп и вписать туда teamId от личного аккаунта
frees2
12.08.2017 08:52У меня создалось впечатление ( не профессиональное, ибо не знаю сетей), что DPI таки стоят не только у провайдеров, какие то узлы, пути прохождения меняются. Тестировал только ReQrypt.
Напрягает отключение ipv6.ValdikSS Автор
12.08.2017 09:10+1Поддержки IPv6 нет в ReQrypt потому, что когда он писался, IPv6 был еще не везде, и автор его просто проигнорировал. Ее обязательно добавят. В GoodbyeDPI тоже пока нет, тоже добавлю.
DCNick3
12.08.2017 08:58Похоже, что у dom.ru не работает (проверял с -1 -a в Internet Explorer)
ValdikSS Автор
12.08.2017 08:59+1У Дом.Ру еще и DNS подменяется и перенаправляется. Используйте GoodbyeDPI в связке с DNSCrypt. Это должно быть написано в результатах Blockcheck.
bgBrother
12.08.2017 14:27Спасибо, всё заработало с DNSCrypt+ReQrypt.
Lanet, Украина. Блокирует по IP+подменяет DNS.
Провайдер выдает только IPv4 и блокирует, видимо, только IPv4.
По этому ранее был доступ через IPv6 over IPv4 тунель. Яндекс, КиноПоиск и другие (кто имел АААА запись) открывались сразу же, но не ВКонтакте. Для него был FriGate.
pha
13.08.2017 21:53ValdikSS
У Zapret'a есть способ без DNSCrypt — игнорить липовые ответы от domru.
iptablesiptables -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
dolcom
12.08.2017 09:10Весьма интересная статья: открыла мне глаза на то, как блокируется доступ к сайтам. Ранее не задумывался. Естественно, после прочтения побежал испытывать представленные в статье утилитки: Blockcheck'ом выяснил, что провайдер блокирует доступ по IP, соответственно,
скачалпопытался скачать ReQrypt. Так как сайт reqrypt.org заблокирован, утилитка работать не будет, если верить схеме работы и её описанию. В итоге, reqrypt скачал через прокси. Запустил и вуаля — не работает. Решил проверить GoodbyeDPI на деле. Запустил, попробовал открыть незаблокированный сайт и посмотреть заголовки: заголовки не видоизменены (проверял chrom'ом). Вердикт: утилиты более не эффективны (по крайней мере для обхода блокировок провайдера Telenet)ValdikSS Автор
12.08.2017 09:11Сервер ReQrypt находится на другом IP-адресе, не связанным с сайтом, он не заблокирован. Приложите полный вывод Blockcheck, чтобы делать какие-то выводы.
eov
12.08.2017 09:21Я так вижу, что блокировка по IP выполняется мелкими операторами, которые не могут себе позволить потратиться на DPI. Мой домашний провайдер точно блочит по IP. Они сами сказали, когда я переписывался с поддержкой после того, как стал недоступен Хабр и Гик (их IP адреса тоже на какое-то время попали в DNS одного ресурса из списка РКН).
Blogoslov
12.08.2017 09:12Статья — бомба. Автору огромный респект (жаль, что нет возможности плюсануть пару плюсиков в карму) за техническое разъяснение тонкостей работы DPI.
Всегда интересно было узнать, а как там все блокируется. Оказывается, что много подводных камней в работе DPI и на самом деле это все технические недочеты, на программном уровне, который можно устранить новой прошивкой. Все эти неточности с парсерами и разбивками пакетов — ведь это тоже можно предусмотреть, но тк это провайдерское оборудование, то чуется все это не скоро исправится и можно пользоваться этим обходным путем достаточно долго.
TerraV
12.08.2017 10:29+11Политические проблемы невозможно решить техническими средствами. Я без всяких оговорок восхищен проделанной работой, но это решение из серии неуловимый Джо. Если им будут пользоваться полтора человека, да пусть себе. Если решение пойдет в массы, то изменить конфигурацию DPI не такая большая проблема. На данный момент единственный надежный способ обхода блокировок — это трактор.
ivan386
12.08.2017 13:32Цензура распространяется потихоньку и на другие страны. Это очень удобный инструмент для политиков. С ней надо бороться.
TerraV
12.08.2017 13:39+4Я имею возможность купить козу, но не имею желания. Я имею желание купить автомобиль но не имею возможности. Давайте все-таки смотреть на мир трезво, это продлевает жизнь. Сейчас бороться в России с цензурой это все равно что бороться с ветряными мельницами. Но даже не смотря на бессмыслицу я уважаю таких людей. А вы лично к ним относитесь? В скольки политических акциях поучаствовали за последние 3 года? А то призывы призывами а дел как правило нет.
ivan386
12.08.2017 13:48Я техническими и просветительскими методами борюсь с цензурой.
TerraV
12.08.2017 13:51+6Извините, но это не борьба. Это адаптация. С точки зрения здравого смысла одна из наиболее выигрышных индивидуальных стратегий.
ivan386
12.08.2017 16:11Технические решения противостоят цензуре здесь и сейчас. Приведите примеры эффективности ваших методов.
TerraV
12.08.2017 18:13+3Технические решения позволяют уживаться с цензурой, так как именно вас она «как бы» не касается. Мой метод — трактор. И я очень доволен его эффективностью.
ivan386
12.08.2017 18:43Я естественно спрашивал про трактор. Это можно по вашему назвать борьбой с цензурой?
TerraV
12.08.2017 18:54+4Я вроде бы довольно ясно сформулировал отношение к борьбе с цензурой в России. Трактор это не способ борьбы, это способ обхода блокировок. Я понимаю что это никак не влияет на ситуацию, но мне приятно осознавать что теперь я ни единым рублем не поддерживаю Роскомнадзор.
ivan386
12.08.2017 19:40-2Но даже не смотря на бессмыслицу я уважаю таких людей. А вы лично к ним относитесь? В скольки политических акциях поучаствовали за последние 3 года?
Какие акции? Они более эффективны?
fukkit
12.08.2017 11:18Статья хорошая, автор молодец. Описанные способы подойдут для багтрекера и тех задания на доработку соответствующих кривых решений. Возможности для попила темы автор увеличил нехило, если ему ещё не доплачивают разработчики «защиты», то имхо уже пора начинать.
ivan386
12.08.2017 13:41+1Этим способам 100 лет в обед и не исправили: Изучаем deep packet inspection у RETN 2013г.
fukkit
12.08.2017 17:14Дело не в возрасте способов, а в грамотном пиаре на профильном ресурсе.
Плюс всегда найдётся тщеславный хабражитель, который за бесплатно в комментах десяток способов улучшения DPI накидает, а если его в правильное место палочкой ткнуть, ещё и распишет подробно все что требуется.
В общем случае, считаю детальное техническое обсуждение подобных вещей в паблике — вредным, а людей, таковые заводящие — недальновидными ССЗБ. Ну или дальновидными, смотря за кого играют.
S-trace
12.08.2017 11:22iptables -A FORWARD -p tcp --sport 443 -m u32 --u32 "0x0=0x45000028 && 0x4=0x10000" -m comment --comment "Rostelecom HTTPS" -j DROP
Для настройки оконечного устройства заменить FORWARD на INPUTValdikSS Автор
12.08.2017 11:29У вас плохое правило, с ним могут перестать работать некоторые сайты, которые не выставляют бит «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
rd_nino
12.08.2017 11:37Возможно я туплю, но я запустил эту программу, попробовал — да, работает. Оставил работающей и у меня прекратила обновляться страница хабра. :) Выключил — хабр открывается, включил — не открывается.
Но в любом случае — автору программы спасибо! Это решение лучше, чем остальные. (по крайней мере для меня).ValdikSS Автор
12.08.2017 12:46Предоставьте больше информации: как конкретно не открывается, выдает какую-то ошибку, или бесконечно долго загружается?
rd_nino
12.08.2017 21:30Смотрю страницу этой статьи в FireFox.
Запускаю программу со следующими параметрами (ключи -4 -a).
Block passive: 1, Fragment HTTP: 0, Fragment HTTPS: 0, hoSt: 1, Host no space: 1, Additional space: 1
Нажимаю в браузере обновить страницу — идёт бесконечная загрузка и всё… Дольше 2 минут ждать не стал.
Выключаю программу, ещё раз нажимаю «обновить страницу» — всё ОК. Страница грузится.
zumpel
12.08.2017 14:19Подскажите пожалуйста, как запустить под win7 эту программу, я новичок в этом деле. Скачать то я ее скачал, а дальше не вижу exe-шник или bat-ник. Я так понимаю набор этих файлов надо каким-то образом «собрать»? Или подскажите ссылочку как это сделать, на сайте github я не разобрался, к сожалению…
pha
12.08.2017 14:26Тут даже аддон для firefox кто-то делал с частью функционала (про host и пробел).
zumpel
12.08.2017 14:31Хотел бы поинтересоваться, проверил своего провайдера (билайн) программой Blockchek, выдал результат:
[!] Результат:
[] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
Что это означает «из реестра»?ValdikSS Автор
12.08.2017 14:37Ваш провайдер полностью блокирует доступ к HTTPS-сайтам, которые внесены в реестр заблокированных сайтов.
GreatWizard
12.08.2017 18:38Для таких случаев есть возможность обхода?
Tomok
13.08.2017 09:50Если сам ip-адрес не заблокирован, то можно попробовать зайти на https://ip-адрес/ и передать нужные заголовки для сайта, например, плагином для firefox Header Tool правилом:
@108.174.10.14 Host:www.linkedin.com Referer:https://www.linkedin.com
Для удобства, можно придумать себе любой домен и намапить его на адрес заблокированного ресурса в hosts и отредактировать правило header tool'а.
ValdikSS Автор
13.08.2017 09:50Это будет работать только в том случае, если на IP-адресе только один домен, и веб-сервер настроен так, что сайт доступен с любым Host.
Tomok
13.08.2017 12:09А адреса cloudflare именно так настроены? Ведь с одного их адреса можно получить разные сайты, которые там хостятся, меняя host.
ivan386
14.08.2017 00:06-1Протестировал 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.
Схема обхода государственной цензуры через крышевание доменов, из научной работы 2015 годаivan386
14.08.2017 14:31Алгоритм действий такой.
- Заходим на sslchecker
- Вводим заблокированный домен
- В поле SAN выбираем рабочий не заблокированный домен
- Проверяем выбранный домен(должен открываться по https)
- Подставляем домены в proxy.pac скрипт соответственно
function FindProxyForURL(url, host) { if (host == "[заблокированный домен]" && shExpMatch(url, "http:*")) return "HTTPS [не блокируемый домен];"; else return "DIRECT"; }
Данный скрипт сработает для адреса
http://[заблокированный домен]
i_told_you_so
12.08.2017 14:42+1Фокус с 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); }
mayorovp
12.08.2017 14:46Э… какая-то у вас странная проверка на
n1
стоит.
Вот так правильнее:
if (n1 < 0) n = n1; else n += n1;
И еще надо отключить алгоритм Нейгла на всякий случай, а то драйвер TCP может додуматься склеить пакеты обратно.
mayorovp
12.08.2017 14:52UPD: хотя при отключенном HTTP pipelining алгоритм Нейгла можно не отключать.
ivan386
12.08.2017 14:54А я то думаю почему первый пакет отправляется отдельно а остальные склеиваются. Интересно как эту опцию отключить?
mayorovp
12.08.2017 14:57+1https://linux.die.net/man/2/setsockopt
https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms740476(v=vs.85).aspx
см. параметр TCP_NODELAY
Впрочем, если произойдет потеря пакетов — то при повторных попытках доставки они все равно склеятся несмотря ни на какие отключенные алгоритмы, так что это больше костыль чем решение.
akzhan
12.08.2017 15:44-2ValdikSS, вы на чем это все компилируете?
Код вообще не рабочий, вы попробуйте его сбилдить с clang.
ValdikSS Автор
12.08.2017 17:20Вам уже ответили в issue, что gcc это симлинк на clang на macOS.
akzhan
12.08.2017 17:22-1то есть, вы считаете, что некорректный код, который можно скомпилировать GCC, типа ОК?
нормальный код должен компилироваться и clang, как минимум.
Но вам решать.
P.S.: прочел ваш ответ в issue, все ок.
ValdikSS Автор
12.08.2017 17:32Я не разработчик ReQrypt. Код корректный, он использует массивы динамической длины, что поддерживается только в GCC.
mayorovp
12.08.2017 20:01+1В стандарте C99 VLA присутствуют, так что код совершенно корректен. То, что его не компилирует clang — это проблема clang. Ну и еще ваша :-)
akzhan
12.08.2017 22:44-1- В стандарте C11 VLA уже вынесены из списка обязательных возможностей.
- Clang поддерживает VLA.
- VLAIS не поддерживаются и никогда не будут поддерживаться стандартом С.
но в любом случае авторы планируют избавиться от кода, несоответствующего стандарту.
MonkAlex
12.08.2017 20:30Попытался завести zapret на linux mint, но я нуб-нубом и что-то получаю не то:
systemctl start zapret
Откуда должен был взяться сервис?
Failed to start zapret.service: Unit zapret.service not found.
fukkit
12.08.2017 22:07-2Подобный класс ошибок начинает распутываться с /etc/rc*, ну или маны почитать можно, если религия позволяет.
Renaissance
13.08.2017 00:00Юнит нужно сгенерировать вручную, описано в разделе «Пример установки -> ubuntu 16,debian 8».
zumpel
12.08.2017 22:57еще раз хочу вас поблагодарить за эту программку, дело в том, что запуская ее, интерент у меня стал работать гораздо шустрее и отзывчивее (серфинг, открытие одновременно нескольких вкладок в браузере, скачка, снизились даже пинги в wot!). не знаю с чем это связанно, но думаю что у провайдера (билайн) стоят какие то тормозные «фильтра», что непосредственно и влияет на скорость работы инета
TriAn
12.08.2017 23:20Спасибо за интересное исследование. Но у меня осталась пара вопросов после прочтения материала:
- Как вы "фрагментируете" https?
- В статье вообще не освещены механизмы работы DPI с https трафиком. На сколько я понимаю без того, чтобы в DPI был установлен валидный (с точки зрения браузера) сертификат, организовать глубокую инспекцию невозможно, и значит нужно блокировать весь https по IP. Тогда опять же в каких случаях ваше ПО помогает обойти DPI для https?
TriAn
12.08.2017 23:41Отдельный вопрос в том, как вообще получить такой доверенный сертификат, который позволяет выдавать сертификаты на любые веб ресурсы. Мне кажется, что производителю DPI в таком случае нужно очень тесно дружить с разработчиками ОС и браузеров.
ivan386
13.08.2017 00:31DPI вычитывает Server Name Indication. Он идёт открытым текстом. Так что сертификат не нужен.
TriAn
13.08.2017 11:41Спасибо! Не думал, что SNI идёт открытым текстом. Хотя это логично было бы предположить.
sumanai
13.08.2017 20:18+1В TSL 1.3 его предлагают зашифровать, но когда он ещё придёт.
ivan386
13.08.2017 21:46На сколько я понял будет два серфиката. Один общий а второй конкретного сайта. Общий будет также открыто запрашиватся. А сертификат сайта будет запрашиватся под шифрованием.
TriAn
14.08.2017 22:28Что-то не нашел в драфте RFC упоминание о шифрованном SNI. Только лишь в случае 0RTT-Data, а он работает только в случае переиспользование предыдущей уже установленной сессии. Так как SNI это часть Client Hello, то что-то я не представляю как его можно зашифровать до обмена ключами.
bgBrother
13.08.2017 00:31Отдельный вопрос в том, как вообще получить такой доверенный сертификат, который позволяет выдавать сертификаты на любые веб ресурсы.
Нужно быть доверенным центром сертификации (Certification authority, CA). Не самое трудное.
производителю DPI в таком случае нужно очень тесно дружить с разработчиками ОС и браузеров
Смею предположить, что производителю DPI никогда не позволят использовать корневой сертификат для дешифрации трафика. Сертификат скорее всего отзовут. Подобное было в Китайском Фаерволе (ссылку найти не смог, но есть вот это)TriAn
13.08.2017 11:49Да, все верно. Но мне кажется, что достаточно проблематично стать таким CA и выдавать сертификаты на любые домены, чтобы при этом сертификат такого CA не заблокировал, например, Google в своём браузере. Производитель браузера может затем и надавить на root CA подписавший такой сертификат. Думаю root CA под угрозой блокировки своего сертификата быстренько отзовет сертификат выданный для CA поставщика DPI решений.
bgBrother
13.08.2017 00:11без того, чтобы в DPI был установлен валидный (с точки зрения браузера) сертификат, организовать глубокую инспекцию невозможно, и значит нужно блокировать весь https по IP.
Скорее всего возможно и по домену заблокировать.
HTTPS пакет к vk.com в ПО CharlesValdikSS Автор
13.08.2017 00:58Как вы «фрагментируете» https?
Так же, как и HTTP — изменением TCP Window Size.
В статье вообще не освещены механизмы работы DPI с https трафиком.
Большинство DPI просто проверяют значение TLS SNI, и блокируют по домену.
zxsavage
13.08.2017 00:58В Казахстане (Казахтелеком) работает. Частично правда.
-p -f 2 -e 40 открывается часть сайтов (flickr.com, например).
Не открывается к примеру archive.org, в т.ч. с параметрами "-1" и "-1 -a" — превышено время ожидания.
Lomuel
13.08.2017 00:58Словил bluescreen через пару секунд после запуска goodbyedpi.exe -1 -a
WIndows 8.1
Консоль была открыта от пользователя.
В чем может быть проблема?
alkoro
13.08.2017 01:01Как я понял, эта программа бесполезна, если в браузере используется прокси-подключение. Что будет, если эту программу запустить прямо на прокси-сервере с win2008r2+TMG2010? Не будет ли проблем или конфликтов драйвера Windivert и TMG?
Ну а дома всё прекрасно «работает» (РТ) — даже с единственным ключом "-p". Пока отлаживал, обнаружил дополнительную блокировку по DNS. Если использовать открытые DNS, то до вывода заглушки дело даже не доходит — host not found. Так что DNScrypt+GoodByDPI.ValdikSS Автор
13.08.2017 01:01Попробуйте, не знаю, будет ли работать.
alkoro
14.08.2017 06:16Отчитываюсь, добравшись до раб. места… Никаких заморочек с Win2008R2/TMG2010, установил, запустил, никаких перезапусков служб, работает сразу. Провайдер (не общероссийский) выдаёт местную заглушку, но помогает просто ключ -p без модификаций заголовков. Также необходим DNSCrypt, видимо пров. тем самым просто облегчает себе работу.
зы. Осталось потестировать на нагрузке, когда юзеры толпой навалятся на проксик.
Bonio
13.08.2017 01:13ReQrypt у меня не заработал, как я не пытался.
Интересно, а его можно перенести с компьютера на роутер или на отдельный сервер? Чтобы работало не на единственном компьютере, а на всех устройствах в сети.ValdikSS Автор
13.08.2017 01:15Какой у вас провайдер и роутер? У вас ReQrypt может не заработать только в том случае, если провайдер блокирует по IP-адресу в том числе и входящий трафик, или у вас симметричный NAT. Подразумевается, что у вас с DNS все в порядке, а если не в порядке, то вы используете DNSCrypt.
Bonio
13.08.2017 01:23Провайдер Билайн, ip адреса серверов ReQrypt пигнуются, DNSCrypt использую. Роутер TP-Link TL-WR1043N с OpenWRT прошивкой.
А про тип NAT не скажу, не знаю, но он есть, провайдер выдает только серые ip. Как это можно узнать?ValdikSS Автор
13.08.2017 09:46Вы же включили ReQrypt в веб-интерфейсе?
Bonio
13.08.2017 09:48Конечно же. И настройки по всякому изменял. Не работает. Проверял на рутрекере. Может я чего-то не учел? Программу же просто запустить надо и все?
ValdikSS Автор
13.08.2017 10:01Да, достаточно просто запустить.
Скачайте stuntman, запустите так:
stunclient --mode behavior stun.ekiga.net
И приложите вывод.Bonio
13.08.2017 10:05stunclient --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
ValdikSS Автор
13.08.2017 10:13А если TTL увеличить? Поставьте 5, например.
Bonio
13.08.2017 11:04Я разобрался. reqrypt работает, но только на заблокированных http url, например, вот на этом. Заблокированные https сайты, такие, как рутрекер, и заблокированные по ip, такие, как bt.t-ru.org, не открываются и с reqrypt.
Это нормально?ValdikSS Автор
13.08.2017 11:07Возможно, ваш провайдер блокирует и входящий трафик с заблокированных IP-адресов, увы.
Bonio
13.08.2017 11:14Да, не весело. Спасибо за помощь вам.
А вообще часто провайдеры так делают, в смысле блокируют не только исходящий трафик, но и входящий?ValdikSS Автор
13.08.2017 11:14Я пробовал на 6 разных провайдерах, и все блокировали только исходящий.
Bonio
13.08.2017 11:33А вот, что интересно, ip рутрекера у меня не заблокирован, на 195.82.146.214 я могу зайти браузером. То есть там не по ip блокировка, а по имени. И все равно он через reqrypt не открывается.
rogoz
13.08.2017 15:41В копилку глухих блокировок. Это на роутере помогает полностью:
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
Bonio
13.08.2017 09:58Наврал я вам, что ip пингуются, прошу прощения. Но, похоже, что они они просто на icmp запросы не отвечают, судя по tracert. C запущенным reqrypt никакие сайты не открываются.
Infactum
13.08.2017 09:33К сожалению не работает. Проверено со всеми вариантами опций. В том числе в связке с 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.ValdikSS Автор
13.08.2017 09:46Приложите весь вывод Blockcheck.
Infactum
13.08.2017 10:05BlockcheckBlockCheck 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.ValdikSS Автор
13.08.2017 10:10Я не вижу ошибки в Blockcheck. Ваш провайдер не подменяет DNS-запросы, если использовать сторонний DNS-сервер. DNSCrypt вам не обязателен. И, похоже, провайдер блокирует часть сайтов по IP-адресу.
Vizavi
13.08.2017 10:19-7Как мило, ANTI DPI от человека стоящего за сервисом по сливу юзеров теоррнетов — iknowwhatyoudownload.
Просто хрестоматийное лицемерие.ValdikSS Автор
13.08.2017 10:29+5Я не причастен к iknowwhatyoudownload, не знаю, почему вы думаете иначе.
Но, в любом случае, если что-то технически можно сделать, сервис для этого появится, и ни в чьих силах не будет убить все форки и зеркала.
deustech
13.08.2017 12:48А есть альтернативы модулю u32 для iptables?
на большинстве томато роутерах на arm с ним сложности:
x_tables: ip_tables: u32.0 match: invalid size 2032 (kernel) != (user) 1984
ValdikSS Автор
13.08.2017 12:48Вероятно, у вас что-то не так с модулями iptables. Обращайтесь к создателю прошивки.
u007
13.08.2017 18:02Можно вот так, но это сугубо в качестве эксперимента
iptables -A INPUT --protocol TCP -i eth0 --sport 80 -m ttl --ttl-eq 62 -j DROP
От меня до провайдерского дпи be101.tf01.Moscow.gldn.net ровно два хопа. Это меньше, чем до любого другого сайта, правда, есть сайты, которые ставят изначальный ttl больше 64, и тут можно перебдеть. Но таких мало.
u007
13.08.2017 18:18-3А вообше, я считаю, все эти блокировки только на пользу. Посмотрите, сколько людей повысили свои технические навыки! Потрогали iptables, поковыряли tcp/ip, полистали спецификации. А вы ругаетесь, мол, роскомпозор, бешеный принтер… Всё к лучшему!
ivan386
13.08.2017 21:36+1Ещё списочек годных сайтов с картинками собирает.
u007
13.08.2017 21:51Если бы не BlockCheck, так бы и не знал, сколько интересного в сети водится. Хорошую утилиту Valdik написал ;)
Кстати, кто подскажет, отчего так: набираю rutracker.org./ а firefox лишнюю точку… убирает. С другими сайтами такого нет. Непонятно.ivan386
13.08.2017 22:40+1Это сам рутрекер перенаправляет на форум используя полный адрес без точки. Если её добавить после перенаправления то она останется.
u007
13.08.2017 23:13А, вспомнил. Спасибо. 301 же. Когда-то давно сабж отдал 301-й редирект, а браузер его закешировал… Теперь все запросы с точкой исправляются сразу, даже до отправки в сеть.
DarkByte
14.08.2017 09:18+1А то! Низкие зарплаты тоже к лучшему, меньше будут ездить отдыхать — меньше возможностей покалечить себя. Кушать меньше тоже к лучшему, британские учёные из журнала woman ведь доказали, что голодание — это полезно для здоровья. Как же плохие дороги не забыть — ведь по ним не только враг не проедет, на своих иномарках, так ещё и гонять не будут — тоже к лучшему! Нужно во всём искать хорошее!
u007
14.08.2017 10:09+1Как же плохие дороги не забыть
Дороги… Дороги вообще уберём. Меньше машин — больше велосипедистов. Город — людям!
firk
14.08.2017 13:43-2Больше пиара способам обхода блокировок — больше вероятность исправления этих способов. И я не понимаю, чего все так радуются этой статье.
Технически да, интересно, хотя в целом это и так было известно. Программа вида "просто скачай, запусти и работает" — плохо. Хотите сами пользоваться и подольше — лучше пользоваться тихо и не шуметь, и надеяться что у остальных пользователей тоже хватит ума не пиарить данную технологию. Хотите чтобы для всех — тут путь только законодательный есть (да, сложно стать тем кто влияет на законодательство, но всё остальное — вообще бесполезные или даже вредные действия в этом плане).
eov
14.08.2017 14:11+3Сейчас опять скажу не популярную вещь, но я согласен с предыдущим товарищем. Да, мы тоже мониторим различные форумы, в которых пишут что и как у нас можно сломать или как добыть немного бесплатного интернета. И таки-да, мы закрываем дыры и боремся с фродом. Если бы люди просто пользовались бы по-тихому, то мы могли бы и не заметить.
В данном конкретном случае, не думаю, что ПО "Ревизор" научат проверять возможно ли описанным способом обходить блокировки или нет. Соответственно, DPI-и скорее всего дорабатывать не будут (зачем тратить бабки...). Только в случае если будут сформулированы конкретные технические требования к DPI и ВСЕХ операторов заставят купить "решение", ну скажем у Ростеха, тогда — Да.
FisHlaBsoMAN
Я когда то обходил блокировку подменяя GET на POST, изначально проверял head'ом и обнаружил что работает
ValdikSS Автор
Это будет работать только на очень ограниченном количестве сайтов.
FisHlaBsoMAN
Это само собой, но качать файлики через wget самописным скриптом мне удавалось. Если что я про ныне покойный(?) ex