Pull to refresh

Comments 352

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

Это будет работать только на очень ограниченном количестве сайтов.
Это само собой, но качать файлики через wget самописным скриптом мне удавалось. Если что я про ныне покойный(?) ex
Статья понравилась, автор молодец. Сразу поселилась мысль, что тут содержатся способы обхода блокировок, что запрещено в РФ. Надеюсь роскомнадзор с прихвостнями пройдут мимо
Боюсь скоро начнут выпиливать эти публикации. И прошлые тоже. Вариантов нет особо.
Тогда тут останутся только пустые корпоративные блоги с нулем просмотров
Беда утром, что баланса особо не получится (( законы хреновые.
UFO just landed and posted this here
Тут скорее надо боятся что ValdikSS'а выпилят :(
Пора выводить часть статей в Tor.

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

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

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

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

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

Согласен. Не подумал.
Ну не со всеми, хром например не сохраняет файлы шрифтов прописанные в css, у них это в TODO с лохматых годов =\

И не будет никогда. Авторские права.

Сохранять страницы это браузеру не мешает, как и картинки со скриптами, а также css-файлы, хотя авторские права на них тоже распространяются.

Зелёный слоник image прекрасно ест статьи с Хабра. Потом можно хоть знакомым разослать, хоть в архив выкинуть. Это если понадобится офлайн версия. А устраивать шмон по приватным блокнотам вряд ли кто-то сейчас станет.
А, кроме DPI и IP, какие еще типы блокировок существуют?
Провайдеры разве не имеют возможность видеть кто обходит блокировки, а кто нет?
Есть подозрение, что дрючат провов за то, что «ревизор» обходит блокировки, а не продвинутые юзеры
Да, у некоторых провайдеров установлен zapretservice, который представляет собой настроенный Squid.

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

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

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

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

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

Вообще, я планировал перенести всю функциональность GoodbyeDPI в ReQrypt, чтобы была одна большая кроссплатформенная программа, с веб-интерфейсом, но пока как-то руки не доходят. Будет здорово, если кто-нибудь поможет мне и автору ReQrypt. Здесь есть план: https://github.com/ValdikSS/ruqrypt/issues/1
UFO just landed and posted this here
UFO just landed and posted this here
Автор исправил, теперь собирается?
UFO just landed and posted this here
Не думаю что обывателю очень удобно держать открытую вкладку хотя это и кроссплатформенно, к тому же ваш сервис переодически вызывает bsod у некоторых пользователей так что использовать его бы хотелось с возможностью отключения и включения в пару кликов, у меня появилась идея сделать под .net приложение и запихать туда openvpn, ruqrypt, goodbyedpl и все основные способы обхода с возможностью обновлять модули и gui по отдельности.
Надоело копипастить сравнение «warning.rt.ru» побайтово?
Вы, видимо, хотели оптимизировать сравнение вложенными if'ами, но это не нужно: как только не сработает первое правило, сравнение остальных не будет производится, если это логическое «и» (&&).
В Си ведь нет сокращенного вычисления логических выражений?
UPD: ок, понял, есть.
if (0 && exit(-1)) {something};

exit(-1) не будет выполняться.
Внезапно, просто запустил и работает.
Спасибо.

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

Я написал GoodbyeDPI, потому что мне было интересно, и потому что я стараюсь заботиться о людях. Я не пользуюсь Windows, но, тем не менее, эта программа под Windows.
UFO just landed and posted this here

А можно такую же программу под домашний роутер с прошивкой OpenWRT?

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

Все.
Ну и работать это будет только в браузере. Зачем мне браузер, ведь есть telnet. Я же не браузер смотрю, а интернет!

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


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


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


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

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

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

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

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

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

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


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


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

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

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

Если найдут. :)))
Количество VPN соединений не очень маленькое.

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

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

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

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

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

Откуда дяденька прокурор узнает, на какие сайты я ходил через сервер в Нидерландах?

Вы ходили на сервер в Нидерландах и не объяснили, зачем, а это уже подозрительно :)

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

Тут работает принцип неуловимого джо, который неуловим потому, что никому нафиг не нужен.
Заблокируют тот впн, который предоставляет ему эту услугу.
Он не предлагает покупать ВПН который «окажет ему услугу», он предлагает сделать свой ВПН и использовать его лично для себя, а не оказывать услуги кому-то.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

купить виртуалку за 3 бакса или евро

И радоваться тому, что номер карточки (а также Ваш домашний адрес, который искользуется для валидации платежа) уже там, где надо. "Прошу обратить внимание — добровольно, и с песней!"

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

Карты киви проходят у многих хостеров. Карта киви делается на симку из метро и мобильник с другой станции, а хостинг аккаунт на платежку за квартиру из ящика соседа. Дальше — больше, поле для паранои немерянно.

Помнится, был законопроект, чтобы симки продавать только по паспорту, не?

Огонь под лягушкой меееееедленно усиливают…

Вроде бы он уже много лет как есть. Просто не все (всякие неофициальные продавцы) его соблюдают.

В метро и на совке на него болт давно положили.

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

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

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

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

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


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


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


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

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

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


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

VPS за 3 бакса

Где взять? Какие там ограничения на место/трафик? Там дают root права на систему и можно доустановить что потребуется? Спасибо!
Некропост, но не могу сказать спасибо. Для хостинга простых телеграм ботов с лонгполлингом самое-то.
Можно через QEMU вручную накатить любой «пробный» Windows абсолютно бесплатно:
Инструкция №1
Инструкция №2

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

Так же в инструкции одна команда может не заработать. У меня работало с командой:
qemu-system-x86_64 -machine accel=kvm -cdrom windows_install.iso -boot d windows.img -m 16000

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

UFO just landed and posted this here
Заработало отменно с -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>

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

Зачем, достаточно просто задание остановить.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Тогда вопрос в том насолько «умным» сделают этого самого Ревизора и как часто станут его обновлять.

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

UFO just landed and posted this here

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

UFO just landed and posted this here
UFO just landed and posted this here

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

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

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

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

Осталось придумать что-то с 3D-Secure, где пока ещё передаётся, если не ошибаюсь, код СМСкой (а может уже тоже через приложение — нет телефона под рукой проверить).
При «незнакомом» входе в клиентбанк осуществляется вызов на финансовый номер клиента, робобаба просит нажать единичку (перехват кода невозможен)

Что мешает перехватить вашу линию и нажать единичку за вас? СОРМ, скорее всего, такое позволяет.
Захват линии и выдача себя за целевого субъекта, насколько я понимаю, технически заметно сложнее, чем просто перехват СМС без необходимости выдачи себя за цель.
Не вижу сложности в изображении тонального сигнала с клавиатуры. Или там ещё что-то требуют? Тогда вы забыли об этом написать выше.
Для перехвата СМС вам «всего лишь» нужно прослушать и расшифровать трафик, направленный на интересуемого абонента. Для перехвата звонка вам нужно вклиниться в систему оператора и заставить её направлять трафик на ваш подставной аппарат вместо адресата. Только потом уже вы сможете изобразить тональный сигнал.
Не очень понимаю, чего вы хотите от eov. Я правильно понимаю, что он и все остальные сотрудники МТС должны были написать заявление об увольнении по собственному желанию после того случая?
А почему тогда они не должны этого делать при каждом мелком нарушении прав абонентов многие годы назад? А где они тогда будут искать работу, если все разом уволятся? Или уволиться должен был только eov? Если так, то почему только он? И почему он теряет право «расстраиваться», что решение компании не работает с точки зрения сотрудника (это проффесионализм) и радоваться этому же с точки зрения прав человека (это гражданская позиция)?

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

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

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


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

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

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

UFO just landed and posted this here

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


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

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

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

Ваш вариант на микротике, видимо, не реализовать, а на чем-нибудь посерьезнее, вроде openWRT, может и получится.
А не будет наглостью попросить описать решение на микротике поподробнее, для повторения? Я недостаточно знаю эту платформу для реализации первой половины задачи (отловить ответы от заглушки и на этом основании сделать таблицу для PBR), а решение по описанию красивое.

Пишите статью, очень красивое и оригинальное решение! Сейчас как раз самое время.

Еще HTTP клиент может вместо CRLF присылать LF, что тоже должно корректно обрабатываться сервером.
Это рекомендация, ее не придерживаются еще большее число веб-серверов, чем несколько пробелов в первой строке запроса.
А вообще на каких веб-серверах тестировали?
Поидее нужны всего три: Apache, nginx, IIS, может быть lighttpd. Остальные встречаются или крайне редко или используются только при разработке.

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


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

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

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

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

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

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

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

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

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

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

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

Если человек не умеет или не знает где/как поднять/найти впн-сервер, он будет пользоваться этой утилитой и разбираться, как ее заставить работать под его провайдером. Если умеет и знает — ему эта утилита не нужна.
Если человек знает и умеет — он будет пользоваться тем инструментом, который ему лучше подходит. Не уверен, что стоит обобщать.
Тоже верно. Я решил пользоваться своим впн, ибо один сервер для всех устройств, независимо от провайдера, плюс — защита трафика в публичных сетях типа мосметро, макдак, гостиницы и тд тп.
С получением root, может, и никаких проблем, но, например, банковский клиент отказывается работать на рутованном телефоне. И не только он.
Это уже давно обходится. Гугли — Magisk.

Раз уж поднимаем некроту, то с 2017 многое изменилось, и теперь банкам по большей части плевать на рут. Как минимум Сбербанку, что уже показательно.

На iOS можно, если собрать самому со своим провижн профилем, который доступен фор фри. Так что можно попробовать. Любой маковод сможет собрать и накатить на девайс из сорцов. Для других можно настроить сборку в travis. Тогда можно будет форкнуть реп и вписать туда teamId от личного аккаунта
opera vpn есть в маркетах гугла и апла
Только по новому закону — подобные программы должны будут сами себя кастрировать, или их самих заблокируют.
У меня создалось впечатление ( не профессиональное, ибо не знаю сетей), что DPI таки стоят не только у провайдеров, какие то узлы, пути прохождения меняются. Тестировал только ReQrypt.
Напрягает отключение ipv6.
Поддержки IPv6 нет в ReQrypt потому, что когда он писался, IPv6 был еще не везде, и автор его просто проигнорировал. Ее обязательно добавят. В GoodbyeDPI тоже пока нет, тоже добавлю.
А почему апач на 127.0.0.1 при запущенной программе тоже отваливается? Куда копать?
Похоже, что у dom.ru не работает (проверял с -1 -a в Internet Explorer)
У Дом.Ру еще и DNS подменяется и перенаправляется. Используйте GoodbyeDPI в связке с DNSCrypt. Это должно быть написано в результатах Blockcheck.
Да, с DNSCrypt завелось с -1, спасибо
Спасибо, всё заработало с DNSCrypt+ReQrypt.

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

По этому ранее был доступ через IPv6 over IPv4 тунель. Яндекс, КиноПоиск и другие (кто имел АААА запись) открывались сразу же, но не ВКонтакте. Для него был FriGate.
GoodbyeDPI RST пакет от провайдера не подавляет? Можно такое добавить?
Дом.ру вбрасывает пакет с Flags = 0x04 и Window size = 0xfffe
Все подряд ресеты игнорировать нельзя, с высокой вероятностью фальшивые те, что быстро приходят (<10ms) после пакета от нас.
Я планирую добавить отслеживание таймингов и ретрансмиссий некоторых пакетов в GoodbyeDPI, чтобы автоматически определять пакеты от DPI, и отбрасывать их.
ValdikSS
У Zapret'a есть способ без DNSCrypt — игнорить липовые ответы от domru.
iptables
iptables -t raw -C PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff164|" --algo bm -j DROP --from 40 --to 300 ||
iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff164|" --algo bm -j DROP --from 40 --to 300
iptables -t raw -C PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000064|" --algo bm -j DROP --from 40 --to 300 ||
iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000064|" --algo bm -j DROP --from 40 --to 300
iptables -t raw -C PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff16e|" --algo bm -j DROP --from 40 --to 300 ||
iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff16e|" --algo bm -j DROP --from 40 --to 300
iptables -t raw -C PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000110|" --algo bm -j DROP --from 40 --to 300 ||
iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000110|" --algo bm -j DROP --from 40 --to 300


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

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

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

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

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

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

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

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

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

Технические решения позволяют уживаться с цензурой, так как именно вас она «как бы» не касается. Мой метод — трактор. И я очень доволен его эффективностью.

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

