mirror of
https://github.com/bol-van/zapret.git
synced 2024-11-30 05:50:53 +03:00
Compare commits
9 Commits
4374ca2290
...
a585d09c03
Author | SHA1 | Date | |
---|---|---|---|
|
a585d09c03 | ||
|
7f4356aa7e | ||
|
773da6383b | ||
|
07cd46bf90 | ||
|
c07fe4225a | ||
|
086a0e4408 | ||
|
b28447e796 | ||
|
cff12dd431 | ||
|
cbba8a7876 |
@ -1,11 +1,15 @@
|
|||||||
Специально для тех, кто хочет побыстрее начать, но не хочет слишком углубляться в простыню readme.txt.
|
# Windows quick start
|
||||||
|
|
||||||
Как обычно, компьютерная грамотность ложится полностью на вас.
|
Специально для тех, кто хочет побыстрее начать, но не хочет слишком углубляться в простыню [readme.md](./readme.md).
|
||||||
Вы должны уметь работать с консолью windows и иметь минимальные навыки обращения с командными файлами bat,cmd.
|
> [!CAUTION]
|
||||||
Если грамотность отсутствует и возникает куча "как" на базовых вещах, значит эта программа не для вас.
|
> Как обычно, компьютерная грамотность ложится полностью на вас.
|
||||||
Разработчик не будет отвечать на вопросы из серии школы компьютерной грамотности.
|
> Вы должны уметь работать с консолью windows и иметь минимальные навыки обращения с командными файлами `bat`, `cmd`.
|
||||||
Если вы все-таки хотите продолжать, задавайте вопросы в дискуссиях на github или на форумах.
|
> Если грамотность отсутствует и возникает куча _"как?"_ на базовых вещах, значит эта программа не для вас.
|
||||||
Возможно, кто-то вам поможет. Но не надо писать issue на github. Они будут закрываться сразу.
|
> Разработчик не будет отвечать на вопросы из серии школы компьютерной грамотности.
|
||||||
|
> Если вы все-таки хотите продолжать, задавайте вопросы в дискуссиях на github или на форумах.
|
||||||
|
> Возможно, кто-то вам поможет. Но не надо писать issue на github. Они будут закрываться сразу.
|
||||||
|
|
||||||
|
## Немного разъяснений
|
||||||
|
|
||||||
Обход DPI является хакерской методикой. Под этим словом понимается метод, которому сопротивляется окружающая среда,
|
Обход DPI является хакерской методикой. Под этим словом понимается метод, которому сопротивляется окружающая среда,
|
||||||
которому автоматически не гарантирована работоспособность в любых условиях и на любых ресурсах,
|
которому автоматически не гарантирована работоспособность в любых условиях и на любых ресурсах,
|
||||||
@ -18,32 +22,34 @@
|
|||||||
|
|
||||||
Будем считать, что у вас есть windows 7 или выше. Задача - обойти блокировки с самой системы.
|
Будем считать, что у вас есть windows 7 или выше. Задача - обойти блокировки с самой системы.
|
||||||
|
|
||||||
Есть решение самое простое, а есть "как положено".
|
> [!NOTE]
|
||||||
|
> Есть решение самое простое, а есть "как положено".
|
||||||
|
|
||||||
САМОЕ ПРОСТОЕ РЕШЕНИЕ
|
## САМОЕ ПРОСТОЕ РЕШЕНИЕ
|
||||||
|
|
||||||
Совсем ничего не могу, все очень сложно, дайте мне таблетку.
|
_"Совсем ничего не могу, все очень сложно, дайте мне таблетку."_ ©Простой пользователь
|
||||||
|
|
||||||
Скачайте и распакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip
|
1) Скачайте и распакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip.
|
||||||
Запустите zapret-winws/preset_russia.cmd от имени администратора.
|
2) Запустите `zapret-winws/preset_russia.cmd` от имени администратора. Возможно, заведется сразу.
|
||||||
Возможно, заведется сразу. Этот вариант похож на "2_any_country.cmd" из GoodbyeDPI.
|
|
||||||
|
|
||||||
То же самое с ограничителем по автоматически создаваемому хост-листу preset_russia_autohostlist.cmd.
|
То же самое с ограничителем по автоматически создаваемому хост-листу `preset_russia_autohostlist.cmd`.
|
||||||
Что такое autohostlist - читайте readme.txt. Проще говоря, мы обходим только то, что долго и упорно не хочет открываться.
|
Что такое `autohostlist` - читайте [readme.md](./readme.md). Проще говоря, мы обходим только то, что долго и упорно не хочет открываться.
|
||||||
Сначала не будет, но надо пытаться много раз, и тогда сработает, а дальше будет всегда срабатывать.
|
Сначала не будет, но надо пытаться много раз, и тогда сработает, а дальше будет всегда срабатывать.
|
||||||
Остальное не будет ломаться. Использовать только, если первый вариант тоже работает.
|
Остальное не будет ломаться. Использовать только, если первый вариант тоже работает.
|
||||||
|
|
||||||
Не помогла таблетка ? Это вовсе не значит, что ничего не получится. Но придется делать по-нормальному.
|
Не помогла _"таблетка"_ ? Это вовсе не значит, что ничего не получится. Но придется делать по нормальному.
|
||||||
|
|
||||||
РЕШЕНИЕ "КАК ПОЛОЖЕНО"
|
## РЕШЕНИЕ "КАК ПОЛОЖЕНО"
|
||||||
|
|
||||||
1) Скачайте и распакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip
|
1) Скачайте и распакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip.
|
||||||
|
|
||||||
2) Если у вас Windows 7 x64, читайте docs/windows.txt. Без описанной там подготовки может не работать.
|
2) Если у вас Windows 7 x64, читайте [docs/windows.md](./windows.md). Без описанной там подготовки может не работать.
|
||||||
Для 32-битных систем Windows нет готового полного варианта, но есть собранные бинарники :
|
|
||||||
https://github.com/bol-van/zapret-win32
|
> [!WARNING]
|
||||||
На windows 11 arm64 выполните arm64/install_arm64.cmd от имени администратора и перезагрузите компьютер.
|
> Для 32-битных систем Windows нет готового полного варианта.
|
||||||
Читайте docs/windows.txt
|
|
||||||
|
На windows 11 arm64 выполните `arm64/install_arm64.cmd` от имени администратора и перезагрузите компьютер.
|
||||||
|
Читайте [docs/windows.md](./windows.md)
|
||||||
|
|
||||||
Имейте в виду, что антивирусы могут плохо реагировать на windivert.
|
Имейте в виду, что антивирусы могут плохо реагировать на windivert.
|
||||||
cygwin так же имеет внушительный список несовместимостей с антивирусами, хотя современные антивирусы
|
cygwin так же имеет внушительный список несовместимостей с антивирусами, хотя современные антивирусы
|
||||||
@ -54,15 +60,15 @@ cygwin так же имеет внушительный список несовм
|
|||||||
|
|
||||||
4) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. nat не подходит
|
4) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. nat не подходит
|
||||||
|
|
||||||
5) Запустите blockcheck\blockcheck.cmd. blockcheck в начале проверяет DNS.
|
5) Запустите `blockcheck\blockcheck.cmd`. blockcheck в начале проверяет **DNS**.
|
||||||
Если выводятся сообщения о подмене адресов, то нужно будет решить проблему с DNS.
|
Если выводятся сообщения о подмене адресов, то нужно будет решить проблему с **DNS**.
|
||||||
blockcheck перейдет в этом случае на DoH и будет пытаться получить и использовать реальные IP адреса.
|
blockcheck перейдет в этом случае на **DoH** _(DNS over HTTPS)_ и будет пытаться получить и использовать реальные IP адреса.
|
||||||
Но если вы не настроите решение этой проблемы, обход будет работать только для тех программ,
|
Но если вы не настроите решение этой проблемы, обход будет работать только для тех программ,
|
||||||
которые сами реализуют механизмы SecureDNS. Для других программ обход работать не будет.
|
которые сами реализуют механизмы SecureDNS. Для других программ обход работать не будет.
|
||||||
|
|
||||||
Решение проблемы DNS выходит за рамки проекта. Обычно она решается либо заменой DNS серверов
|
Решение проблемы DNS выходит за рамки проекта. Обычно она решается либо заменой DNS серверов
|
||||||
от провайдера на публичные (1.1.1.1, 8.8.8.8), либо в случае перехвата провайдером обращений
|
от провайдера на публичные (`1.1.1.1`, `8.8.8.8`), либо в случае перехвата провайдером обращений
|
||||||
к сторонним серверам - через специальные средства шифрования DNS запросов, такие как dnscrypt, DoT, DoH.
|
к сторонним серверам - через специальные средства шифрования DNS запросов, такие как [dnscrypt](https://www.dnscrypt.org/), **DoT** _(DNS over TLS)_, **DoH**.
|
||||||
В современных броузерах чаще всего DoH включен по умолчанию, но curl будет использовать обычный системный DNS.
|
В современных броузерах чаще всего DoH включен по умолчанию, но curl будет использовать обычный системный DNS.
|
||||||
win11 поддерживает системные DoH из коробки. Они не настроены по умолчанию.
|
win11 поддерживает системные DoH из коробки. Они не настроены по умолчанию.
|
||||||
В последних билдах win10 существует неофициальный обходной путь для включения DoH.
|
В последних билдах win10 существует неофициальный обходной путь для включения DoH.
|
||||||
@ -71,13 +77,17 @@ win11 поддерживает системные DoH из коробки. Он
|
|||||||
Тут все разжевано как и где это включается : https://hackware.ru/?p=13707
|
Тут все разжевано как и где это включается : https://hackware.ru/?p=13707
|
||||||
|
|
||||||
6) blockcheck позволяет выявить рабочую стратегию обхода блокировок.
|
6) blockcheck позволяет выявить рабочую стратегию обхода блокировок.
|
||||||
Лог скрипта будет сохранен в blockcheck\blockcheck.log.
|
Лог скрипта будет сохранен в `blockcheck\blockcheck.log`.
|
||||||
Запомните найденные стратегии.
|
Запомните/перепишите найденные стратегии.
|
||||||
|
|
||||||
Следует понимать, что blockcheck проверяет доступность только конкретного домена, который вы вводите в начале.
|
> [!WARNING]
|
||||||
Вероятно, все остальные домены блокированы подобным образом, но не факт.
|
> Следует понимать, что blockcheck проверяет доступность только конкретного домена, который вы вводите в начале.
|
||||||
В большинстве случаев можно обьединить несколько стратегий в одну универсальную, и это крайне желательно.
|
> Вероятно, все остальные домены блокированы подобным образом, но не факт.
|
||||||
Необходимо понимать как работают стратегии.
|
|
||||||
|
> [!TIP]
|
||||||
|
> В большинстве случаев можно обьединить несколько стратегий в одну универсальную, и это крайне желательно.
|
||||||
|
|
||||||
|
Необходимо понимать [как работают стратегии](./readme.md/#nfqws).
|
||||||
zapret не может пробить блокировку по IP адресу. Для проверки нескольких доменов вводите их через пробел.
|
zapret не может пробить блокировку по IP адресу. Для проверки нескольких доменов вводите их через пробел.
|
||||||
|
|
||||||
Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у вас может быть несколько маршрутов
|
Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у вас может быть несколько маршрутов
|
||||||
@ -86,8 +96,8 @@ zapret не может пробить блокировку по IP адресу.
|
|||||||
blockcheck не всегда может выдать вам в итогах оптимальную стратегию, которую надо просто переписать в настройки.
|
blockcheck не всегда может выдать вам в итогах оптимальную стратегию, которую надо просто переписать в настройки.
|
||||||
В некоторых случаях надо реально думать что происходит, анализируя результат на разных стратегиях.
|
В некоторых случаях надо реально думать что происходит, анализируя результат на разных стратегиях.
|
||||||
Если вы применяете большой TTL, чтобы достать до магистрала, то не лишним будет добавить дополнительный ограничитель
|
Если вы применяете большой TTL, чтобы достать до магистрала, то не лишним будет добавить дополнительный ограничитель
|
||||||
--dpi-desync-fooling, чтобы не сломать сайты на более коротких дистанциях.
|
`--dpi-desync-fooling`, чтобы не сломать сайты на более коротких дистанциях.
|
||||||
md5sig наиболее совместим, но работатет только на linux серверах.
|
_md5sig_ наиболее совместим, но работатет только на linux серверах.
|
||||||
badseq может работать только на https и не работать на http.
|
badseq может работать только на https и не работать на http.
|
||||||
Чтобы выяснить какие дополнительные ограничители работают, смотрите результат теста аналогичных стратегий без TTL
|
Чтобы выяснить какие дополнительные ограничители работают, смотрите результат теста аналогичных стратегий без TTL
|
||||||
с каждым из этих ограничителей.
|
с каждым из этих ограничителей.
|
||||||
@ -97,85 +107,97 @@ badseq может работать только на https и не работа
|
|||||||
она стабильна, на третьих полный хаос, и проще отказаться.
|
она стабильна, на третьих полный хаос, и проще отказаться.
|
||||||
|
|
||||||
Далее, имея понимание что работает на http, https, quic, нужно сконструировать параметры запуска winws
|
Далее, имея понимание что работает на http, https, quic, нужно сконструировать параметры запуска winws
|
||||||
с использованием мультистратегии. Как работают мультистратегии описано в readme.txt.
|
с использованием мультистратегии. Как работают мультистратегии описано в [readme.md](./readme.md).
|
||||||
|
|
||||||
Прежде всего вам нужно собрать фильтр перехватываемого трафика. Это делается через параметры
|
Прежде всего вам нужно собрать фильтр перехватываемого трафика. Это делается через параметры
|
||||||
--wf-l3, --wf-tcp, --wf-udp.
|
`--wf-l3`, `--wf-tcp`, `--wf-udp`.
|
||||||
--wf-l3 относится к версии ip протокола - ipv4 или ipv6.
|
`--wf-l3` относится к версии ip протокола - ipv4 или ipv6.
|
||||||
--wf-tcp и --wf-udp содержат перечень портов или диапазонов портов через запятую.
|
`--wf-tcp` и `--wf-udp` содержат перечень портов или диапазонов портов через запятую.
|
||||||
|
|
||||||
Пример стандартного фильтра для перехвата http, https, quic : --wf-tcp=80,443 --wf-udp=443
|
Пример стандартного фильтра для перехвата http, https, quic : `--wf-tcp=80,443` `--wf-udp=443`
|
||||||
|
|
||||||
Фильтр должен быть минимально необходимым. Перехват лишнего трафика приведет только к бессмысленному
|
> [!WARNING]
|
||||||
расходованию ресурсов процессора и замедлению интернета.
|
> Фильтр должен быть минимально необходимым. Перехват лишнего трафика приведет только к бессмысленному расходованию ресурсов процессора и замедлению интернета.
|
||||||
|
|
||||||
Если кратко по мультистратегии, то обычно параметры конструируются так :
|
Если кратко по мультистратегии, то обычно параметры конструируются так :
|
||||||
"--filter-udp=443 'параметры для quic' --new
|
```
|
||||||
--filter-tcp=80,443 'обьединенные параметры для http и https'"
|
--filter-udp=443 'параметры для quic' --new
|
||||||
|
--filter-tcp=80,443 'обьединенные параметры для http и https'
|
||||||
|
```
|
||||||
|
|
||||||
Или так :
|
Или так :
|
||||||
"--filter-udp=443 "параметры для quic" --new
|
```
|
||||||
|
--filter-udp=443 'параметры для quic' --new
|
||||||
--filter-tcp=80 'параметры для http' --new
|
--filter-tcp=80 'параметры для http' --new
|
||||||
--filter-tcp=443 'параметры для https'"
|
--filter-tcp=443 'параметры для https'
|
||||||
|
```
|
||||||
|
|
||||||
Если стратегии отличаются по версии ip протокола, и вы не можете их обьединить, фильтр пишется так :
|
Если стратегии отличаются по версии ip протокола, и вы не можете их обьединить, фильтр пишется так :
|
||||||
"--filter-l3=ipv4 --filter-udp=443 "параметры для quic ipv4" --new
|
```
|
||||||
|
--filter-l3=ipv4 --filter-udp=443 "параметры для quic ipv4" --new
|
||||||
--filter-l3=ipv4 --filter-tcp=80 'параметры для http ipv4' --new
|
--filter-l3=ipv4 --filter-tcp=80 'параметры для http ipv4' --new
|
||||||
--filter-l3=ipv4 --filter-tcp=443 'параметры для https ipv4' --new
|
--filter-l3=ipv4 --filter-tcp=443 'параметры для https ipv4' --new
|
||||||
--filter-l3=ipv6 --filter-udp=443 "параметры для quic ipv6" --new
|
--filter-l3=ipv6 --filter-udp=443 "параметры для quic ipv6" --new
|
||||||
--filter-l3=ipv6 --filter-tcp=80 'параметры для http ipv6' --new
|
--filter-l3=ipv6 --filter-tcp=80 "параметры для http ipv6" --new
|
||||||
--filter-l3=ipv6 --filter-tcp=443 'параметры для https ipv6'"
|
--filter-l3=ipv6 --filter-tcp=443 "параметры для https ipv6"
|
||||||
|
```
|
||||||
|
|
||||||
Но здесь совсем "копи-пастный" вариант.
|
Но здесь совсем _"копи-пастный"_ вариант.
|
||||||
Чем больше вы обьедините стратегий и сократите их общее количество, тем будет лучше.
|
Чем больше вы обьедините стратегий и сократите их общее количество, тем будет лучше.
|
||||||
|
|
||||||
Если вам не нужно дурение отдельных протоколов, лучше всего будет их убрать из системы перехвата трафика через
|
Если вам не нужно дурение отдельных протоколов, лучше всего будет их убрать из системы перехвата трафика через
|
||||||
параметры --wf-* и убрать соответствующие им профили мультистратегии.
|
параметры `--wf-*` и убрать соответствующие им профили мультистратегии.
|
||||||
tcp 80 - http, tcp 443 - https, udp 443 - quic.
|
tcp 80 - http, tcp 443 - https, udp 443 - quic.
|
||||||
|
|
||||||
Если используются методы нулевой фазы десинхронизации (--mss, --wssize, --dpi-desync=syndata) и фильтрация hostlist,
|
Если используются методы нулевой фазы десинхронизации (`--mss`, `--wssize`, `--dpi-desync=syndata`) и фильтрация hostlist,
|
||||||
то все параметры, относящиеся к этим методам, следует помещать в отдельные профили мультистратегии, которые получат
|
то все параметры, относящиеся к этим методам, следует помещать в отдельные профили мультистратегии, которые получат
|
||||||
управление до определения имени хоста. Необходимо понимать алгоритм работы мультистратегий.
|
управление до определения имени хоста. Необходимо понимать алгоритм работы мультистратегий.
|
||||||
|
|
||||||
"--filter-tcp=80 'параметры для http' --new
|
```
|
||||||
|
--filter-tcp=80 'параметры для http' --new
|
||||||
--filter-tcp=443 'параметры для https' --hostlist=d:/users/user/temp/list.txt --new
|
--filter-tcp=443 'параметры для https' --hostlist=d:/users/user/temp/list.txt --new
|
||||||
--filter-tcp=443 --wssize 1:6"
|
--filter-tcp=443 --wssize 1:6
|
||||||
|
```
|
||||||
|
|
||||||
autohostlist профиль приоритетен, поэтому wssize нужно писать туда :
|
autohostlist профиль приоритетен, поэтому wssize нужно писать туда :
|
||||||
|
|
||||||
"--filter-tcp=80 'параметры для http' --new
|
```
|
||||||
--filter-tcp=443 'параметры для https' --wssize 1:6 --hostlist-auto=d:/users/user/temp/autolist.txt"
|
--filter-tcp=80 'параметры для http' --new
|
||||||
|
--filter-tcp=443 'параметры для https' --wssize 1:6 --hostlist-auto=d:/users/user/temp/autolist.txt
|
||||||
|
```
|
||||||
|
|
||||||
В этих примерах wssize будет применяться всегда к порту tcp 443, а хостлист будет игнорироваться.
|
В этих примерах wssize будет применяться всегда к порту tcp 443, а хостлист будет игнорироваться.
|
||||||
К http применять wssize вредно и бессмысленно.
|
К http применять wssize вредно и бессмысленно.
|
||||||
|
|
||||||
7) Протестируйте найденные стратегии на winws. winws следует брать из zapret-winws.
|
7) Протестируйте найденные стратегии на winws. Winws следует брать из zapret-winws.
|
||||||
Для этого откройте командную строку windows от имени администратора в директории zapret-winws.
|
Для этого откройте командную строку windows от имени администратора в директории zapret-winws.
|
||||||
Проще всего это сделать через _CMD_ADMIN.cmd. Он сам поднимет права и зайдет в нужную директорию.
|
Проще всего это сделать через `_CMD_ADMIN.cmd`. Он сам поднимет права и зайдет в нужную директорию.
|
||||||
|
|
||||||
8) Обеспечьте удобную загрузку обхода блокировок.
|
8) Обеспечьте удобную загрузку обхода блокировок.
|
||||||
|
|
||||||
Есть 2 варианта. Ручной запуск через ярлык или автоматический при старте системы, вне контекста текущего пользователя.
|
Есть 2 варианта. Ручной запуск через ярлык или автоматический при старте системы, вне контекста текущего пользователя.
|
||||||
Последний вариант разделяется на запуск через планировщик задач и через службы windows.
|
Последний вариант разделяется на запуск через планировщик задач и через службы windows.
|
||||||
|
|
||||||
Если хотите ручной запуск, скопируйте preset_russia.cmd в preset_my.cmd и адаптируйте его под ваши параметра запуска.
|
Если хотите ручной запуск, скопируйте `preset_russia.cmd` в `preset_my.cmd` (`<ваше_название>.cmd`) и адаптируйте его под ваши параметра запуска.
|
||||||
Потом можно создать ярлык на рабочем столе на preset_my.cmd. Не забудьте, что требуется запускать от имени администратора.
|
Потом можно создать ярлык на рабочем столе на `preset_my.cmd`. Не забудьте, что требуется запускать от имени администратора.
|
||||||
|
|
||||||
Но лучше будет сделать неинтерактивный автоматический запуск вместе с системой.
|
Но лучше будет сделать неинтерактивный автоматический запуск вместе с системой.
|
||||||
В zapret-winws есть командные файлы task_*, предназначенные для управления задачами планировщика.
|
В zapret-winws есть командные файлы `task_*`, предназначенные для управления задачами планировщика.
|
||||||
Там следует поменять содержимое переменной WINWS1 на свою стратегию.
|
Там следует поменять содержимое переменной `WINWS1` на свою стратегию.
|
||||||
Если вы не можете обьединить несколько стратегий для разных протоколов в одну, дублируйте код в каждом из cmd
|
Если вы не можете обьединить несколько стратегий для разных протоколов в одну, дублируйте код в каждом из cmd
|
||||||
для поддержки нескольких задач : winws1,winws2,winws3.
|
для поддержки нескольких задач : _winws1_, _winws2_, _winws3_.
|
||||||
После создания задач запустите их. Проверьте, что обход встает после перезагрузки windows.
|
После создания задач запустите их. Проверьте, что обход встает после перезагрузки windows.
|
||||||
|
|
||||||
Аналогично настраиваются и службы windows. Смотрите service_*.cmd
|
Аналогично настраиваются и службы windows. Смотрите `service_*.cmd`
|
||||||
|
|
||||||
9) Если ломаются отдельные незаблокированные ресурсы, нужно пользоваться ограничивающим
|
9) Если ломаются отдельные незаблокированные ресурсы, нужно пользоваться ограничивающим
|
||||||
ipset или хост листом. Читайте основной талмуд readme.txt ради подробностей.
|
ipset или хост листом. Читайте основной талмуд [readme.md](./readme.md) ради подробностей.
|
||||||
Но еще лучше будет подбирать такие стратегии, которые ломают минимум.
|
Но еще лучше будет подбирать такие стратегии, которые ломают минимум.
|
||||||
Есть стратегии довольно безобидные, а есть сильно ломающие, которые подходят только для точечного пробития отдельных ресурсов,
|
Есть стратегии довольно безобидные, а есть сильно ломающие, которые подходят только для точечного пробития отдельных ресурсов,
|
||||||
когда ничего лучше нет. Хорошая стратегия может сильно ломать из-за плохо подобранных ограничителей для фейков - ttl, fooling.
|
когда ничего лучше нет. Хорошая стратегия может сильно ломать из-за плохо подобранных ограничителей для фейков - ttl, fooling.
|
||||||
|
|
||||||
Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея.
|
> [!CAUTION]
|
||||||
В некоторых случаях вы не обойдетесь без знаний и основного "талмуда".
|
> Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея.
|
||||||
Подробности и полное техническое описание расписаны в readme.txt
|
> В некоторых случаях вы не обойдетесь без знаний и основного "талмуда".
|
||||||
|
|
||||||
|
Подробности и полное техническое описание расписаны в [readme.md](./readme.md)
|
@ -1,8 +1,46 @@
|
|||||||
# Multilanguage README
|
# zapret v.67
|
||||||
|
|
||||||
|
# Multilanguage/Мультиязычный README
|
||||||
___
|
___
|
||||||
[![en](https://img.shields.io/badge/lang-en-red.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.en.md)
|
[![en](https://img.shields.io/badge/lang-en-red.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.en.md)
|
||||||
[![ru](https://img.shields.io/badge/lang-ru-green.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.md)
|
[![ru](https://img.shields.io/badge/lang-ru-green.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.md)
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
- [What is it for](#what-is-it-for)
|
||||||
|
- [How it works](#how-it-works)
|
||||||
|
- [How to put this into practice in the linux system](#how-to-put-this-into-practice-in-the-linux-system)
|
||||||
|
- [ip6tables](#ip6tables)
|
||||||
|
- [nftables](#nftables)
|
||||||
|
- [When it will not work](#when-it-will-not-work)
|
||||||
|
- [nfqws](#nfqws)
|
||||||
|
- [DPI desync attack](#dpi-desync-attack)
|
||||||
|
- [DPI desync combos](#dpi-desync-combos)
|
||||||
|
- [SYNACK mode](#synack-mode)
|
||||||
|
- [SYNDATA mode](#syndata-mode)
|
||||||
|
- [Virtual Machines](#virtual-machines)
|
||||||
|
- [CONNTRACK](#conntrack)
|
||||||
|
- [Reassemble](#reassemble)
|
||||||
|
- [UDP support](#udp-support)
|
||||||
|
- [IP fragmentation](#ip-fragmentation)
|
||||||
|
- [multiple strategies](#multiple-strategies)
|
||||||
|
- [tpws](#tpws)
|
||||||
|
- [multiple strategies](#multiple-strategies-1)
|
||||||
|
- [Ways to get a list of blocked IP](#ways-to-get-a-list-of-blocked-ip)
|
||||||
|
- [Domain name filtering](#domain-name-filtering)
|
||||||
|
- [**autohostlist** mode](#autohostlist-mode)
|
||||||
|
- [Choosing parameters](#choosing-parameters)
|
||||||
|
- [Screwing to the firewall control system or your launch system](#screwing-to-the-firewall-control-system-or-your-launch-system)
|
||||||
|
- [Installation](#installation)
|
||||||
|
- [Checking ISP](#checking-isp)
|
||||||
|
- [desktop linux system](#desktop-linux-system)
|
||||||
|
- [OpenWRT](#openwrt)
|
||||||
|
- [Android](#android)
|
||||||
|
- [FreeBSD, OpenBSD, MacOS](#freebsd-openbsd-macos)
|
||||||
|
- [Windows (WSL)](#windows-wsl)
|
||||||
|
- [Other devices](#other-devices)
|
||||||
|
- [Donations](#donations)
|
||||||
|
***
|
||||||
|
|
||||||
## What is it for
|
## What is it for
|
||||||
|
|
||||||
@ -155,7 +193,7 @@ follows all standards. For example, we are routed to squid. Connection goes thro
|
|||||||
## nfqws
|
## nfqws
|
||||||
|
|
||||||
This program is a packet modifier and a NFQUEUE queue handler.
|
This program is a packet modifier and a NFQUEUE queue handler.
|
||||||
For BSD systems there is dvtws. Its built from the same source and has almost the same parameters (see bsd.en.md).
|
For BSD systems there is dvtws. Its built from the same source and has almost the same parameters (see [bsd.en.md](./bsd.en.md)).
|
||||||
nfqws takes the following parameters:
|
nfqws takes the following parameters:
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -1280,11 +1318,11 @@ Now its possible to run `/data/local/tmp/zapret/tpws` from any app such as taske
|
|||||||
|
|
||||||
### FreeBSD, OpenBSD, MacOS
|
### FreeBSD, OpenBSD, MacOS
|
||||||
|
|
||||||
see docs/bsd.en.md
|
see [docs/bsd.en.md](./bsd.en.md)
|
||||||
|
|
||||||
### Windows (WSL)
|
### Windows (WSL)
|
||||||
|
|
||||||
see docs/windows.en.md
|
see [docs/windows.en.md](./windows.en.md)
|
||||||
|
|
||||||
### Other devices
|
### Other devices
|
||||||
|
|
||||||
@ -1314,4 +1352,5 @@ If this is the case then run another script in background and add some delay the
|
|||||||
Are welcome here :
|
Are welcome here :
|
||||||
|
|
||||||
<img src=https://cdn-icons-png.flaticon.com/16/14446/14446252.png alt="USDT" style="vertical-align: middle;"/> USDT 0x3d52Ce15B7Be734c53fc9526ECbAB8267b63d66E
|
<img src=https://cdn-icons-png.flaticon.com/16/14446/14446252.png alt="USDT" style="vertical-align: middle;"/> USDT 0x3d52Ce15B7Be734c53fc9526ECbAB8267b63d66E
|
||||||
|
|
||||||
<img src=https://cdn-icons-png.flaticon.com/16/5968/5968260.png alt="USDT" style="vertical-align: middle;"/> BTC bc1qhqew3mrvp47uk2vevt5sctp7p2x9m7m5kkchve
|
<img src=https://cdn-icons-png.flaticon.com/16/5968/5968260.png alt="USDT" style="vertical-align: middle;"/> BTC bc1qhqew3mrvp47uk2vevt5sctp7p2x9m7m5kkchve
|
||||||
|
@ -66,7 +66,7 @@ VPN.
|
|||||||
|
|
||||||
> *Linux/openwrt:* [docs/quick_start.txt](./quick_start.txt)
|
> *Linux/openwrt:* [docs/quick_start.txt](./quick_start.txt)
|
||||||
>
|
>
|
||||||
>*Windows:* [docs/quick_start_windows.txt](./quick_start_windows.txt)
|
>*Windows:* [docs/quick_start_windows.md](./quick_start_windows.md)
|
||||||
|
|
||||||
## Как это работает
|
## Как это работает
|
||||||
|
|
||||||
@ -305,7 +305,7 @@ dvtws, собираемый из тех же исходников (см. [bsd.tx
|
|||||||
--new ; начало новой стратегии (новый профиль)
|
--new ; начало новой стратегии (новый профиль)
|
||||||
--filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии
|
--filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии
|
||||||
--filter-tcp=[~]port1[-port2]|* ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. установка фильтра tcp и неустановка фильтра udp запрещает udp. поддерживается список через запятую.
|
--filter-tcp=[~]port1[-port2]|* ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. установка фильтра tcp и неустановка фильтра udp запрещает udp. поддерживается список через запятую.
|
||||||
--filter-udp=[~]port1[-port2]|* ; фильтр портов udp для текущей стратегии. ~ означает инверсию. установка фильтра udp и неустановка фильтра tcp запрещает udp. поддерживается список через запятую.
|
--filter-udp=[~]port1[-port2]|* ; фильтр портов udp для текущей стратегии. ~ означает инверсию. установка фильтра udp и неустановка фильтра tcp запрещает tcp. поддерживается список через запятую.
|
||||||
--filter-l7=[http|tls|quic|wireguard|dht|unknown] ; фильтр протокола L6-L7. поддерживается несколько значений через запятую.
|
--filter-l7=[http|tls|quic|wireguard|dht|unknown] ; фильтр протокола L6-L7. поддерживается несколько значений через запятую.
|
||||||
--ipset=<filename> ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
--ipset=<filename> ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
||||||
--ipset-exclude=<filename> ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
--ipset-exclude=<filename> ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
||||||
@ -1533,12 +1533,12 @@ NFQWS_UDP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD))
|
|||||||
NFQWS_UDP_PKT_IN=0
|
NFQWS_UDP_PKT_IN=0
|
||||||
```
|
```
|
||||||
|
|
||||||
Есть трафик, исходящий сеанс для которого необходимо перенаправлять весь без ограничителей
|
***Задать порты для перенаправления на nfqws без connbytes ограничителя***\
|
||||||
типичное применение - поддержка http keepalives на stateless DPI
|
Есть трафик, исходящий сеанс для которого необходимо перенаправлять весь без ограничителей.
|
||||||
это существенно нагружает процессор. использовать только если понимаете зачем. чаще всего это не нужно.
|
Типичное применение - поддержка http keepalives на stateless DPI.
|
||||||
входящий трафик ограничивается по connbytes через параметры PKT_IN
|
Это существенно нагружает процессор. Использовать только если понимаете зачем. Чаще всего это не нужно.
|
||||||
задать порты для перенаправления на nfqws без connbytes ограничителя
|
Входящий трафик ограничивается по connbytes через параметры PKT_IN.
|
||||||
если указываете здесь какие-то порты, желательно их убрать из версии с connbytes ограничителем
|
Если указываете здесь какие-то порты, желательно их убрать из версии с connbytes ограничителем
|
||||||
```
|
```
|
||||||
NFQWS_PORTS_TCP_KEEPALIVE=80
|
NFQWS_PORTS_TCP_KEEPALIVE=80
|
||||||
NFQWS_PORTS_UDP_KEEPALIVE=
|
NFQWS_PORTS_UDP_KEEPALIVE=
|
||||||
@ -2058,7 +2058,7 @@ curl: (7) Failed to connect to www.ru port 80: Host is unreachable
|
|||||||
|
|
||||||
## Windows
|
## Windows
|
||||||
|
|
||||||
Описано в [docs/windows.txt](./windows.txt)
|
Описано в [docs/windows.md](./windows.md)
|
||||||
|
|
||||||
|
|
||||||
## Другие прошивки
|
## Другие прошивки
|
||||||
|
@ -1,55 +1,68 @@
|
|||||||
tpws
|
# Windows
|
||||||
----
|
|
||||||
|
|
||||||
Запуск tpws возможен только в Linux варианте под WSL.
|
## tpws
|
||||||
|
|
||||||
|
Запуск tpws возможен только в Linux варианте под **WSL** _(Windows Subsystem for Linux)_.
|
||||||
Нативного варианта под Windows нет, поскольку он использует epoll, которого под windows не существует.
|
Нативного варианта под Windows нет, поскольку он использует epoll, которого под windows не существует.
|
||||||
|
|
||||||
tpws в режиме socks можно запускать под более-менее современными билдами windows 10 и windows server
|
tpws в режиме socks можно запускать под более-менее современными билдами windows 10 и windows server
|
||||||
с установленным WSL. Совсем не обязательно устанавливать дистрибутив убунту, как вам напишут почти в каждой
|
с установленным WSL. Совсем не обязательно устанавливать дистрибутив убунту, как вам напишут почти в каждой
|
||||||
статье про WSL, которую вы найдете в сети. tpws - статический бинарик, ему дистрибутив не нужен.
|
статье про WSL, которую вы найдете в сети. tpws - статический бинарик, ему дистрибутив не нужен.
|
||||||
|
|
||||||
Установить WSL : dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all
|
Установить WSL :
|
||||||
Скопировать на целевую систему binaries/x86_64/tpws_wsl.tgz.
|
`dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all`
|
||||||
Выполнить : wsl --import tpws "%USERPROFILE%\tpws" tpws_wsl.tgz
|
|
||||||
Запустить : wsl -d tpws --exec /tpws --uid=1 --no-resolve --socks --bind-addr=127.0.0.1 --port=1080 <параметры_дурения>
|
|
||||||
Прописать socks 127.0.0.1:1080 в броузер или другую программу.
|
|
||||||
|
|
||||||
Удаление : wsl --unregister tpws
|
Скопировать на целевую систему `binaries/x86_64/tpws_wsl.tgz`.
|
||||||
|
|
||||||
Проверено на windows 10 build 19041 (20.04).
|
Выполнить :
|
||||||
|
`wsl --import tpws "%USERPROFILE%\tpws" tpws_wsl.tgz`
|
||||||
|
|
||||||
Не работают функции --oob и --mss из-за ограничений реализации WSL.
|
Запустить :
|
||||||
--disorder не работает из-за особенностей tcp/ip стека windows.
|
`wsl -d tpws --exec /tpws --uid=1 --no-resolve --socks --bind-addr=127.0.0.1 --port=1080 <параметры_дурения>`
|
||||||
Может не срабатывать детект RST в autohostlist.
|
|
||||||
WSL может глючить со splice, приводя к зацикливанию процесса. Может потребоваться --nosplice.
|
Прописать socks `127.0.0.1:1080` в браузер или другую программу.
|
||||||
Не поддерживается tcp user timeout.
|
|
||||||
Чтобы избавиться от исообщений об ошибке добавляйте "--local-tcp-user-timeout=0 --remote-tcp-user-timeout=0".
|
Удаление : `wsl --unregister tpws`
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Проверено на windows 10 build 19041 (20.04).
|
||||||
|
|
||||||
|
Возможные проблемы:
|
||||||
|
- Не работают функции `--oob` и `--mss` из-за ограничений реализации WSL.
|
||||||
|
`--disorder` не работает из-за особенностей tcp/ip стека windows.
|
||||||
|
|
||||||
|
- Может не срабатывать детект RST в autohostlist.
|
||||||
|
|
||||||
|
- WSL может глючить со splice, приводя к зацикливанию процесса. Может потребоваться `--nosplice`.
|
||||||
|
|
||||||
|
- Не поддерживается tcp user timeout.
|
||||||
|
Чтобы избавиться от сообщений об ошибке добавляйте :
|
||||||
|
`--local-tcp-user-timeout=0 --remote-tcp-user-timeout=0`.
|
||||||
Эти сообщения только информативные, на работу они не влияют.
|
Эти сообщения только информативные, на работу они не влияют.
|
||||||
|
|
||||||
|
## winws
|
||||||
winws
|
|
||||||
-----
|
|
||||||
|
|
||||||
Это вариант пакетного фильтра nfqws для Windows, построенный на базе windivert.
|
Это вариант пакетного фильтра nfqws для Windows, построенный на базе windivert.
|
||||||
Все функции работоспособны, однако функционал ipset отсутствует. Фильтры по большому количеству IP адресов невозможны.
|
Все функции работоспособны, однако функционал ipset в ядре отсутствует. Он реализован в user mode. Фильтры по большому количеству IP адресов невозможны.
|
||||||
Работа с проходящим трафиком, например в случае "расшаривания" соединения, не проверялась и не гарантируется.
|
Работа с проходящим трафиком, например в случае "расшаривания" соединения, не проверялась и не гарантируется.
|
||||||
Для работы с windivert требуются права администратора.
|
Для работы с windivert требуются права администратора.
|
||||||
Специфические для unix параметры, такие как --uid, --user и тд, исключены. Все остальные параметры аналогичны nfqws и dvtws.
|
Специфические для unix параметры, такие как `--uid`, `--user` и тд, исключены. Все остальные параметры аналогичны nfqws и dvtws.
|
||||||
|
|
||||||
Работа с пакетным фильтром основана на двух действиях.
|
Работа с пакетным фильтром основана на двух действиях :
|
||||||
Первое - выделение перенаправляемого трафика в режиме ядра и передача его пакетному фильтру в user mode.
|
1) Выделение перенаправляемого трафика в режиме ядра и передача его пакетному фильтру в user mode.
|
||||||
Второе - собственно обработка перенаправленных пакетов в пакетном фильтре.
|
2) Собственно обработка перенаправленных пакетов в пакетном фильтре.
|
||||||
|
|
||||||
В windows отсутствуют встроенные средства для перенаправления трафика, такие как iptables, nftables, pf или ipfw.
|
В windows отсутствуют встроенные средства для перенаправления трафика, такие как _iptables_, _nftables_, _pf_ или _ipfw_.
|
||||||
Поэтому используется сторонний драйвер ядра windivert. Он работает, начиная с windows 7. На системах с включенным
|
Поэтому используется сторонний драйвер ядра windivert. Он работает, начиная с windows 7. На системах с включенным
|
||||||
secure boot могут быть проблемы из-за подписи драйвера. В этом случае отключите secureboot или включите режим testsigning.
|
secure boot могут быть проблемы из-за подписи драйвера. В этом случае отключите `secureboot` или включите режим `testsigning`.
|
||||||
На windows 7 вероятно будут проблемы с загрузкой windivert. Читайте ниже соответствующий раздел.
|
На windows 7, вероятно, будут проблемы с загрузкой windivert. Читайте ниже соответствующий раздел.
|
||||||
|
|
||||||
Задача iptables в winws решается внутренними средствами через фильтры windivert.
|
Задача _iptables_ в **winws** решается внутренними средствами через фильтры windivert.
|
||||||
У windivert существует собственный язык фильтров, похожий на язык фильтров wireshark.
|
У windivert существует собственный язык фильтров, похожий на язык фильтров wireshark.
|
||||||
Документация по фильтрам windivert : https://reqrypt.org/windivert-doc.html#filter_language
|
[Документация по фильтрам windivert.](https://reqrypt.org/windivert-doc.html#filter_language)
|
||||||
Чтобы не писать сложные фильтры вручную, предусмотрены различные упрощенные варианты автоматического построения фильтров.
|
Чтобы не писать сложные фильтры вручную, предусмотрены различные упрощенные варианты автоматического построения фильтров.
|
||||||
|
|
||||||
|
```
|
||||||
--wf-iface=<int>[.<int>] ; числовые индексы интерфейса и суб-интерфейса
|
--wf-iface=<int>[.<int>] ; числовые индексы интерфейса и суб-интерфейса
|
||||||
--wf-l3=ipv4|ipv6 ; фильтр L3 протоколов. по умолчанию включены ipv4 и ipv6.
|
--wf-l3=ipv4|ipv6 ; фильтр L3 протоколов. по умолчанию включены ipv4 и ipv6.
|
||||||
--wf-tcp=[~]port1[-port2] ; фильтр портов для tcp. ~ означает отрицание
|
--wf-tcp=[~]port1[-port2] ; фильтр портов для tcp. ~ означает отрицание
|
||||||
@ -59,170 +72,187 @@ secure boot могут быть проблемы из-за подписи дра
|
|||||||
--ssid-filter=ssid1[,ssid2,ssid3,...] ; включать winws только когда подключена любая из указанных wifi сетей
|
--ssid-filter=ssid1[,ssid2,ssid3,...] ; включать winws только когда подключена любая из указанных wifi сетей
|
||||||
--nlm-filter=net1[,net2,net3,...] ; включать winws только когда подключена любая из указанных сетей NLM
|
--nlm-filter=net1[,net2,net3,...] ; включать winws только когда подключена любая из указанных сетей NLM
|
||||||
--nlm-list[=all] ; вывести список сетей NLM. по умолчанию только подключенных, all - всех.
|
--nlm-list[=all] ; вывести список сетей NLM. по умолчанию только подключенных, all - всех.
|
||||||
Параметры --wf-l3, --wf-tcp, --wf-udp могут брать несколько значений через запятую.
|
```
|
||||||
|
|
||||||
Номера интерфейсов можно узнать так : netsh int ip show int.
|
Параметры `--wf-l3`, `--wf-tcp`, `--wf-udp` могут брать несколько значений через запятую.
|
||||||
Некоторых типы соединений там не увидеть. В этом случае запускайте winws с параметром --debug и смотрите IfIdx там.
|
|
||||||
SubInterface используется windivert, но практически всегда 0, его можно не указывать. Вероятно он нужен в редких случаях.
|
Номера интерфейсов можно узнать так : `netsh int ip show int`.
|
||||||
|
Некоторых типы соединений там не увидеть. В этом случае запускайте **winws** с параметром `--debug` и смотрите IfIdx там.
|
||||||
|
SubInterface используется windivert, но практически всегда **0**, его можно не указывать. Вероятно, он нужен в редких случаях.
|
||||||
|
|
||||||
Конструктор фильтров автоматически включает входящие tcp пакеты с tcp synack и tcp rst для корректной работы функций
|
Конструктор фильтров автоматически включает входящие tcp пакеты с tcp synack и tcp rst для корректной работы функций
|
||||||
autottl и autohostlist. При включении autohostlist так же перенаправляются пакеты данных с http redirect с кодами 302 и 307.
|
autottl и autohostlist. При включении autohostlist так же перенаправляются пакеты данных с http redirect с кодами 302 и 307.
|
||||||
Всегда добавляется фильтр на исключение не-интернет адресов ipv4 и ipv6.
|
Всегда добавляется фильтр на исключение не-интернет адресов ipv4 и ipv6.
|
||||||
Для сложных нестандартных сценариев могут потребоваться свои фильтры. Логично будет начать со стандартного шаблона,
|
Для сложных нестандартных сценариев могут потребоваться свои фильтры. Логично будет начать со стандартного шаблона,
|
||||||
сохраненного через --wf-save. Нужно править файл и подсовывать его в параметре --wf-raw. Максимальный размер фильтра - 8 Kb.
|
сохраненного через `--wf-save`. Нужно править файл и подсовывать его в параметре `--wf-raw`. Максимальный размер фильтра - **8 Kb**.
|
||||||
|
|
||||||
Можно запускать несколько процессов winws с разными стратегиями. Однако, не следует делать пересекающиеся фильтры.
|
Можно запускать несколько процессов **winws** с разными стратегиями. Однако, не следует делать пересекающиеся фильтры.
|
||||||
|
|
||||||
В --ssid-filter можно через запятую задать неограниченное количество имен wifi сетей (SSID). Если задана хотя бы одна сеть,
|
В `--ssid-filter` можно через запятую задать неограниченное количество имен wifi сетей (**SSID**). Если задана хотя бы одна сеть,
|
||||||
то winws включается только, если подключен указанный SSID. Если SSID исчезает, winws отключается. Если SSID появляется снова,
|
то winws включается только, если подключен указанный **SSID**. Если **SSID** исчезает, winws отключается. Если **SSID** появляется снова,
|
||||||
winws включается. Это нужно, чтобы можно было применять раздельное дурение к каждой отдельной wifi сети.
|
winws включается. Это нужно, чтобы можно было применять раздельное дурение к каждой отдельной wifi сети.
|
||||||
Названия сетей должны быть написаны в том регистре, в котором их видит система. Сравнение идет с учетом регистра !
|
Названия сетей должны быть написаны в том регистре, в котором их видит система. Сравнение идет с учетом регистра!
|
||||||
При этом нет никаких проверок куда реально идет трафик. Если одновременно подключен, допустим, ethernet,
|
При этом нет никаких проверок куда реально идет трафик. Если одновременно подключен, допустим, ethernet,
|
||||||
и трафик идет туда, то дурение включается и выключается просто по факту наличия wifi сети, на которую трафик может и не идти.
|
и трафик идет туда, то дурение включается и выключается просто по факту наличия wifi сети, на которую трафик может и не идти.
|
||||||
И это может сломать дурение на ethernet. Поэтому полезно так же будет добавить фильтр --wf-iface на индекс интерфейса wifi адаптера,
|
И это может сломать дурение на ethernet. Поэтому полезно так же будет добавить фильтр `--wf-iface` на индекс интерфейса wifi адаптера,
|
||||||
чтобы не трогать другой трафик.
|
чтобы не трогать другой трафик.
|
||||||
|
|
||||||
--nlm-filter аналогичен --ssid-filter, но работает с именами или GUIDами сетей Network List Manager (NLM).
|
`--nlm-filter` аналогичен `--ssid-filter`, но работает с именами или GUIDами сетей Network List Manager (NLM).
|
||||||
Это те сети, которые вы видите в панели управления в разделе "Центр управления сетями и общим доступом".
|
Это те сети, которые вы видите в панели управления в разделе "Центр управления сетями и общим доступом".
|
||||||
Под сетью подразумевается не конкретный адаптер, а именно сетевое окружение конкретного подключения.
|
Под сетью подразумевается не конкретный адаптер, а именно сетевое окружение конкретного подключения.
|
||||||
Обычно проверяется mac адрес шлюза. К сети можно подключиться через любой адаптер, и она останется той же самой.
|
Обычно проверяется mac адрес шлюза. К сети можно подключиться через любой адаптер, и она останется той же самой.
|
||||||
Если подключиться, допустим, к разными роутерам по кабелю, то будут разные сети.
|
Если подключиться, допустим, к разными роутерам по кабелю, то будут разные сети.
|
||||||
А если к одному роутеру через 2 разных сетевых карточки на том же компе - будет одна сеть.
|
А если к одному роутеру через 2 разных сетевых карточки на том же компе - будет одна сеть.
|
||||||
NLM абстрагирует типы сетевых адаптеров. Он работает как с wifi, так и с ethernet и любыми другими.
|
NLM абстрагирует типы сетевых адаптеров. Он работает как с wifi, так и с ethernet и любыми другими.
|
||||||
Поэтому это более универсальный метод, чем ssid фильтр.
|
Поэтому это более универсальный метод, чем **SSID** фильтр.
|
||||||
Однако, есть и неприятная сторона. В windows 7 вы легко могли ткнуть на иконку сети и выбрать тип : private или public.
|
Однако, есть и неприятная сторона. В windows 7 вы легко могли ткнуть на иконку сети и выбрать тип : private или public.
|
||||||
Там же вы могли посмотреть список сетей и обьединить их. Чтобы, допустим, вы могли подключаться по кабелю и wifi
|
Там же вы могли посмотреть список сетей и обьединить их. Чтобы, допустим, вы могли подключаться по кабелю и wifi
|
||||||
к одному роутеру, и система эти подключения воспринимала как одну сеть.
|
к одному роутеру, и система эти подключения воспринимала как одну сеть.
|
||||||
В следующих версиях windows они эти возможности сильно порезали. Похоже нет встроенных средств полноценно управлять
|
В следующих версиях windows они эти возможности сильно порезали. Похоже нет встроенных средств полноценно управлять
|
||||||
network locations в win10/11. Кое-что есть в powershell.
|
network locations в win10/11. Кое-что есть в **powershell**.
|
||||||
Можно поковыряться напрямую в реестре здесь : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList
|
Можно поковыряться напрямую в реестре здесь :
|
||||||
Нужно менять ProfileGUID в Signatures\Unmanaged. Имена можно поменять в Profiles.
|
`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList`
|
||||||
|
Нужно менять ProfileGUID в `Signatures\Unmanaged`. Имена можно поменять в Profiles.
|
||||||
Есть кое-какие сторонние утилиты. Кое-что находится, позволяющее посмотреть и удалить network profiles, но не обьединить.
|
Есть кое-какие сторонние утилиты. Кое-что находится, позволяющее посмотреть и удалить network profiles, но не обьединить.
|
||||||
Факт, что в ms они это сильно испортили. Движок network list все тот же, и он способен на все то, что было в win7.
|
Факт, что в ms они это сильно испортили. Движок network list все тот же, и он способен на все то, что было в win7.
|
||||||
Можно не бороться с этой проблемой, а просто указывать через запятую те названия сетей или GUIDы, которые выбрала система.
|
Можно не бороться с этой проблемой, а просто указывать через запятую те названия сетей или GUIDы, которые выбрала система.
|
||||||
Или если у вас только wifi, то использовать --ssid-filter. Там хотя бы есть гарантия, что SSID соответствуют реальности,
|
Или если у вас только wifi, то использовать `--ssid-filter`. Там хотя бы есть гарантия, что **SSID** соответствуют реальности,
|
||||||
а система их не назвала как-то по-своему.
|
а система их не назвала как-то по-своему.
|
||||||
|
|
||||||
Если в путях присутствуют национальные символы, то при вызове winws из cmd или bat кодировку нужно использовать OEM.
|
Если в путях присутствуют национальные символы, то при вызове winws из `cmd` или `bat` кодировку нужно использовать **OEM**.
|
||||||
Для русского языка это 866. Пути с пробелами нужно брать в кавычки.
|
Для русского языка это 866. Пути с пробелами нужно брать в кавычки.
|
||||||
При использовании опции @<config_file> кодировка в файле должна быть UTF-8 без BOM mark.
|
При использовании опции @<config_file> кодировка в файле должна быть **UTF-8** без **BOM mark**.
|
||||||
|
|
||||||
Существует неочевидный момент, каcаемый запуска winws из cygwin шелла. Если в директории, где находится winws, находится
|
Существует неочевидный момент, каcаемый запуска **winws** из cygwin shell\`а. Если в директории, где находится winws, находится
|
||||||
копия cygwin1.dll, winws не запустится.
|
копия `cygwin1.dll`, **winws** не запустится.
|
||||||
Если нужен запуск под cygwin, то следует удалить или переместить cygwin1.dll из binaries/win64. Это нужно для работы blockcheck.
|
Если нужен запуск под cygwin, то следует удалить или переместить `cygwin1.dll` из `binaries/win64`. Это нужно для работы blockcheck.
|
||||||
Из cygwin шелла можно посылать winws сигналы через kill точно так же, как в *nix.
|
Из cygwin шелла можно посылать winws сигналы через `kill` точно так же, как в `*nix`.
|
||||||
|
|
||||||
Как получить совместимый с windows 7 и winws cygwin :
|
Как получить совместимый с windows 7 и winws cygwin :
|
||||||
curl -O https://www.cygwin.com/setup-x86_64.exe
|
|
||||||
setup-x86_64.exe --allow-unsupported-windows --no-verify --site http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2024/01/30/231215
|
|
||||||
Следует выбрать установку curl.
|
|
||||||
|
|
||||||
Для сборки из исходников требуется gcc-core,make,zlib-devel.
|
`curl -O https://www.cygwin.com/setup-x86_64.exe`
|
||||||
Собирать из директории nfq командой "make cygwin64" или "make cygwin32" для 64 и 32 битных версий соответственно.
|
|
||||||
winws требует cygwin1.dll, windivert.dll, windivert64.sys или windivert32.sys.
|
|
||||||
Их можно взять из binaries/win64 и binaries/win32.
|
|
||||||
|
|
||||||
Для arm64 windows нет подписанного драйвера windivert и нет cygwin.
|
`setup-x86_64.exe --allow-unsupported-windows --no-verify --site http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2024/01/30/231215`
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> Следует выбрать установку curl.
|
||||||
|
|
||||||
|
Для сборки из исходников требуется _gcc-core_,_make_,_zlib-devel_.
|
||||||
|
Собирать из директории nfq командой `make cygwin64` или `make cygwin32` для 64 и 32 битных версий соответственно.
|
||||||
|
**winws** требует `cygwin1.dll`, `windivert.dll`, `windivert64.sys` или `windivert32.sys`.
|
||||||
|
Их можно взять из `binaries/win64` и `binaries/win32`.
|
||||||
|
|
||||||
|
Для _arm64_ windows нет подписанного драйвера windivert и нет cygwin.
|
||||||
Однако, эмуляция x64 windows 11 позволяет использовать все, кроме WinDivert64.sys без изменений.
|
Однако, эмуляция x64 windows 11 позволяет использовать все, кроме WinDivert64.sys без изменений.
|
||||||
Но при этом надо заменить WinDivert64.sys на неподписанную arm64 версию и установить режим testsigning.
|
Но при этом надо заменить WinDivert64.sys на неподписанную _arm64_ версию и установить режим testsigning.
|
||||||
|
|
||||||
Windows 7 и windivert
|
## Windows 7 и windivert
|
||||||
---------------------
|
|
||||||
|
|
||||||
Требования к подписи драйверов windows изменились в 2021 году.
|
Требования к подписи драйверов windows изменились в 2021 году.
|
||||||
Официальные бесплатные обновления windows 7 закончились в 2020.
|
Официальные бесплатные обновления windows 7 закончились в 2020.
|
||||||
После этого несколько лет продолжали идти платные обновления по программе ESU.
|
После этого несколько лет продолжали идти платные обновления по программе **ESU**.
|
||||||
Именно в этих ESU обновлениях находится обновление ядра windows 7, позволяющиее загрузить драйвер
|
Именно в этих **ESU** обновлениях находится обновление ядра windows 7, позволяющиее загрузить драйвер
|
||||||
windivert 2.2.2-A, который идет в поставке zapret.
|
_windivert 2.2.2-A_, который идет в поставке zapret.
|
||||||
Поэтому варианты следующие :
|
Поэтому варианты следующие :
|
||||||
|
|
||||||
1) Взять windivert64.sys и windivert.dll версии 2.2.0-C или 2.2.0-D отсюда : https://reqrypt.org/download
|
1) Взять `windivert64.sys` и `windivert.dll` версии _2.2.0-C_ или _2.2.0-D_ отсюда : https://reqrypt.org/download
|
||||||
и заменить эти 2 файла.
|
и заменить эти 2 файла.
|
||||||
В zapret-win-bundle есть отдельных 2 места, где находится winws : zapret-winws и blockcheck/zapret/nfq.
|
В [zapret-win-bundle](https://github.com/bol-van/zapret-win-bundle) есть отдельных 2 места, где находится **winws** : [_zapret-winws_](https://github.com/bol-van/zapret-win-bundle/tree/master/zapret-winws) и [_blockcheck/zapret/nfq_](https://github.com/bol-van/zapret-win-bundle/tree/master/blockcheck).
|
||||||
Надо менять в обоих местах.
|
Надо менять в обоих местах.
|
||||||
Этот вариант проверен и должен работать. Тем не менее патч 10 летней давности, который включает SHA256
|
|
||||||
сигнатуры, все еще необходим.
|
|
||||||
|
|
||||||
2) Взломать ESU :
|
> [!NOTE]
|
||||||
|
> Этот вариант проверен и должен работать. Тем не менее патч 10 летней давности, который включает SHA256 сигнатуры, все еще необходим.
|
||||||
|
|
||||||
|
2) Взломать **ESU** :
|
||||||
https://hackandpwn.com/windows-7-esu-patching/
|
https://hackandpwn.com/windows-7-esu-patching/
|
||||||
http://www.bifido.net/tweaks-and-scripts/8-extended-security-updates-installer.html
|
http://www.bifido.net/tweaks-and-scripts/8-extended-security-updates-installer.html
|
||||||
и обновить систему
|
и обновить систему
|
||||||
|
|
||||||
3) Использовать UpdatePack7R2 от simplix : https://blog.simplix.info
|
3) Использовать UpdatePack7R2 от simplix : https://blog.simplix.info
|
||||||
Но с этим паком есть проблема. Автор из Украины, он очень обиделся на русских.
|
> [!WARNING]
|
||||||
Если в панели управления стоит регион RU или BY, появляется неприятный диалог.
|
> Но с этим паком есть проблема. Автор из Украины, он очень обиделся на русских.
|
||||||
Чтобы эту проблему обойти, можно поставить временно любой другой регион, потом вернуть.
|
> Если в панели управления стоит регион RU или BY, появляется неприятный диалог.
|
||||||
Так же нет никаких гарантий, что автор не насовал туда какой-то зловредный код.
|
> Чтобы эту проблему обойти, можно поставить временно любой другой регион, потом вернуть.
|
||||||
Использовать на свой страх и риск.
|
> Так же нет никаких гарантий, что автор не насовал туда какой-то зловредный код.
|
||||||
|
> Использовать на свой страх и риск.
|
||||||
|
|
||||||
Более безопасный вариант - скачать последнюю нормальную довоенную версию : 22.2.10
|
Более безопасный вариант - скачать последнюю нормальную довоенную версию : 22.2.10
|
||||||
https://nnmclub.to/forum/viewtopic.php?t=1530323
|
https://nnmclub.to/forum/viewtopic.php?t=1530323
|
||||||
Ее достаточно, чтобы windivert 2.2.2-A заработал на windows 7.
|
Ее достаточно, чтобы _windivert 2.2.2-A_ заработал на windows 7.
|
||||||
|
|
||||||
blockcheck
|
## blockcheck
|
||||||
----------
|
|
||||||
|
|
||||||
blockcheck.sh написан на posix shell и требует некоторых стандартных утилит posix. В windows, естественно, этого нет.
|
`blockcheck.sh` написан на _posix shell_ и требует некоторых стандартных утилит _posix_. В windows, естественно, этого нет.
|
||||||
Потому просто так запустить blockcheck.sh невозможно.
|
Потому просто так запустить `blockcheck.sh` невозможно.
|
||||||
Для этого требуется скачать и установить cygwin так , как описано в предыдущем разделе.
|
Для этого требуется скачать и установить _cygwin_ так , как описано в предыдущем разделе.
|
||||||
Следует запустить от имени администратора cygwin shell через cygwin.bat.
|
Следует запустить от имени администратора _cygwin shell_ через `cygwin.bat`.
|
||||||
В нем нужно пройти в директорию с zapret.
|
В нем нужно пройти в директорию с zapret.
|
||||||
Обратные слэши путей windows нужно удваивать, менять на прямые слэши, либо использовать отображение на unix path.
|
Обратные слэши путей windows нужно удваивать, менять на прямые слэши, либо использовать отображение на unix path.
|
||||||
Корректный вариант 1 : cd "C:\\Users\\vasya"
|
Корректные варианты :
|
||||||
Корректный вариант 2 : cd "C:/Users/vasya"
|
- `cd C:\\Users\\vasya`
|
||||||
Корректный вариант 3 : cd "/cygdrive/c/Users/vasya"
|
- `cd C:/Users/vasya`
|
||||||
Существует неочевидный момент, каcаемый запуска winws из cygwin шелла. Если в директории, где находится winws, находится
|
- `cd /cygdrive/c/Users/vasya`
|
||||||
копия cygwin1.dll, winws не запустится. Нужно переименовать файл cygwin1.dll.
|
|
||||||
Далее все как в *nix : 1 раз ./install_bin.sh , затем ./blockcheck.sh.
|
Существует неочевидный момент, каcаемый запуска **winws** из _cygwin_ шелла. Если в директории, где находится **winws**, есть копия `cygwin1.dll`, **winws** не запустится. Нужно переименовать файл `cygwin1.dll`.
|
||||||
|
Далее все как в _*nix_ : 1 раз `./install_bin.sh` , затем `./blockcheck.sh`.
|
||||||
WSL использовать нельзя, это не то же самое.
|
WSL использовать нельзя, это не то же самое.
|
||||||
|
|
||||||
cygwin для обычной работы winws не нужен.
|
_cygwin_ для обычной работы **winws** не нужен.
|
||||||
|
|
||||||
Однако, хотя такой способ и работает, использование winws сильно облегчает zapret-win-bundle.
|
Однако, хотя такой способ и работает, использование **winws** сильно облегчает [zapret-win-bundle](https://github.com/bol-van/zapret-win-bundle).
|
||||||
Там нет проблемы с cygwin.dll.
|
Там нет проблемы с `cygwin.dll`.
|
||||||
|
|
||||||
автозапуск winws
|
## Автозапуск winws
|
||||||
----------------
|
|
||||||
|
|
||||||
Для запуска winws вместе с windows есть 2 варианта. Планировщик задач или службы windows.
|
Для запуска **winws** вместе с windows есть 2 варианта. Планировщик задач или службы windows.
|
||||||
|
|
||||||
Можно создавать задачи и управлять ими через консольную программу schtasks.
|
Можно создавать задачи и управлять ими через консольную программу schtasks.
|
||||||
В директории binaries/win64/winws подготовлены файлы task_*.cmd .
|
В директории `binaries/win64/winws` подготовлены файлы `task_*.cmd` .
|
||||||
В них реализовано создание, удаление, старт и стоп одной копии процесса winws с параметрами из переменной %WINWS1%.
|
В них реализовано создание, удаление, старт и стоп одной копии процесса winws с параметрами из переменной `%WINWS1%`.
|
||||||
Исправьте параметры на нужную вам стратегию. Если для разных фильтров применяется разная стратегия, размножьте код
|
Исправьте параметры на нужную вам стратегию. Если для разных фильтров применяется разная стратегия, размножьте код
|
||||||
для задач winws1,winws2,winws3,...
|
для задач _winws1_,_winws2_,_winws3_,_..._
|
||||||
|
|
||||||
Аналогично настраивается вариант запуска через службы windows. Смотрите service_*.cmd.
|
Аналогично настраивается вариант запуска через службы windows. Смотрите `service_*.cmd`.
|
||||||
|
|
||||||
Все батники требуется запускать от имени администратора.
|
Все батники требуется запускать от имени администратора.
|
||||||
|
|
||||||
Управлять задачами можно так же из графической программы управления планировщиком taskschd.msc
|
Управлять задачами можно так же из графической программы управления планировщиком `taskschd.msc`
|
||||||
|
|
||||||
zapret-win-bundle
|
## Zapret-win-bundle
|
||||||
-----------------
|
|
||||||
|
|
||||||
Можно не возиться с cygwin, а взять готовый пакет, включающий в себя cygwin и blockcheck : https://github.com/bol-van/zapret-win-bundle
|
Можно не возиться с _cygwin_, а взять готовый пакет, включающий в себя _cygwin_ и _blockcheck_ : https://github.com/bol-van/zapret-win-bundle
|
||||||
Там сделан максимум удобств для сосредоточения на самом zapret, исключая возню с установкой cygwin,
|
Там сделан максимум удобств для сосредоточения на самом zapret, исключая возню с установкой _cygwin_,
|
||||||
заходами в директории, запусками под администратором и прочими сугубо техническими моментами, в которых могут быть
|
заходами в директории, запусками под администратором и прочими сугубо техническими моментами, в которых могут быть
|
||||||
ошибки и непонимания, а новичок без базиса знаний может и вовсе запутаться.
|
ошибки и непонимания, а новичок без базиса знаний может и вовсе запутаться.
|
||||||
|
|
||||||
/zapret-winws - здесь все, что нужно для запуска winws в повседневном рабочем режиме. остальное не нужно.
|
`/zapret-winws` - здесь все, что нужно для запуска winws в повседневном рабочем режиме. остальное не нужно.\
|
||||||
/zapret-winws/_CMD_ADMIN.cmd - получить командную строку cmd в этой директории от имени администратора для тестирования winws
|
`/zapret-winws/_CMD_ADMIN.cmd` - получить командную строку cmd в этой директории от имени администратора для тестирования **winws**
|
||||||
с параметрами, вводимыми вручную
|
с параметрами, вводимыми вручную\
|
||||||
/blockcheck/blockcheck.cmd - достаточно кликнуть по нему, чтобы пошел blockcheck с записью лога в blockcheck/blockcheck.log
|
`/blockcheck/blockcheck.cmd` - достаточно кликнуть по нему, чтобы пошел _blockcheck_ с записью лога в `blockcheck/blockcheck.log`\
|
||||||
/cygwin/cygwin.cmd - запуск среды cygwin bash под текущим пользователем
|
`/cygwin/cygwin.cmd` - запуск среды _cygwin bash_ под текущим пользователем\
|
||||||
/cygwin/cygwin-admin.cmd - запуск среды cygwin bash под администратором
|
`/cygwin/cygwin-admin.cmd` - запуск среды _cygwin bash_ под администратором
|
||||||
|
|
||||||
В среде cygwin уже настроены alias-ы на winws,blockcheck,ip2net,mdig. С путями возиться не нужно !
|
В среде _cygwin_ уже настроены alias-ы на winws,blockcheck,ip2net,mdig. С путями возиться не нужно!
|
||||||
Из cygwin можно не только тестировать winws, но и посылать сигналы.
|
|
||||||
Доступны команды pidof,kill,killall,pgrep,pkill.
|
> [!TIP]
|
||||||
Но важно понимать, что таким образом не выйдет посылать сигналы winws, запущенному из zapret-winws,
|
> Из cygwin можно не только тестировать winws, но и посылать сигналы.
|
||||||
поскольку там свой cygwin1.dll, и они не разделяют общее пространство процессов unix.
|
> Доступны команды:
|
||||||
zapret-winws - это отдельный комплект для повседневного использования, не требующий что-то еще, но и не связанный со средой cygwin.
|
>- `pidof`
|
||||||
|
>- `kill`
|
||||||
|
>- `killall`
|
||||||
|
>- `pgrep`
|
||||||
|
>- `pkill`
|
||||||
|
|
||||||
|
Но важно понимать, что таким образом не выйдет посылать сигналы **winws**, запущенному из _zapret-winws_,
|
||||||
|
поскольку там свой `cygwin1.dll`, и они не разделяют общее пространство процессов unix.
|
||||||
|
_zapret-winws_ - это отдельный комплект для повседневного использования, не требующий что-то еще, но и не связанный со _средой cygwin_.
|
||||||
|
Специально для посылки сигналов winws в _zapret-winws_ присутствует killall.exe.
|
||||||
|
|
||||||
Среду cygwin можно использовать для записи в файл дебаг-лога winws. Для этого пользуйтесь командой tee.
|
Среду cygwin можно использовать для записи в файл дебаг-лога winws. Для этого пользуйтесь командой tee.
|
||||||
winws --debug --wf-tcp=80,443 | tee winws.log
|
`winws --debug --wf-tcp=80,443 | tee winws.log`
|
||||||
winws.log будет в cygwin/home/<имя_пользователя>
|
`winws.log` будет в `cygwin/home/<имя_пользователя>`
|
||||||
Если у вас windows 7, то блокнот не поймет переводы строк в стиле unix. Воспользуйтесь командой
|
Если у вас windows 7, то блокнот не поймет переводы строк в стиле unix. Воспользуйтесь командой
|
||||||
unix2dos winws.log
|
`unix2dos winws.log`
|
||||||
|
|
||||||
Поскольку 32-битные windows мало востребованы, zapret-win-bundle существует только в варианте для windows x64/arm64.
|
> [!CAUTION]
|
||||||
|
> Поскольку 32-битные windows мало востребованы, _zapret-win-bundle_ существует только в варианте для windows _x64/arm64_.
|
Loading…
Reference in New Issue
Block a user