mirror of https://github.com/bol-van/zapret/
1 changed files with 90 additions and 90 deletions
@ -1,117 +1,117 @@ |
|||||
tpws |
tpws |
||||
---- |
---- |
||||
|
|
||||
Запуск tpws возможен только в Linux варианте под WSL. |
Запуск tpws возможен только в Linux варианте под WSL. |
||||
Нативного варианта под 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 : dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all |
||||
Скопировать на целевую систему binaries/x86_64/tpws_wsl.tgz. |
Скопировать на целевую систему binaries/x86_64/tpws_wsl.tgz. |
||||
Выполнить : wsl --import tpws "%USERPROFILE%\tpws" tpws_wsl.tgz |
Выполнить : 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 <параметры_дурения> |
Запустить : wsl -d tpws --exec /tpws --uid=1 --no-resolve --socks --bind-addr=127.0.0.1 --port=1080 <параметры_дурения> |
||||
Прописать socks 127.0.0.1:1080 в броузер или другую программу. |
Прописать socks 127.0.0.1:1080 в броузер или другую программу. |
||||
|
|
||||
Удаление : wsl --unregister tpws |
Удаление : wsl --unregister tpws |
||||
|
|
||||
Проверено на windows 10 build 19041 (20.04). |
Проверено на windows 10 build 19041 (20.04). |
||||
|
|
||||
Не работают функции --oob и --mss из-за ограничений реализации WSL. |
Не работают функции --oob и --mss из-за ограничений реализации WSL. |
||||
--disorder не работает из-за особенностей tcp/ip стека windows. |
--disorder не работает из-за особенностей tcp/ip стека windows. |
||||
Может не срабатывать детект RST в autohostlist. |
Может не срабатывать детект RST в autohostlist. |
||||
WSL может глючить со splice, приводя к зацикливанию процесса. Может потребоваться --nosplice. |
WSL может глючить со splice, приводя к зацикливанию процесса. Может потребоваться --nosplice. |
||||
|
|
||||
|
|
||||
winws |
winws |
||||
----- |
----- |
||||
|
|
||||
Это вариант пакетного фильтра nfqws для Windows, построенный на базе windivert. |
Это вариант пакетного фильтра nfqws для Windows, построенный на базе windivert. |
||||
Все функции работоспособны, однако функционал ipset отсутствует. Фильтры по большому количеству IP адресов невозможны. |
Все функции работоспособны, однако функционал ipset отсутствует. Фильтры по большому количеству IP адресов невозможны. |
||||
Работа с проходящим трафиком, например в случае "расшаривания" соединения, не проверялась и не гарантируется. |
Работа с проходящим трафиком, например в случае "расшаривания" соединения, не проверялась и не гарантируется. |
||||
Для работы с windivert требуются права администратора. |
Для работы с windivert требуются права администратора. |
||||
Специфические для unix параметры, такие как --uid, --user и тд, исключены. Все остальные параметры аналогичны nfqws и dvtws. |
Специфические для unix параметры, такие как --uid, --user и тд, исключены. Все остальные параметры аналогичны nfqws и dvtws. |
||||
|
|
||||
Работа с пакетным фильтром основана на двух действиях. |
Работа с пакетным фильтром основана на двух действиях. |
||||
Первое - выделение перенаправляемого трафика в режиме ядра и передача его пакетному фильтру в user mode. |
Первое - выделение перенаправляемого трафика в режиме ядра и передача его пакетному фильтру в user mode. |
||||
Второе - собственно обработка перенаправленных пакетов в пакетном фильтре. |
Второе - собственно обработка перенаправленных пакетов в пакетном фильтре. |
||||
|
|
||||
В 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 требуются обновления. На старых необновленных системах может быть ошибка проверки подписи драйвера. |
На windows 7 требуются обновления. На старых необновленных системах может быть ошибка проверки подписи драйвера. |
||||
Требования к патчам точно такие же, как и у GoodbyDPI. |
Требования к патчам точно такие же, как и у GoodbyDPI. |
||||
|
|
||||
Задача 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-l3=ipv4|ipv6 ; фильтр L3 протоколов. по умолчанию включены ipv4 и ipv6. |
--wf-l3=ipv4|ipv6 ; фильтр L3 протоколов. по умолчанию включены ipv4 и ipv6. |
||||
--wf-tcp=[~]port1[-port2] ; фильтр портов для tcp. ~ означает отрицание |
--wf-tcp=[~]port1[-port2] ; фильтр портов для tcp. ~ означает отрицание |
||||
--wf-udp=[~]port1[-port2] ; фильтр портов для udp. ~ означает отрицание |
--wf-udp=[~]port1[-port2] ; фильтр портов для udp. ~ означает отрицание |
||||
--wf-raw=<filter>|@<filename> ; задать напрямую фильтр windivert из параметра или из файла. имени файла предшествует символ @. |
--wf-raw=<filter>|@<filename> ; задать напрямую фильтр windivert из параметра или из файла. имени файла предшествует символ @. |
||||
--wf-save=<filename> ; сохранить сконструированный фильтр windivert в файл для последующей правки вручную |
--wf-save=<filename> ; сохранить сконструированный фильтр windivert в файл для последующей правки вручную |
||||
|
|
||||
Параметры --wf-l3, --wf-tcp, --wf-udp могут брать несколько значений через запятую. |
Параметры --wf-l3, --wf-tcp, --wf-udp могут брать несколько значений через запятую. |
||||
|
|
||||
Конструктор фильтров автоматически включает входящие 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 с разными стратегиями. Однако, не следует делать пересекающиеся фильтры. |
||||
|
|
||||
В параметрах, берущих пути к файлам, они прописываются не в формате windows, а формате cygwin. |
В параметрах, берущих пути к файлам, они прописываются не в формате windows, а формате cygwin. |
||||
Например, /cygdrive/c/Users/vasya/zapret. |
Например, /cygdrive/c/Users/vasya/zapret. |
||||
Если в путях присутствуют национальные символы, то при вызове winws из cmd или bat кодировку нужно использовать OEM. |
Если в путях присутствуют национальные символы, то при вызове winws из cmd или bat кодировку нужно использовать OEM. |
||||
Для русского языка это 866. Пути с пробелами нужно брать в кавычки. |
Для русского языка это 866. Пути с пробелами нужно брать в кавычки. |
||||
|
|
||||
Существует неочевидный момент, каcаемый запуска winws из cygwin шелла. Если в директории, где находится nfqws, находится |
Существует неочевидный момент, каcаемый запуска winws из cygwin шелла. Если в директории, где находится nfqws, находится |
||||
копия cygwin1.dll, winws не запустится. Поэтому в binaries/win64 существует директория zapret-winws, содержащая полный |
копия cygwin1.dll, winws не запустится. Поэтому в binaries/win64 существует директория zapret-winws, содержащая полный |
||||
комплект для запуска без cygwin. Его вы и берете для повседневного использования. |
комплект для запуска без cygwin. Его вы и берете для повседневного использования. |
||||
Если нужен запуск под cygwin, то следует запускать из binaries/win64. Это нужно для работы blockcheck. |
Если нужен запуск под cygwin, то следует запускать из 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 |
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 |
setup-x86_64.exe --allow-unsupported-windows --no-verify --site http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2024/01/30/231215 |
||||
Следует выбрать установку curl. |
Следует выбрать установку curl. |
||||
|
|
||||
Для сборки из исходников требуется gcc-core,make,zlib-devel. |
Для сборки из исходников требуется gcc-core,make,zlib-devel. |
||||
winws требует cygwin1.dll, windivert.dll, windivert64.sys. Их можно взять из binaries/win64/zapret-winws. |
winws требует cygwin1.dll, windivert.dll, windivert64.sys. Их можно взять из binaries/win64/zapret-winws. |
||||
Версию для 32-битных x86 windows собрать можно, но такие системы уже уходят в прошлое, поэтому если надо - собирайте сами. |
Версию для 32-битных x86 windows собрать можно, но такие системы уже уходят в прошлое, поэтому если надо - собирайте сами. |
||||
32-битный windivert можно взять с сайта разработчика. Требуется версия 2.2.2. |
32-битный windivert можно взять с сайта разработчика. Требуется версия 2.2.2. |
||||
Для arm64 систем нет подписанного драйвера windivert. Можно самому собрать windivert, но работать он будет только |
Для arm64 систем нет подписанного драйвера windivert. Можно самому собрать windivert, но работать он будет только |
||||
с отключенной подписью драйверов. |
с отключенной подписью драйверов. |
||||
|
|
||||
|
|
||||
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. Буква диска windows X: отображается как /cygdrive/x. |
В нем нужно пройти в директорию с zapret. Буква диска windows X: отображается как /cygdrive/x. |
||||
Далее все как в *nix : 1 раз ./install_bin.sh , затем ./blockcheck.sh. |
Далее все как в *nix : 1 раз ./install_bin.sh , затем ./blockcheck.sh. |
||||
WSL использовать нельзя, это не то же самое. |
WSL использовать нельзя, это не то же самое. |
||||
|
|
||||
cygwin для обычной работы winws не нужен. Разве что вы хотите посылать winws SIGHUP для перечитки листов без перезапуска. |
cygwin для обычной работы winws не нужен. Разве что вы хотите посылать winws SIGHUP для перечитки листов без перезапуска. |
||||
|
|
||||
|
|
||||
автозапуск winws |
автозапуск winws |
||||
---------------- |
---------------- |
||||
|
|
||||
Для запуска winws вместе с windows воспользуйтесь планировщиком задач windows. |
Для запуска winws вместе с windows воспользуйтесь планировщиком задач windows. |
||||
Удобнее всего создавать задачи и управлять ими через консольную программу schtasks. |
Удобнее всего создавать задачи и управлять ими через консольную программу schtasks. |
||||
В директории binaries/win64/winws подготовлены файлы task_*.cmd . |
В директории binaries/win64/winws подготовлены файлы task_*.cmd . |
||||
В них реализовано создание, удаление, старт и стоп одной копии процесса winws с параметрами из переменной %WINWS1%. |
В них реализовано создание, удаление, старт и стоп одной копии процесса winws с параметрами из переменной %WINWS1%. |
||||
Исправьте параметры на нужную вам стратегию. Если для разных фильтров применяется разная стратегия, размножьте код |
Исправьте параметры на нужную вам стратегию. Если для разных фильтров применяется разная стратегия, размножьте код |
||||
для задач winws1,winws2,winws3,... |
для задач winws1,winws2,winws3,... |
||||
|
|
||||
Все батники требуется запускать от имени администратора. |
Все батники требуется запускать от имени администратора. |
||||
|
|
||||
Управлять задачами можно так же из графической программы управления планировщиком taskschd.msc |
Управлять задачами можно так же из графической программы управления планировщиком taskschd.msc |
||||
|
Loading…
Reference in new issue