Я вроде бы довольно ясно сформулировал отношение к борьбе с цензурой в России. Трактор это не способ борьбы, это способ обхода блокировок. Я понимаю что это никак не влияет на ситуацию, но мне приятно осознавать что теперь я ни единым рублем не поддерживаю Роскомнадзор.
Но даже не смотря на бессмыслицу я уважаю таких людей. А вы лично к ним относитесь? В скольки политических акциях поучаствовали за последние 3 года?

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

Статья хорошая, автор молодец. Описанные способы подойдут для багтрекера и тех задания на доработку соответствующих кривых решений. Возможности для попила темы автор увеличил нехило, если ему ещё не доплачивают разработчики «защиты», то имхо уже пора начинать.
Дело не в возрасте способов, а в грамотном пиаре на профильном ресурсе.

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

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


Для настройки оконечного устройства заменить FORWARD на INPUT
У вас плохое правило, с ним могут перестать работать некоторые сайты, которые не выставляют бит «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
Спасибо, буду теперь знать!
Возможно я туплю, но я запустил эту программу, попробовал — да, работает. Оставил работающей и у меня прекратила обновляться страница хабра. :) Выключил — хабр открывается, включил — не открывается.
Но в любом случае — автору программы спасибо! Это решение лучше, чем остальные. (по крайней мере для меня).
Предоставьте больше информации: как конкретно не открывается, выдает какую-то ошибку, или бесконечно долго загружается?
Смотрю страницу этой статьи в FireFox.
Запускаю программу со следующими параметрами (ключи -4 -a).
Block passive: 1, Fragment HTTP: 0, Fragment HTTPS: 0, hoSt: 1, Host no space: 1, Additional space: 1

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

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

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


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

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

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

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

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


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

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


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


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

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


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

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

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

Фокус с 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);
    }

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


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


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

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

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

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

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

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


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


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

Все работает, спасибо, у меня правда только с параметром: -3 или -4
Вам уже ответили в issue, что gcc это симлинк на clang на macOS.

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


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


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


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

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

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

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

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

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

серфинг, открытие одновременно нескольких вкладок в браузере, скачка, снизились даже пинги в wot!

А также ушел лишний вес, на работе подняли зп, познакомился с супермоделью, стали зубы как новые и вообще помолодел лет на 30! Хорошая программа, рекомендую! </s>

Но утилитка и правда хорошая.

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


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

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

UFO just landed and posted this here

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

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

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

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

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

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

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


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


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

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

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

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


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


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


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

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

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


function FindProxyForURL(url, host)
{
 if (shExpMatch(url, "https:*"))
  return "HTTPS "+dnsResolve(host)+"; DIRECT;";
else
  return "DIRECT;";
}
UFO just landed and posted this here
PFS скорее относится к ключам симметричного шифрования для уже установленного соединения.
А SNI как и получение сертификата (читай публичного ключа) для соответсвующего запрашиваемого имени — в установлении шифрованного соединения.
Отдельный вопрос в том, как вообще получить такой доверенный сертификат, который позволяет выдавать сертификаты на любые веб ресурсы.
Нужно быть доверенным центром сертификации (Certification authority, CA). Не самое трудное.

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А, вспомнил. Спасибо. 301 же. Когда-то давно сабж отдал 301-й редирект, а браузер его закешировал… Теперь все запросы с точкой исправляются сразу, даже до отправки в сеть.
А то! Низкие зарплаты тоже к лучшему, меньше будут ездить отдыхать — меньше возможностей покалечить себя. Кушать меньше тоже к лучшему, британские учёные из журнала woman ведь доказали, что голодание — это полезно для здоровья. Как же плохие дороги не забыть — ведь по ним не только враг не проедет, на своих иномарках, так ещё и гонять не будут — тоже к лучшему! Нужно во всём искать хорошее!

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

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


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

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

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

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

UFO just landed and posted this here
GoodByeDPI не помог, значит блокировка по IP. Хорошо заработал ReQrypt, но столкнулся с такой проблемой, что через него идет весь трафик, и не нашел как настроить исключения, к примеру на локальную сеть. Это возможно? А то на роутер не зайти даже.
К сожалению не заработало. Хотя вместо страницы с информацией о блокировке получаю пустые страницы. Использование DNSCrypt также не помогло.

Вывод BlockCheck
BlockCheck v0.0.9.5
Для получения корректных результатов используйте DNS-сервер провайдера и отключите средства обхода блокировок.

Проверка работоспособности IPv6: IPv6 недоступен.
IP: xxx.xxx.xxx.xxx, провайдер: netbynet/ NETBYNET

[O] Тестируем IPv4 DNS
Через системный 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 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
Открываем furry.booru.org/index.php?page=post&s=view&id=111173
[] Сайт не открывается, пробуем через прокси
[✓] Сайт открывается через прокси
Открываем pbooru.com
[✓] Сайт открывается
Открываем a.putinhuylo.com
[✓] Сайт открывается
Открываем furry.booru.org
[✓] Сайт открывается
Открываем rutracker.org/forum/index.php
[] Сайт не открывается, пробуем через прокси
[✓] Сайт открывается через прокси
Открываем pbooru.com/index.php?page=post&s=view&id=303026
[] Сайт не открывается, пробуем через прокси
[✓] Сайт открывается через прокси

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

[O] Тестируем обход DPI
Пробуем способ «дополнительный пробел после GET» на pbooru.com
[] Ошибка: ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)
Пробуем способ «необычный порядок заголовков» на pbooru.com
[] Сайт не открывается
Пробуем способ «перенос строки перед GET» на pbooru.com
[✓] Сайт открывается
Пробуем способ «заголовок hoSt вместо Host» на pbooru.com
[] Сайт не открывается
Пробуем способ «перенос строки в заголовках в UNIX-стиле» на pbooru.com
[] Сайт не открывается
Пробуем способ «табуляция в конце домена» на pbooru.com
[] Сайт не открывается
Пробуем способ «фрагментирование заголовка» на pbooru.com
[] Ошибка: ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)
Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на pbooru.com
[✓] Сайт открывается
Пробуем способ «точка в конце домена» на pbooru.com
[] Сайт не открывается
Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на pbooru.com
[✓] Сайт открывается
Пробуем способ «дополнительный пробел после GET» на rutracker.org
[] Ошибка: ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)
Пробуем способ «необычный порядок заголовков» на rutracker.org
[] Сайт не открывается
Пробуем способ «перенос строки перед GET» на rutracker.org
[✓] Сайт открывается
Пробуем способ «заголовок hoSt вместо Host» на rutracker.org
[] Сайт не открывается
Пробуем способ «перенос строки в заголовках в UNIX-стиле» на rutracker.org
[] Сайт не открывается
Пробуем способ «табуляция в конце домена» на rutracker.org
[] Сайт не открывается
Пробуем способ «фрагментирование заголовка» на rutracker.org
[] Ошибка: ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)
Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на rutracker.org
[✓] Сайт открывается
Пробуем способ «точка в конце домена» на rutracker.org
[] Сайт не открывается
Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на rutracker.org
[✓] Сайт открывается

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


ReQrypt также не помог. IPv6 отключил. DNS-сервера установил (8.8.x.x)
Судя по Blockcheck, GoodbyeDPI должен работать в вашем случае. Может, у вас страницы с блокировкой в браузере закешировались? Попробуйте режим инкогнито.
C версией v.0.1.1 заработало сходу. Причём IPv6 не отключал.
(проверил на всякий случай 0.0.7, — не работает).

Очень круто. Thnx.
ValdikSS творчески подошёл к созданию программы (просто запускаешь и работает) и выбору значка для приложения.
Вышла версия GoodbyeDPI 0.1.0, с исправлениями ошибок.
Эта версия должна работать с некоторыми провайдерами, с которыми раньше GoodbyeDPI не работал.
Если на вашем провайдере тесты DPI в Blockcheck показывали, что DPI можно обойти, но GoodbyeDPI не справлялся, попробуйте обновленную версию.
Выпустил GoodbyeDPI 0.1.2
  • Blacklist-файл — незаблокированные сайты не ломаются
  • Перенаправление DNS — не нужно вручную изменять настройки ОС
  • Удобные скрипты для запуска и обновления blacklist-файла
