diff --git a/docs/readme.en.md b/docs/readme.en.md index 12ec85d2..9d4bde57 100644 --- a/docs/readme.en.md +++ b/docs/readme.en.md @@ -1,4 +1,4 @@ -# zapret v71.4 +# zapret v71.5 # SCAMMER WARNING diff --git a/docs/readme.md b/docs/readme.md index 8ffb35ad..bd703853 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -1,4 +1,4 @@ -# zapret v71.4 +# zapret v71.5 # ВНИМАНИЕ, остерегайтесь мошенников diff --git a/docs/windows.en.md b/docs/windows.en.md index d8bfb1ab..bbfeef68 100644 --- a/docs/windows.en.md +++ b/docs/windows.en.md @@ -47,7 +47,9 @@ Task of `iptables` is done inside `winws` through `windivert` filters. `Windiver --wf-l3=ipv4|ipv6 ; L3 protocol filter. multiple comma separated values allowed. --wf-tcp=[~]port1[-port2] ; TCP port filter. ~ means negation. multiple comma separated values allowed. --wf-udp=[~]port1[-port2] ; UDP port filter. ~ means negation. multiple comma separated values allowed. - --wf-raw=|@ ; raw windivert filter string or filename + --wf-raw-part=|@ ; partial raw windivert filter string or filename + --wf-filter-lan=0|1 ; add excluding filter for non-global IP (default : 1) + --wf-raw=|@ ; full raw windivert filter string or filename. replaces --wf-tcp,--wf-udp,--wf-raw-part --wf-save= ; save windivert filter string to a file and exit --ssid-filter=ssid1[,ssid2,ssid3,...] ; enable winws only if any of specified wifi SSIDs connected --nlm-filter=net1[,net2,net3,...] ; enable winws only if any of specified NLM network is connected. names and GUIDs are accepted. @@ -60,6 +62,12 @@ Interface indexes can be discovered using this command : `netsh int ip show int` If you can't find index this way use `winws --debug` to see index there. Subinterface index is almost always 0 and you can omit it. +`--wf-raw-part` specifies partial windivert filter. Multiple filter parts are supported. They can also be combined with `--wf-tcp`,`--wf-udp`. + +`--wf-raw` specifies full windivert filter that replaces `--wf-tcp`,`--wf-udp`,`--wf-raw-part`. + +Kernel filtering with windivert language is much more effective than passing massive amount of traffic to winws. Use it if possible to save CPU resources. + Multiple `winws` processes are allowed. However, it's discouraged to intersect their filters. `--ssid-filter` allows to enable `winws` only if specified wifi networks are connected. `winws` auto detects SSID appearance and disappearance. diff --git a/docs/windows.md b/docs/windows.md index 1f0c452c..9305a31c 100644 --- a/docs/windows.md +++ b/docs/windows.md @@ -44,7 +44,7 @@ tpws в режиме socks можно запускать под более-ме Это вариант пакетного фильтра nfqws для Windows, построенный на базе windivert. Все функции работоспособны, однако функционал ipset в ядре отсутствует. Он реализован в user mode. Фильтры по большому количеству IP адресов невозможны. -Работа с проходящим трафиком, например в случае "расшаривания" соединения, не проверялась и не гарантируется. +Работа с проходящим трафиком, например в случае "расшаривания" соединения, невозможна. Для работы с windivert требуются права администратора. Специфические для unix параметры, такие как `--uid`, `--user` и тд, исключены. Все остальные параметры аналогичны nfqws и dvtws. @@ -67,7 +67,9 @@ secure boot могут быть проблемы из-за подписи дра --wf-l3=ipv4|ipv6 ; фильтр L3 протоколов. по умолчанию включены ipv4 и ipv6. --wf-tcp=[~]port1[-port2] ; фильтр портов для tcp. ~ означает отрицание --wf-udp=[~]port1[-port2] ; фильтр портов для udp. ~ означает отрицание - --wf-raw=|@ ; задать напрямую фильтр windivert из параметра или из файла. имени файла предшествует символ @. + --wf-raw-part=|@ ; частичный windivert фильтр из параметра или из файла. имени файла предшествует символ @. может быть множество частей. сочетается с --wf-tcp,--wf-udp. + --wf-filter-lan=0|1 ; отфильтровывать адреса назначения, не являющиеся глобальными inet адресами ipv4 или ipv6. по умолчанию - 1. + --wf-raw=|@ ; полный windivert фильтр из параметра или из файла. имени файла предшествует символ @. замещает --wf-raw-part,--wf-tcp,--wf-udp. --wf-save= ; сохранить сконструированный фильтр windivert в файл для последующей правки вручную --ssid-filter=ssid1[,ssid2,ssid3,...] ; включать winws только когда подключена любая из указанных wifi сетей --nlm-filter=net1[,net2,net3,...] ; включать winws только когда подключена любая из указанных сетей NLM @@ -80,11 +82,19 @@ secure boot могут быть проблемы из-за подписи дра Некоторых типы соединений там не увидеть. В этом случае запускайте **winws** с параметром `--debug` и смотрите IfIdx там. SubInterface используется windivert, но практически всегда **0**, его можно не указывать. Вероятно, он нужен в редких случаях. -Конструктор фильтров автоматически включает входящие tcp пакеты с tcp synack и tcp rst для корректной работы функций +Конструктор стандартных фильтров автоматически включает входящие tcp пакеты с tcp synack и tcp rst для корректной работы функций autottl и autohostlist. При включении autohostlist так же перенаправляются пакеты данных с http redirect с кодами 302 и 307. -Всегда добавляется фильтр на исключение не-интернет адресов ipv4 и ipv6. -Для сложных нестандартных сценариев могут потребоваться свои фильтры. Логично будет начать со стандартного шаблона, -сохраненного через `--wf-save`. Нужно править файл и подсовывать его в параметре `--wf-raw`. Максимальный размер фильтра - **16 Kb**. +Если не указаное иное, добавляется фильтр на исключение не-интернет адресов ipv4 и ipv6. +Для сложных нестандартных сценариев могут потребоваться свои фильтры. Полный фильтр --wf-raw замещает все остальное. +Частичные фильтры `--wf-raw-part` совместимы друг с другом и `--wf-tcp` и `--wf-udp`. Они позволяют исключить написание +громоздких полных фильтров, сосредоточившись лишь на добавлении какого-то особенного пейлоада. +`--wf-save` позволяет записать итоговый windivert фильтр в файл. Максимальный размер фильтра - **16 Kb**. + +Фильтрация windivert производится в ядре. Это несравнимо легче по ресурсам, чем перенаправлять пакеты в пространство user mode, +чтобы winws принимал решение. Поэтому пользуйтесь по максимуму возможностями windivert. +Например, если вам нужно дурить wireguard на все порты, вам придется перенаправить все порты на winws. Или же написать windivert фильтр, который отсечет wireguard по содержимому пакета. +Разница в нагрузке на процессор колоссальна. В первом случае - до 100% одного ядра cpu в зависимости от обьема исходящего udp трафика (привет, торрент и uTP), во втором - близко к 0. +Кроме нагрузки на процессор еще можете порезать себе скорость, тк одно ядро не будет справляться с обработкой вашего гигабитного интернета. А на старых ноутах еще и получите самолетный вой системы охлаждения, приводящий к ее износу. Можно запускать несколько процессов **winws** с разными стратегиями. Однако, не следует делать пересекающиеся фильтры.