Комментарии 352
Я когда то обходил блокировку подменяя GET на POST, изначально проверял head'ом и обнаружил что работает
Как у флибусты — зайдешь на «луковый» сайт — полный доступ, зайдёшь на flisland.net — нет доступа к текстам.
Заходят ребята к РосКомНадзора — всё чинно, благородно.
Заходят остальные через Тор — всё как до РосКомНадзоров и регулирований интернета.
нужно качнуть для автономного прочтения…
У браузеров же есть возможность сохранить HTML со всеми ресурсами.
Провайдеры разве не имеют возможность видеть кто обходит блокировки, а кто нет?
EvilGenius18
Провайдеры разве не имеют возможность видеть кто обходит блокировки, а кто нет?Имеют, конечно.
Объясняю. По IP трафик заворачивают на прозрачный прокси а он уже вычитывает url или домен в случае https и блокирует в случае соответствии с правилами. Такой способ используют мелкие провайдеры.
К тому же это достаточно «тяжелый» вариант
Ещё подменяют ответы DNS.
Провайдеру главное, чтобы установленный ревизор не ходил куда не надо и РКН был удовлетворен.
Вот что пишет автор:
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
Можно попробовать переписать фильтры под себя, если необходимо.
https://github.com/dzhidzhoev/AntiRTDPI
Спасибо.
UPD: я правильно понимаю, что это единственное решение, когда мой трафик не ходит никуда, всмысле в том числе на неизвестные прокси\впн? =)
Да
Считаю, что у нас глобально не хватает хороших программ. Есть идеи, есть технологии, есть исследования, а софт писать разучились, либо просто лень людям. Что ни прокси-сервер или мессенджер, то обязательно на Electron, с chromium и ffmpeg.dll, на 60+ МБ, отъедающий 200+ МБ RAM, и еще нужно, чтобы при нажатии правой кнопки вываливалось меню с пунктами «Back» и «Refresh». И обязательно с рекламой или привязкой ко своим серверам.
Я написал GoodbyeDPI, потому что мне было интересно, и потому что я стараюсь заботиться о людях. Я не пользуюсь Windows, но, тем не менее, эта программа под Windows.
А можно такую же программу под домашний роутер с прошивкой OpenWRT?
В этих комментариях поищите "Openwrt". Например https://github.com/bol-van/zapret
Все.
Работать это будет где угодно :)
Это sock5. И браузер, и игрушки, TCP/IP который приносит радости. Если прописать на уровне системы — то весь системный софт, который умеет "в настройки системы" будет ее юзать.
Конечно, это чуть дольше чем скачать программу, которая будет обходить какие-то частные случаи.
Это всего лишь:
- купить виртуалку за 3 бакса или евро (если дорого, скинуться с 3 друзьями, кто будет сидеть на ней же)
- выбрать установку дебиана в админ панели хостера, сервер можно и не настраивать, ну или минимум добавить юзера для прокси
- скачать PuTTy (windows) и настроить как на картинке (и нажать [Add]):
- в случае линукса обойтись 1й строкой
ssh -D 3128 -i /путь/к/ключу root@айпи_сервера -p22
, вместоroot
указать юзера, которого сделали для прокси, если сделали. - Следом в системе или в браузе указать проксю
Радоваться тому, что траффик зашифрован до VPS и далее спокойно идет до цели и это работает во всех случаях, а ныть можно будет, когда всех обяжут пускать ssh траффик через главный сервер прокуратуры.
А где повод для радости-то? Закон о незаконности вашего способа уже есть.
Не совсем так. Способ автора не является сервисом и не запрещён текущим законодательством совсем.
Способ из комментария предлагает использовать именно запрещённый сервис и при выявлении подлежит блокировке.
Не-а, еще раз — vpn не запрещены.
Запрещено оказывать услуги vpn если не блокируются нужные сайты, но автор комментария услуги не предлагает оказывать, он предлагает использовать это «лично для себя».
Так автора комментария и не будут запрещать. Заблокируют тот впн, который предоставляет ему эту услугу. Всё в точном соответствии.
Количество VPN соединений не очень маленькое.
Так он предлагает же не чужой VPN искать, а VDS арендовать.
Сомневаюсь, что вы сможете доказать разницу прокурору. Или роскомпозору. Но можно да, тешить себя и такой мыслью.
А что мешает сказать, что это твои вирусы коннекты поднимают?
Ейбогу… соображалка-то где?
Сказать — ничего не мешает. Это не я, я просто рядом стоял. На степень виновности это не повлияет (тем более, что самому обходить блокировки пока можно)
Кому, простите, сказать? — дяденька прокурор, снимите с моего сервера блокировку, это не я там впном на "запрещённые" сайты ходил, это мои вирусы туда что-то сливали… — и прокурор, такой, — а, ну раз вирусы, то это меняет дело, снимаем блокировку, спасибо, что сказали!
Ей богу, соображалка-то где?
Просто поверьте на слово тем, кто читал закон: это будет работать.
Заблокируют тот впн, который предоставляет ему эту услугу.Он не предлагает покупать ВПН который «окажет ему услугу», он предлагает сделать свой ВПН и использовать его лично для себя, а не оказывать услуги кому-то.
Оказание услуг третьим лицам и личное пользование — сильно разные вещи, в том числе и юридически.
Вы полагаете, вы сможете это доказать? А действительно сможете? Расскажите Дмитрию Богатову как доказать, что это не он был тем экстремистом, за которого его закрыли. Серых мразей не смутило даже то, что "экстремист" действовал в то время, когда Богатов уже сидел в тюрьме. Прочтите его интервью. "Там" никому не интересно ничего ни юридически ни, даже, то, что некоторые вещи невозможно сделать физически. Поэтому Богатова обвиняют в экстремизме, который он "совершал" сидя в тюрьме. Поэтому Серебренникова обвиняют в том, что он не ставил спектакль, не смотря на то, что его посмотрели тысячи людей и даже в момент обвинения он шёл в театрах. Поэтому парализованного чувака в инвалидной коляске обвиняют в разбойном нападении и завладении мотороллером. Поэтому в крови сбитого насмерть шестилетнего ребёнка находят дозу алкоголя, срубающую с ног взрослого мужика… В общем, удачи вам!
В итоге получается, что работать это будет только в Mozilla Firefox (потому что он умеет слать запросы DNS через прокси) и в ПО где предусмотрены такие настройки.
Google Chrome и его производные, а также любое ПО использующее системные настройки прокси Windows будут слать запросы через DNS роутера-провайдера.
У меня провайдер подменяет DNS запросы, поэтому вся эта связка работает только в Firefox, и мне просто повезло что я использую его как основной и единственный браузер.
GoodbyeDPI и ReQrypt в моем случае не работают.
Но при таком раскладе теряется доступ ко внутренним сервисам провайдера.
Есть вариант выловить всё это дело вручную, но я до него ещё не дошел.
А если их там считанные единицы и вы их все знаете, то можно так же в dnsmasq указать, через какой dns сервер разрешать конкретное имя.
Про настройку dnsmasq я в курсе, спасибо.
У прошлого провайдера всё было проще в этом плане, а вот текущий добавил сложностей.
По крайней мере, в своём браузере у меня блокировок нет, спасибо ValdikSS за это.
Можно у провайдера спросить список доменов локальных сервисов (возможно на форуме он уже есть) и скриптом вогнать в hosts.
— падение скорости интернета
— ограничения трафика у хостинга за 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 бакса или евро
И радоваться тому, что номер карточки (а также Ваш домашний адрес, который искользуется для валидации платежа) уже там, где надо. "Прошу обратить внимание — добровольно, и с песней!"
Карты киви проходят у многих хостеров. Карта киви делается на симку из метро и мобильник с другой станции, а хостинг аккаунт на платежку за квартиру из ящика соседа. Дальше — больше, поле для паранои немерянно.
Помоему скачать и запустить прграмму легче чем ваш вариант. Да и много дешевле.
Он требует вложений, но не требует настройки сервера (если только idle уменьшить, чтобы sshd не рвал коннекты с клиентами, которые долго молчат).
Именно так. А запрет SSH… ну это вообще "приехали".
Кстати, многие арендуют сервера, следом шарят доступ и получают абузы — в случае публичного сервиса нужно, конечно же, настраивать сервер и лимитировать доступ.
Например такой провайдер как OVH ничего не запрещает ставить, то бишь можно ставить что угодно (реально что угодно), но если активность носит нелегальный характер — будет разбирательство и саспенд.
Это гораздо более гибкая политика, чем тот же hetzner, запрещающий tor или швейцарцы, которые против irc, tor и любый проксей.
Да ну, это слишком узкое применение.
Лучше уж sshuttle — он по крайней мере весь трафик заворачивает одной командой, а не только из браузера.
VPS за 3 бакса
Где взять? Какие там ограничения на место/трафик? Там дают root права на систему и можно доустановить что потребуется? Спасибо!
Инструкция №1
Инструкция №2
Во время установки надо сидеть в графическом интерфейсе через VNC Server, прокинутый в QEMU. В ином случае, весь диск пойдёт под раздел С.
Так же в инструкции одна команда может не заработать. У меня работало с командой:
qemu-system-x86_64 -machine accel=kvm -cdrom windows_install.iso -boot d windows.img -m 16000
Закину свои мысли по поводу «запуска как сервис» — в Win это можно сделать проще, через планировщик.
Ставим задание «при старте машины запускать от имени аккаунта SYSTEM», прописываем путь к программе с нужными ключами, PROFIT!
<?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>
Испытываю смешанные чувства по поводу того, что наш умный (DPI-ный) блокиратор обходится утилитой goodbyedpi. Как сотрудник компании расстроен, а как резидент страны и пользователь ru.net рад…
Я по-прежнему убежден, что все ограничительные меры в сфере информационных технологий, придуманные "теми кого в слух не произносим" и продвинутые "народными избранниками" направлены исключительно против простых сограждан. Родина от этого НЕ становится безопаснее....
Не думаю, что это уместно обсуждать здесь и сейчас...
Я не буду оправдываться, вполне допуская, что что-то подобное и было и в этом преступлении были задействованы и сотрудники компании. Скажу лишь, что мир не идеален и некоторые вещи (пример) можно делать без участия оператора. Еще скажу, что если «Яровая» заработает, то использовать sms для чего-то серьезного (авторизация, восстановление пароля и др.) станет просто невозможно, потому что к текстам (как в on-line, так и off-line) получит куда более широкий “круг лиц”, как говорится, без «суда и следствия»...
+1
Ключевое слово "снимает". А тут еще будет и хранить…
Еще прикол в том, что разработка "решения" для "Яровой" еще в самом начале. На этапе тестирования "решения" к трафику получат доступ дополнительные люди (разработчики).
Сейчас, формально, голосовой СОРМ работает путем установки "на мониторинг" конкретных абонентов на оборудовании оператора, а по "Яровой" потребуется полный слив сигнализации (в ней ходят SMS-ки) и самого голоса.
— При «незнакомом» входе в клиентбанк осуществляется вызов на финансовый номер клиента, робобаба просит нажать единичку (перехват кода невозможен)
— При установленном на смартфоне клиенте приложении Приват24, подтверждение «серьёзных» операций делается через приложение (просто нажать кнопку подтверждения, никакого кода вводить не нужно)
Осталось придумать что-то с 3D-Secure, где пока ещё передаётся, если не ошибаюсь, код СМСкой (а может уже тоже через приложение — нет телефона под рукой проверить).
При «незнакомом» входе в клиентбанк осуществляется вызов на финансовый номер клиента, робобаба просит нажать единичку (перехват кода невозможен)
Что мешает перехватить вашу линию и нажать единичку за вас? СОРМ, скорее всего, такое позволяет.
А почему тогда они не должны этого делать при каждом мелком нарушении прав абонентов многие годы назад? А где они тогда будут искать работу, если все разом уволятся? Или уволиться должен был только eov? Если так, то почему только он? И почему он теряет право «расстраиваться», что решение компании не работает с точки зрения сотрудника (это проффесионализм) и радоваться этому же с точки зрения прав человека (это гражданская позиция)?
Вы так всё это пишете как будто он — депутат, который эти законы разрабатывает.
// Да, вы, конечно, можете и на Нюрнбергский процесс сослаться. Вот только это с натяжкой будет работать если eov сам занят блокировками в своей компании.
Спасибо, я уже все понял… Это была просто попытка остановить офтоп обсуждение…
Еще бы напомнил бы правила Хабра:
Путать сайт с жалобной книгой
Если у вас проблемы с сотовым оператором, с провайдером интернета или хостинга, или с чем-то ещё, всегда можно связаться со службой поддержки нужного вам ресурса. Или с компетентными органами. Но не следует использовать «Хабр» как рупор, дабы рассказать всем о постигшей вас ситуации.
Оскорблять других пользователей, не следить за эмоциями
Мат, оскорбления, переходы на личности, эвфемизмы, троллинг — хорошие способы быстро и надежно сменить текущий статус аккаунта на ReadOnly.
можно пруф, я что-то пропустил.
Знаете, многие немцы абсолютно так же оправдывались насчет Освенцима.
Пока это просто аналогия...
Одно грустно, что это все привязка к конкретному ПК. Вот бы все это на роутер утащить.
У себя пока решил проблему так: микротик отлавливает входящие пакеты с переадресацией на заглушку провайдера, добавляет IP в отдельный список, после чего уже все IP из этого списка через policy-based routing маршрутизируются в поднятый там же vpn. В итоге при первом заходе на сайт вылазит заглушка (которую тот же микротик подменяет на свою), последующие уже идут через vpn.
Ваш вариант на микротике, видимо, не реализовать, а на чем-нибудь посерьезнее, вроде openWRT, может и получится.
Поидее нужны всего три: Apache, nginx, IIS, может быть lighttpd. Остальные встречаются или крайне редко или используются только при разработке.
А куда пропали Tomcat, а также сервера встроенные в node.js, go и другие популярные языки?
PS IIS не парсит заголовки HTTP, этим занимается HTTP.SYS
На счет go и «других попурярных языков», не хочу никого обидеть, но в процентном соотношении их использование в интернете стремится к нулю: https://news.netcraft.com/archives/category/web-server-survey/ или https://trends.builtwith.com/web-server
Поправьте если ошибаюсь.
Поддерживать все и вся, я думаю, у автора не получится, да и не нужно это, думаю оно и так будет работать.
Как знать без статистики? Такие пакеты даже iOS отправляет из некоторых сервисов.
[удалил]
У меня Mi5, он на андроид, у меня есть рут (хотя он в данном случае не нужен) и я пользуюсь своим собственным ВПН, потому что предлагаемое решение на телефоне не работает и работать не может.
Утром нашёл эту статью, протестировал на ПК, потом попытался на телефоне — получил ошибку.
Пересобрал ядро и boot.img, прошил — команды отработали, проверил — всё работает.
Написал скрипт init.d, положил куда надо, перезагрузил смарт — изменения перезагрузку пережили.
Вытащил этот скрипт со смарта в device tree, пересобрал прошивку, прошил полностью — работает.
Так что со всей ответственностью могу заявить — этот способ на Android смартфоне в принципе работоспособен. Если лично у вас не работает — претензии к производителю.
Это не говоря о том, что их европейская утилита, например, на моём Mi5S нормально не заработала — пришлось использовать китайскую версию.
Если пользоваться стандартными туннелями типа впн — то никакой рут не нужен, от слова «вообще». В большинстве случаев достаточно вообще стандартного функционала, встроенного прямо в систему. Надо только подключиться к серверу, лучше к своему собственному. Это не так сложно, как пытаться перекомпилировать ядро прошивки телефона. Это будет работать на любой системе, независимо от провайдера и прочего.
Кстати, выше я вам ответил совсем не на то (мой косяк — отвлекался пока читал его). Так что предмет спора отсутствует.
Если человек не умеет или не знает где/как поднять/найти впн-сервер, он будет пользоваться этой утилитой и разбираться, как ее заставить работать под его провайдером. Если умеет и знает — ему эта утилита не нужна.
Напрягает отключение ipv6.
Lanet, Украина. Блокирует по IP+подменяет DNS.
Провайдер выдает только IPv4 и блокирует, видимо, только IPv4.
По этому ранее был доступ через IPv6 over IPv4 тунель. Яндекс, КиноПоиск и другие (кто имел АААА запись) открывались сразу же, но не ВКонтакте. Для него был FriGate.
Дом.ру вбрасывает пакет с Flags = 0x04 и Window size = 0xfffe
Все подряд ресеты игнорировать нельзя, с высокой вероятностью фальшивые те, что быстро приходят (<10ms) после пакета от нас.
У Zapret'a есть способ без DNSCrypt — игнорить липовые ответы от domru.
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
А тут есть способ сделать также в микротиках.
Я так вижу, что блокировка по IP выполняется мелкими операторами, которые не могут себе позволить потратиться на DPI. Мой домашний провайдер точно блочит по IP. Они сами сказали, когда я переписывался с поддержкой после того, как стал недоступен Хабр и Гик (их IP адреса тоже на какое-то время попали в DNS одного ресурса из списка РКН).
Статья — бомба. Автору огромный респект (жаль, что нет возможности плюсануть пару плюсиков в карму) за техническое разъяснение тонкостей работы DPI.
Всегда интересно было узнать, а как там все блокируется. Оказывается, что много подводных камней в работе DPI и на самом деле это все технические недочеты, на программном уровне, который можно устранить новой прошивкой. Все эти неточности с парсерами и разбивками пакетов — ведь это тоже можно предусмотреть, но тк это провайдерское оборудование, то чуется все это не скоро исправится и можно пользоваться этим обходным путем достаточно долго.
Цензура распространяется потихоньку и на другие страны. Это очень удобный инструмент для политиков. С ней надо бороться.
Я техническими и просветительскими методами борюсь с цензурой.
Технические решения противостоят цензуре здесь и сейчас. Приведите примеры эффективности ваших методов.
Я естественно спрашивал про трактор. Это можно по вашему назвать борьбой с цензурой?
Этим способам 100 лет в обед и не исправили: Изучаем deep packet inspection у RETN 2013г.
Плюс всегда найдётся тщеславный хабражитель, который за бесплатно в комментах десяток способов улучшения DPI накидает, а если его в правильное место палочкой ткнуть, ещё и распишет подробно все что требуется.
В общем случае, считаю детальное техническое обсуждение подобных вещей в паблике — вредным, а людей, таковые заводящие — недальновидными ССЗБ. Ну или дальновидными, смотря за кого играют.
iptables -A FORWARD -p tcp --sport 443 -m u32 --u32 "0x0=0x45000028 && 0x4=0x10000" -m comment --comment "Rostelecom HTTPS" -j DROP
Для настройки оконечного устройства заменить FORWARD на INPUT
Нужно проверять и 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
Но в любом случае — автору программы спасибо! Это решение лучше, чем остальные. (по крайней мере для меня).
Запускаю программу со следующими параметрами (ключи -4 -a).
Block passive: 1, Fragment HTTP: 0, Fragment HTTPS: 0, hoSt: 1, Host no space: 1, Additional space: 1
Нажимаю в браузере обновить страницу — идёт бесконечная загрузка и всё… Дольше 2 минут ждать не стал.
Выключаю программу, ещё раз нажимаю «обновить страницу» — всё ОК. Страница грузится.
[!] Результат:
[] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
Что это означает «из реестра»?
Если сам ip-адрес не заблокирован, то можно попробовать зайти на https://ip-адрес/ и передать нужные заголовки для сайта, например, плагином для firefox Header Tool правилом:
@108.174.10.14
Host:www.linkedin.com
Referer:https://www.linkedin.com
Для удобства, можно придумать себе любой домен и намапить его на адрес заблокированного ресурса в hosts и отредактировать правило header tool'а.
А адреса 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.
Схема обхода государственной цензуры через крышевание доменов, из научной работы 2015 года
Алгоритм действий такой.
- Заходим на sslchecker
- Вводим заблокированный домен
- В поле SAN выбираем рабочий не заблокированный домен
- Проверяем выбранный домен(должен открываться по https)
- Подставляем домены в proxy.pac скрипт соответственно
function FindProxyForURL(url, host)
{
if (host == "[заблокированный домен]" && shExpMatch(url, "http:*"))
return "HTTPS [не блокируемый домен];";
else
return "DIRECT";
}
Данный скрипт сработает для адреса http://[заблокированный домен]
Этот удобнее: Реестр запрещенных сайтов
Но зато у меня сработало разбиение «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
Впрочем, если произойдет потеря пакетов — то при повторных попытках доставки они все равно склеятся несмотря ни на какие отключенные алгоритмы, так что это больше костыль чем решение.
ValdikSS, вы на чем это все компилируете?
Код вообще не рабочий, вы попробуйте его сбилдить с clang.
то есть, вы считаете, что некорректный код, который можно скомпилировать GCC, типа ОК?
нормальный код должен компилироваться и clang, как минимум.
Но вам решать.
P.S.: прочел ваш ответ в issue, все ок.
В стандарте C99 VLA присутствуют, так что код совершенно корректен. То, что его не компилирует clang — это проблема clang. Ну и еще ваша :-)
systemctl start zapretОткуда должен был взяться сервис?
Failed to start zapret.service: Unit zapret.service not found.
Спасибо за интересное исследование. Но у меня осталась пара вопросов после прочтения материала:
- Как вы "фрагментируете" https?
- В статье вообще не освещены механизмы работы DPI с https трафиком. На сколько я понимаю без того, чтобы в DPI был установлен валидный (с точки зрения браузера) сертификат, организовать глубокую инспекцию невозможно, и значит нужно блокировать весь https по IP. Тогда опять же в каких случаях ваше ПО помогает обойти DPI для https?
DPI вычитывает Server Name Indication. Он идёт открытым текстом. Так что сертификат не нужен.
Спасибо! Не думал, что SNI идёт открытым текстом. Хотя это логично было бы предположить.
На сколько я понял будет два серфиката. Один общий а второй конкретного сайта. Общий будет также открыто запрашиватся. А сертификат сайта будет запрашиватся под шифрованием.
Что-то не нашел в драфте RFC упоминание о шифрованном SNI. Только лишь в случае 0RTT-Data, а он работает только в случае переиспользование предыдущей уже установленной сессии. Так как SNI это часть Client Hello, то что-то я не представляю как его можно зашифровать до обмена ключами.
Есть обсуждение: Encrypted SNI
Т.е. защитить доменное имя узла
А в том, что вы предлагаете есть серьезная проблема: 0-rtt используется для восстановления уже установленной сессии. Т.е. когда доверенность узла установлена. В вашем случае, совершенно непонятно с каким узлом было установлено изначальное соединение. Если следовать вашей логике, то это будет сервер, обслуживающий виртуальные сервера возможно даже с абсолютно разными доменами. В случае провайдера виртуального хостинга это будут все сайты его клиентов находящиеся на одной машине. Мне лично абсолютно не хочется доверять всем этим сайтам.
Где вы там про DNS то увидели? Может говорилось что ему тоже нужна защита но разрабатывать её нужно отдельно. Уже сейчас есть DNSCrypt и DNSSEC.
А Encrypted SNI работает так:
- При первом соединении клиент получит сертификат выданный на IP.
- Открывается tls тунель в котором он запрашивает уже целевой сертификат сервера.
- Во втором tls после обмена всеми ключами разрывает соединение и подключается напрямую по 0-rtt.
Пункт 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;";
}
Отдельный вопрос в том, как вообще получить такой доверенный сертификат, который позволяет выдавать сертификаты на любые веб ресурсы.Нужно быть доверенным центром сертификации (Certification authority, CA). Не самое трудное.
производителю DPI в таком случае нужно очень тесно дружить с разработчиками ОС и браузеровСмею предположить, что производителю DPI никогда не позволят использовать корневой сертификат для дешифрации трафика. Сертификат скорее всего отзовут. Подобное было в Китайском Фаерволе (ссылку найти не смог, но есть вот это)
Да, все верно. Но мне кажется, что достаточно проблематично стать таким CA и выдавать сертификаты на любые домены, чтобы при этом сертификат такого CA не заблокировал, например, Google в своём браузере. Производитель браузера может затем и надавить на root CA подписавший такой сертификат. Думаю root CA под угрозой блокировки своего сертификата быстренько отзовет сертификат выданный для CA поставщика DPI решений.
без того, чтобы в DPI был установлен валидный (с точки зрения браузера) сертификат, организовать глубокую инспекцию невозможно, и значит нужно блокировать весь https по IP.
Скорее всего возможно и по домену заблокировать.
Как вы «фрагментируете» https?Так же, как и HTTP — изменением TCP Window Size.
В статье вообще не освещены механизмы работы DPI с https трафиком.Большинство DPI просто проверяют значение TLS SNI, и блокируют по домену.
-p -f 2 -e 40 открывается часть сайтов (flickr.com, например).
Не открывается к примеру archive.org, в т.ч. с параметрами "-1" и "-1 -a" — превышено время ожидания.
WIndows 8.1
Консоль была открыта от пользователя.
В чем может быть проблема?
Ну а дома всё прекрасно «работает» (РТ) — даже с единственным ключом "-p". Пока отлаживал, обнаружил дополнительную блокировку по DNS. Если использовать открытые DNS, то до вывода заглушки дело даже не доходит — host not found. Так что DNScrypt+GoodByDPI.
зы. Осталось потестировать на нагрузке, когда юзеры толпой навалятся на проксик.
EventID: 23474
Forefront TMG обнаружил фильтры WFP, которые могут стать причиной конфликтов политик на сервере XXXX. Следующие поставщики могут предоставлять фильтры, конфликтующие с политикой межсетевого экрана Forefront TMG: провайдер(ы) без имени.
В остальном отклонений в работе не выявлено.
Интересно, а его можно перенести с компьютера на роутер или на отдельный сервер? Чтобы работало не на единственном компьютере, а на всех устройствах в сети.
А про тип NAT не скажу, не знаю, но он есть, провайдер выдает только серые ip. Как это можно узнать?
$ 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
А вообще часто провайдеры так делают, в смысле блокируют не только исходящий трафик, но и входящий?
-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.
Пробуем способ «фрагментирование заголовка, 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 никак.
Для получения корректных результатов используйте 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 все же работает.
Просто хрестоматийное лицемерие.
на большинстве томато роутерах на arm с ним сложности:
x_tables: ip_tables: u32.0 match: invalid size 2032 (kernel) != (user) 1984
iptables -A INPUT --protocol TCP -i eth0 --sport 80 -m ttl --ttl-eq 62 -j DROP
От меня до провайдерского дпи be101.tf01.Moscow.gldn.net ровно два хопа. Это меньше, чем до любого другого сайта, правда, есть сайты, которые ставят изначальный ttl больше 64, и тут можно перебдеть. Но таких мало.
Ещё списочек годных сайтов с картинками собирает.
Кстати, кто подскажет, отчего так: набираю rutracker.org./ а firefox лишнюю точку… убирает. С другими сайтами такого нет. Непонятно.
Это сам рутрекер перенаправляет на форум используя полный адрес без точки. Если её добавить после перенаправления то она останется.
Как же плохие дороги не забытьДороги… Дороги вообще уберём. Меньше машин — больше велосипедистов. Город — людям!
Больше пиара способам обхода блокировок — больше вероятность исправления этих способов. И я не понимаю, чего все так радуются этой статье.
Технически да, интересно, хотя в целом это и так было известно. Программа вида "просто скачай, запусти и работает" — плохо. Хотите сами пользоваться и подольше — лучше пользоваться тихо и не шуметь, и надеяться что у остальных пользователей тоже хватит ума не пиарить данную технологию. Хотите чтобы для всех — тут путь только законодательный есть (да, сложно стать тем кто влияет на законодательство, но всё остальное — вообще бесполезные или даже вредные действия в этом плане).
Сейчас опять скажу не популярную вещь, но я согласен с предыдущим товарищем. Да, мы тоже мониторим различные форумы, в которых пишут что и как у нас можно сломать или как добыть немного бесплатного интернета. И таки-да, мы закрываем дыры и боремся с фродом. Если бы люди просто пользовались бы по-тихому, то мы могли бы и не заметить.
В данном конкретном случае, не думаю, что ПО "Ревизор" научат проверять возможно ли описанным способом обходить блокировки или нет. Соответственно, DPI-и скорее всего дорабатывать не будут (зачем тратить бабки...). Только в случае если будут сформулированы конкретные технические требования к DPI и ВСЕХ операторов заставят купить "решение", ну скажем у Ростеха, тогда — Да.
[!] Результат:
[] Ваш провайдер подменяет HTTPS-сертификат на свой для сайтов из реестра.
[] У вашего провайдера «обычный» DPI. Вам поможет HTTPS/Socks прокси, VPN или Tor.
Для получения корректных результатов используйте 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)
Эта версия должна работать с некоторыми провайдерами, с которыми раньше GoodbyeDPI не работал.
Если на вашем провайдере тесты DPI в Blockcheck показывали, что DPI можно обойти, но GoodbyeDPI не справлялся, попробуйте обновленную версию.
Перестал открываться rutracker.org, думаю, что и остальные заблокированные сайты, не проверял.
Запускаю с ключами -4 -a (смена ключа с 1 до 4 тоже не помогает)
v.0.1.5rc1
в файле /etc/sysctl.conf прописал:
net.core.rmem_max=10
Однако, думаю, что мне не хватает больше знаний, как установить tcp window size именно для пакета ack/syn, содержащего TLS ClientHello. И вообще, в правильном ли направлении я двигаюсь? Что можете сказать по поводу этого?
Что можете сказать по поводу этого?Скажу, что провайдеры заблокируют ваш сервер по IP-адресу через несколько дней, поскольку он станет открываться через системы проверки блокировок Ревизор. Провайдеру начнут приходить об этом уведомления, и, потенциально, штрафы. Не делайте так.
Если мне понравится ваш сайт, могу рассказать о более эффективных методах серверного обхода блокировки и их корректной реализации.
Наступил тут на грабли.
Сочетание GoodbyeDPI с расшаренным интернетом на сервере (Windows, штатный общий доступ) приводит к тому что на подключенных клиентах этот самый расшаренный инет работает только через TOR.
Также ни к чему хорошему не приводит сочетание GoodbyeDPI с продуктами Kaspersky - Secure Connection просто падает соединение периодично, и соответственно сайты перестают работать вообще, бесплатный антивирус (Kaspersky Free/Cloud) периодически орет об атаке извне, и также сайты перестают открываться.
@ValdikSS известно ли Вам о подобных приколах и есть ли готовые решения или набор параметров программы, чтобы всё нормально сочеталось? И нет ли способа чтобы программа вообще никак не вмешивалась в локальный трафик и трафик через виртуальные линки (к впн например) ? Или оно и так не вмешивается и я просто не верно интерпретирую причины почему всё ломается ?
с расшаренным интернетом на сервере
Насколько я понял, провайдер детектит "расшаренный интернет" по уменьшенному TTL в заголовках пакетов. Если его через iptables
подправить, то он не заметит.
Не, не тот случай. Пока на сервере не используется сабжевая программа - интернет раздается нормально. как только включаю - на сервере инет продолжает работать как и раньше, на клиенте - DHCP отрабатывает, TOR работает, а вот иные методы штатного взаимодействия с инетом (браузеры, программа удаленного управления) - не работают примерно никак. Настройки по умолчанию приложенным батником, сервис + днсредир.
Сдаётся мне, что ваш ReQrypt можно весьма эффективно использовать для DDoS атак весьма очевидным образом.
Если уж вытащили эту статью из чулана, то можно разъяснить, что за данные собираются рекомендуемой в ней программой Blockcheck путём отсылки на сервер prostovpn.org в 1092 строке файла blockcheck.py, причём этот сбор данных в readme настоятельно рекомендуется отключать гражданам Украины?
вообще можно и самому различия посмотреть, благо гитхаб это пока ещё позволяет сделать.
Это не отвечает на вопрос, с какой целью данные пользователя отсылаются на сервер, причём раздельно по мастер-версии и Украине.
Ну очевидно же — собрать статистику по блокировкам. А раздельно — потому что статистика нужна раздельная, всё-таки разные ведомства блокируют по разным причинам.
потому что статистика нужна раздельная, всё-таки разные ведомства блокируют по разным причинам.
Вы бы не могли прояснить технический смысл процитированного соображения? Фильтру пакетов не всё ли равно, какое ведомство их блокирует и по каким причинам? Не говоря уж о том, зачем ему вообще статистика?
Единственное объяснение раздельного сбора статистики, которое мне приходит на ум – в том, что за список людей, применяющих программы для обхода блокировок на территории Украины платёжеспособный спрос гипотетически возможен со стороны украинских правоохранительных органов (секретарь СНБО Данилов прямо заявлял об учёте таких пользователей), а на территории России – гипотетически возможен со стороны российских. Конечно, я не утверждаю, что причины именно такие, и возможно, есть какие-то другие соображения. Но в народе не зря обращают внимание, что в варезе часто попадаются недокументированные функции. И если орган безопасности заявляет о внедрении технических средств сбора статистики о нарушителях, а предлагаемая к распространению свободная программа, по странному совпадению, именно эту функцию и выполняет, то нет ли здесь какой-то связи?
Э-э-э, погодите, где вы тут вообще увидели сбор информации о пользователях? Скрипт собирает информацию о провайдерах.
Вы бы не могли прояснить технический смысл процитированного соображения? Фильтру пакетов не всё ли равно, какое ведомство их блокирует и по каким причинам?
В России и на Украине используются разные фильтры пакетов, работающие на разном оборудовании от разных производителей.
У инструментов для обхода блокировок нет задачи обойти произвольную блокировку (ну, может задача-то и есть такая, только вот решения нет); обходятся всегда конкретные способы блокировок. Которые в разных странах отличаются.
Э-э-э, погодите, где вы тут вообще увидели сбор информации о пользователях? Скрипт собирает информацию о провайдерах.
Наиболее ценная информация из того, что собирает скрипт – это то, что пользователь с конкретного 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 есть еще и другие)
это разные способц
…
и эта информация нужна для совершенствования способов обхода и анализа как именно в каких странах это делают.
А если СНБО/ФСБ сливать… так смотрим что ЕЩЕ автор пишет :). Есть ж антизапрет :), там не то что скрипт про тестирование способов обхода — там еще и использование обхода, еще и с конкретными сайтами и временем, это еще ценнее.
Судя по коду, эта программа ходит по списку доменов (который есть в начале файла) и проверяет заблокированы ли они, и если да — то каким образом. Результат этих проверок как раз и отправляется.
Гражданам Украины (на самом деле всем кто там находится независимо от гражданства) этот сбор данных рекомендуется отключать чтобы не забивать статистику блокировок по России нерелевантной информацией.
Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу