Интеллигентный торрент-трекер
canvas not supported
Нас вместе: 4 254 854

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


Страницы:   Пред.  1, 2, 3 ... 26, 27, 28 
 
RSS
Начать новую тему   Ответить на тему    Торрент-трекер NNM-Club -> Обход блокировок
Автор Сообщение
Admin ®
NNM-CLUB
Стаж: 8 лет 8 мес.
Сообщений: 65
Ratio: 509,119
64.71%
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных.

Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков 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% .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 получал трафик от пользователей к заблокированным 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

 ! 
ValdikSS 06.12.2017 писал(а): Перейти к сообщению
Выложил новую бета-версию 0.1.2rc1.
https://github.com/ValdikSS/GoodbyeDPI/releases

Новая возможность: изменение регистра для значения заголовка Host (test.com -> tEsT.cOm);
Новая возможность: находить и обрабатывать HTTP-трафик на порту, отличном от 80;
Новая возможность: добавление собственных портов TCP для обработки программой;
Новая экспериментальная возможность: перенаправление DNS-запросов на заданный IP-адрес и порт.

Добавление собственных портов TCP должно помочь в разблокировке торрент-анонсеров на нестандартом порту, а перенаправление DNS пригодится пользователям с провайдерами, которые подменяют DNS-ответы и перенаправляют сторонние DNS-серверы на свой, при использовании DNS-серверов на нестандартом порту (77.88.8.8:1253)

В общем, у кого блокируются анонсеры некоторых торрент-трекеров, попробуйте запустить программу следующей командой:
Код: выделить все
goodbyedpi.exe -1 -w --port 2710 --dns-addr 77.88.8.8 --dns-port 1253


Эффективное проксирование для обхода блокировок по 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.

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


Автор: ValdikSS
Источник: Habrahabr
Пост Vender73 (спасибо!) для быстрого старта на фоне при каждом запуске винды (ака установил -> забыл -> работает автоматически, всегда, до момента ручной остановки/удаления).

Краткая инструкция по установке:
1) скачать zip архив GoodbyeDPI: для x86_64 (ссылка), работает только на 64-битной Windows, для x86 (ссылка), работает на 32-битной и 64-битной Windows,
2) распаковать папку GoodbyeDPI куда угодно,
3) зайти в распакованную папку, открыть файл goodbyedpi.ini в любом любом простейшем редакторе, например, в Блокноте, там задан параметр -4 (это наиболее быстрый режим работы, но совместимый не со всеми DPI)
цифру 4 менять на 3 (или 3 -a, как в топ посте написано), 2, 1 или 1 -a в зависимости от уровня блокировки, 1 -a работает с большинством операторов, но самый медленный в отличии от других, 4 самый быстрый, но не все блокировки снимает (или не снимает вообще), в общем, все ключи описаны здесь, на GitHub автора программы, в разделе "How to use" (англ.)
4) запустить от Администратора файл srvinstall.bat, чтобы установить сервис (и забыть..), srvremove.bat, чтобы его удалить
5) дальше, если по простому, перезагрузить компьютер. Если нет, выполнить команду services.msc, найти GoodbyeDPI и запустить

ВСЁ! больше никаких блокировок! Даже VPN и Tor не надо! Скорость не урезается! ...конечно, пока Ваш оператор за ваши же деньги не поставит DPI оборудование подороже и не настроит его на более агрессивные режимы работы, если от 4 до 1 ничего не работает, значит уже поставил...
 !  Не задавайте пожалуйста, в этом топике вопросы и не пишите ничего лишнего, что не касается GoodbyeDPI.
Не пишите о надстройках к браузерам и прочих методах обхода блокировок.
Не мешайте людям найти полезную информацию касаемо сабжа.
[NNM-Club.name]_GoodbyeDPI 0.1.1 (x86, x86_x64).zip
 Описание:  
Скачать
 Имя файла:  [NNM-Club.name]_GoodbyeDPI 0.1.1 (x86, x86_x64).zip
 Размер:  356,27 KB
dembel55
Стаж: 8 лет 5 мес.
Сообщений: 248
Ratio: 96,379
Поблагодарили: 3527
100%
Откуда: из России
russia.gif
Taylor Swift писал(а): Перейти к сообщению
Аналогичная ситуация. 5 декабря GoodbyeDPI перестал пускать в клуб. С другими заблокированными сайтами, которыми пользуюсь, проблем нет. Оператор Ростелеком.

Тоже самое было,ввел яндекс DNS,Базовый
77.88.8.8
77.88.8.1 ,другие не пробовал,все работает,как и раньше.