ReQrypt должен разблокировать подсети Amazon и Google на большинстве провайдеров.
ТТК-Байкал.
Перестал открываться rutracker.org, думаю, что и остальные заблокированные сайты, не проверял.
Запускаю с ключами -4 -a (смена ключа с 1 до 4 тоже не помогает)
v.0.1.5rc1
Уважаемый автор. Во-первых, спасибо, даже не сколько за сам софт, а за ту информацию, что я нашел в вашей статье. Именно с вашей статьи (и комментариев!) началось мое изучение проблемы применения подобного рода ухищрений, но не на клиенте, а на сервере. Что я точно понял, что с TCP Window Size можно попробовать поиграться на сервере. Итак, я хочу чтобы мой сервер с сайтами (centos 6 + LAMP) при запросе веб-страницы модифицировал ack/syn пакет, фрагментируя его, так, чтобы «GET… HOST» передавалось кусочками. Нашел информацию про то, как задать в centos размер TCP Window size для приема пакетов:

в файле /etc/sysctl.conf прописал:

net.core.rmem_max=10


Однако, думаю, что мне не хватает больше знаний, как установить tcp window size именно для пакета ack/syn, содержащего TLS ClientHello. И вообще, в правильном ли направлении я двигаюсь? Что можете сказать по поводу этого?
Что можете сказать по поводу этого?
Скажу, что провайдеры заблокируют ваш сервер по IP-адресу через несколько дней, поскольку он станет открываться через системы проверки блокировок Ревизор. Провайдеру начнут приходить об этом уведомления, и, потенциально, штрафы. Не делайте так.

Если мне понравится ваш сайт, могу рассказать о более эффективных методах серверного обхода блокировки и их корректной реализации.
Спасибо за комментарий. Провайдер у меня — выделенный сервер в штатах, думаю штраф им точно не грозит, а айпишники их и так уже давно в базе ркн, там кроме меня еще многие-многие сайты наподобие трекеров и всяких киносериалов (мой другой тематики) хостятся. Пока что забуду про фрагментацию и почитаю другую вашу статью habr.com/ru/post/282087
Я говорил о штрафах российским провайдерам.
Если бы ваши IP-адреса были в реестре, то вы бы не смогли обойти блокировку на стороне сервера — на ваши IP-адреса просто бы добавили blackhole-маршрут.

Наступил тут на грабли.

Сочетание GoodbyeDPI с расшаренным интернетом на сервере (Windows, штатный общий доступ) приводит к тому что на подключенных клиентах этот самый расшаренный инет работает только через TOR.

Также ни к чему хорошему не приводит сочетание GoodbyeDPI с продуктами Kaspersky - Secure Connection просто падает соединение периодично, и соответственно сайты перестают работать вообще, бесплатный антивирус (Kaspersky Free/Cloud) периодически орет об атаке извне, и также сайты перестают открываться.

@ValdikSS известно ли Вам о подобных приколах и есть ли готовые решения или набор параметров программы, чтобы всё нормально сочеталось? И нет ли способа чтобы программа вообще никак не вмешивалась в локальный трафик и трафик через виртуальные линки (к впн например) ? Или оно и так не вмешивается и я просто не верно интерпретирую причины почему всё ломается ?

с расшаренным интернетом на сервере

Насколько я понял, провайдер детектит "расшаренный интернет" по уменьшенному TTL в заголовках пакетов. Если его через iptables подправить, то он не заметит.

Не, не тот случай. Пока на сервере не используется сабжевая программа - интернет раздается нормально. как только включаю - на сервере инет продолжает работать как и раньше, на клиенте - DHCP отрабатывает, TOR работает, а вот иные методы штатного взаимодействия с инетом (браузеры, программа удаленного управления) - не работают примерно никак. Настройки по умолчанию приложенным батником, сервис + днсредир.

Сдаётся мне, что ваш ReQrypt можно весьма эффективно использовать для DDoS атак весьма очевидным образом.

Прикольно, из-за одного этого комментария, статья опять попала в топ "Читают сейчас".

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

Она сначала попала и от этого появился комментарий. Тут такое бывает - на главную неожиданно вылезают старые статьи.

Если уж вытащили эту статью из чулана, то можно разъяснить, что за данные собираются рекомендуемой в ней программой Blockcheck путём отсылки на сервер prostovpn.org в 1092 строке файла blockcheck.py, причём этот сбор данных в readme настоятельно рекомендуется отключать гражданам Украины?

видимо версия ориентирована на заблоченные украиной ссылки (хотя в украине заблочены любые ссылки на домены *.ru и российские ip).

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