_________________
...не спорьте с идиотами, сначала они опустят вас до своего уровня, а потом задавят опытом...
debiloid78
Стаж: 6 лет
Сообщений: 55
Ratio: 3,173
Поблагодарили: 4
34.62%
Два любых DNS отсюда https://api.opennic.org/geoip/
выполнить в консоли ipconfig /flushdns и
заходи на http://nnm-club.lib без всяких ухищрений и гудбай дпай. Шмяндыкс зло, как и гугль.
Taylor Swift
Модератор ММедиа, Дизайна и Графики
Enchanted
Стаж: 1 год 11 мес.
Сообщений: 821
Ratio: 370,254
Поблагодарили: 41287
100%
witch.png
dembel55 писал(а): Перейти к сообщению
Тоже самое было,ввел яндекс DNS,Базовый
77.88.8.8
77.88.8.1 ,другие не пробовал,все работает,как и раньше.

Как это ни странно, сегодня доступ есть. Никаких изменений не производилось, как до возникновения проблемы, так и после.
yuriko1158
Стаж: 4 года 9 мес.
Сообщений: 441
Ratio: 1,302
100%
russia.gif
Svetogor999 писал(а): Перейти к сообщению
Надо было только KB3033929 установить

ну,надо радоваться простому решению проблемы.это же здорово,а то бы залезли в процессор и накатали бы пару алгоритмов для работы ядер :D
ValdikSS писал(а): Перейти к сообщению
Выложил новую бета-версию...

чую что скоро провайдеры будут бороться с ValdikSS...
Nize
Стаж: 8 лет 3 мес.
Сообщений: 66
Ratio: 6,805
0%
Откуда: человек мира
nnm-club.gif
Запустил ReQrypt в опциях выбрал Hiding Everything на заблокированные сайты пускает, обрадовался, но потом обнаружил что мой веб сервер в локальной сети отвалился, просто перестал отвечать на запросы. Сделайте пожалуйста исключения фильтрации для локальных адресов
Kalex
Администратор

Online
Стаж: 10 лет 3 мес.
Сообщений: 25941
Ratio: 38,224
Поблагодарили: 12916
100%
nnm-club.gif
Nize
ValdikSS, если я не ошибаюсь, не является разработчиком ReQrypt, поэтому его просить и писать об этом здесь не стоит.
Вам на гитхаб нужно https://github.com/basil00/reqrypt

_________________
NNMClub и IPv6/Teredo
... если преступников недостаточно, их надо создавать. Кому нужна нация, состоящая сплошь из законопослушных граждан? Какая от нее польза? А вот издайте законы, которые нельзя ни соблюдать, ни проводить в жизнь, ни объективно трактовать, и вы получите нацию нарушителей, а значит, сможете заработать на преступлениях... /Айн Рэнд, «Атлант расправил плечи»/
dimok536

Online
Стаж: 7 лет 5 мес.
Сообщений: 117
Ratio: 35,434
Поблагодарили: 93
81.89%
russia.gif
Пост Vender73 (спасибо!) для быстрого старта на фоне при каждом запуске винды (ака установил -> забыл -> работает автоматически, всегда, до момента ручной остановки/удаления).

Краткая инструкция по установке:
1) скачать zip архив GoodbyeDPI: для x86_64 (ссылка), работает только на 64-битной Windows, для x86 (ссылка), работает на 32-битной и 64-битной Windows,
2) распаковать папку GoodbyeDPI куда угодно,
3) зайти в распакованную папку, открыть файл goodbyedpi.ini в любом любом простейшем редакторе, например, в Блокноте, там задан параметр -4 (это наиболее быстрый режим работы, но совместимый не со всеми DPI)
цифру 4 менять на 3 (или 3 -a, как в топ посте написано), 2, 1 или 1 -a в зависимости от уровня блокировки, 1 -a работает с большинством операторов, но самый медленный в отличии от других, 4 самый быстрый, но не все блокировки снимает (или не снимает вообще), в общем, все ключи описаны здесь, на GitHub автора программы, в разделе "How to use" (англ.)
4) запустить от Администратора файл srvinstall.bat, чтобы установить сервис (и забыть..), srvremove.bat, чтобы его удалить
5) дальше, если по простому, перезагрузить компьютер. Если нет, выполнить команду services.msc, найти GoodbyeDPI и запустить

ВСЁ! больше никаких блокировок! Даже VPN и Tor не надо! Скорость не урезается! ...конечно, пока Ваш оператор за ваши же деньги не поставит DPI оборудование подороже и не настроит его на более агрессивные режимы работы, если от 4 до 1 ничего не работает, значит уже поставил...
толькочто сделал ,всё заработало ( задан параметр -4 (это наиболее быстрый режим работы )
ehinoptis
Стаж: 4 года 9 мес.
Сообщений: 1
Ratio: 58,706
22.81%
Спасибо! Всё работает. Провайдер МТС. :клево:
Показать сообщения:   
Начать новую тему   Ответить на тему    Торрент-трекер NNM-Club -> Обход блокировок Часовой пояс: GMT + 3
Страницы:   Пред.  1, 2, 3 ... 26, 27, 28
Страница 28 из 28