Это не отвечает на вопрос, с какой целью данные пользователя отсылаются на сервер, причём раздельно по мастер-версии и Украине.

Ну очевидно же — собрать статистику по блокировкам. А раздельно — потому что статистика нужна раздельная, всё-таки разные ведомства блокируют по разным причинам.

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

Вы бы не могли прояснить технический смысл процитированного соображения? Фильтру пакетов не всё ли равно, какое ведомство их блокирует и по каким причинам? Не говоря уж о том, зачем ему вообще статистика?

Единственное объяснение раздельного сбора статистики, которое мне приходит на ум – в том, что за список людей, применяющих программы для обхода блокировок на территории Украины платёжеспособный спрос гипотетически возможен со стороны украинских правоохранительных органов (секретарь СНБО Данилов прямо заявлял об учёте таких пользователей), а на территории России – гипотетически возможен со стороны российских. Конечно, я не утверждаю, что причины именно такие, и возможно, есть какие-то другие соображения. Но в народе не зря обращают внимание, что в варезе часто попадаются недокументированные функции. И если орган безопасности заявляет о внедрении технических средств сбора статистики о нарушителях, а предлагаемая к распространению свободная программа, по странному совпадению, именно эту функцию и выполняет, то нет ли здесь какой-то связи?

Э-э-э, погодите, где вы тут вообще увидели сбор информации о пользователях? Скрипт собирает информацию о провайдерах.


Вы бы не могли прояснить технический смысл процитированного соображения? Фильтру пакетов не всё ли равно, какое ведомство их блокирует и по каким причинам?

В России и на Украине используются разные фильтры пакетов, работающие на разном оборудовании от разных производителей.


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

Э-э-э, погодите, где вы тут вообще увидели сбор информации о пользователях? Скрипт собирает информацию о провайдерах.

Наиболее ценная информация из того, что собирает скрипт – это то, что пользователь с конкретного ip адреса запустил инструмент обхода блокировок.

В России и на Украине используются разные фильтры пакетов, работающие на разном оборудовании от разных производителей.

Какое это имеет значение для скрипта проверки доступности сайтов? Сайт либо доступен, либо нет.

IP адрес тоже, кстати, имеет определённую национальную принадлежность, которую легко автоматически установить, и для этого не требуются раздельные скрипты для разных стран. А вот случай, когда пользователь физически и юридически находится в одной стране, а пользуется ip адресом из другой, автоматически отловить непросто.

Какое это имеет значение для скрипта проверки доступности сайтов? Сайт либо доступен, либо нет.

Сайт может быть недоступен сильно по разному.
Ну чисто как пример:


  • DNS не резолвит хотя должен
  • DNS резолвит не туда но если использовать Cloudflare / Google DNS — то начинает резолвить куда надо
  • DNS резолвит не туда и Cloudflare / Google DNS тоже "возвращают" поддельные данные но DoH работает
  • DNS резолвит не туда и Cloudflare / Google DNS тоже "возвращают" поддельные данные и DoH тоже не работает
  • DNS резолвит туда но клиенту вместо ответа от сайта прилетает что-то левое
  • DNS резолвит туда, при этом запрос был по https и ответ был подписан левым сертификатом
  • https сессия тупо рвется если это TLS 1.2 но проходит с TLS 1.3 (хостнейм то зашифрован)
  • https сессия тупо рвется если это TLS 1.3, но НЕ рвется если TLS 1.2 (потому что сайт не из тех что должен блокироватся но на том же CDN есть еще и другие)
    это разные способц

    и эта информация нужна для совершенствования способов обхода и анализа как именно в каких странах это делают.

А если СНБО/ФСБ сливать… так смотрим что ЕЩЕ автор пишет :). Есть ж антизапрет :), там не то что скрипт про тестирование способов обхода — там еще и использование обхода, еще и с конкретными сайтами и временем, это еще ценнее.

Судя по коду, эта программа ходит по списку доменов (который есть в начале файла) и проверяет заблокированы ли они, и если да — то каким образом. Результат этих проверок как раз и отправляется.


Гражданам Украины (на самом деле всем кто там находится независимо от гражданства) этот сбор данных рекомендуется отключать чтобы не забивать статистику блокировок по России нерелевантной информацией.

Articles

Change theme settings