From 4b2551509f28c7ad35048dbfe6962d2e275991dd Mon Sep 17 00:00:00 2001 From: bol-van Date: Sat, 13 Dec 2025 11:22:16 +0300 Subject: [PATCH] update docs --- docs/manual.md | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/docs/manual.md b/docs/manual.md index 7a5b97a..9cf0327 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -539,7 +539,7 @@ nfqws2 <глобальные_параметры> nfqws2 <глобальные_параметры> --template=tpl1 <базовые параметры 1> --new --template=tpl2 <базовые параметры 2> --new ---template --import tpl1 --name tpl3 <базовые параметры 3> --new +--template --import tpl2 --name tpl3 <базовые параметры 3> --new --import tpl1 --name prof1 <дополнительные параметры 1> --new --import tpl3 --name prof2 <дополнительные параметры 2> --new --name prof3 <параметры 3> @@ -606,3 +606,37 @@ nfqws2 <глобальные_параметры> Большинство критериев удачи или неудачи требует анализа входящего и исходящего трафика, поэтому необходим их перехват в достаточном обьеме для возможности срабатывания критериев. + +### Фильтр по наличию сетей + +Если, допустим, вам нужно применить одну стратегию для wifi, другую для провода, это делается через фильтр, основанный на имени интерфейса. +Но что делать, если вы подключаетесь к разным wifi сетям или подключаете провод в разных локациях ? +В случае провода решение есть только на windows, на других системах - нет. Для wifi есть решение на Linux и Windows, на BSD - нет. + +Фильтр по wifi берет список SSID через запятую, однако он реализован по-разному в Linux и Windows. +В Linux используется фильтр профиля `--filter-ssid`. Если он задан, nfqws2 пытается получить SSID на интерфейсе, куда этот пакет уходит +или откуда он приходит. Если ему это удается - происходит проверка по списку сетей, если нет - условие фильтра не соблюдается, профиль не выбирается. +Такая концепция позволяет работать даже если вы подключаетесь к нескольким wifi сетям на разных адаптерах. + +> [!CAUTION] +> Основной способ получения SSID на Linux - через nl80211 был сломан с ядра 5.19 и не исправлен по настоящее время. +Дополнительный способ через wireless extensions работает, но API в процессе депрекации, многие ядра собираются без, поэтому определение SSID может не работать. +Для проверки nl80211 использовать `iw dev wlan0 info`, wext - `iwgetid wlan0`. Если ни одна команда не вернула корректный SSID, детект работать не будет. +iwgetid может не быть по умолчанию, нужно устанавливать wireless-tools. + +В Windows концепция иная. Мониторится наличие указанных wifi сетей на всех wifi адаптерах, и если на любом из них SSID есть, +перехват windivert включается, а иначе выключается. Чтобы обслужить wifi сети с разными стратегиями нужно запускать несколько истансов winws2. +Один будет включаться, остальные - отключаться. Список SSID задается параметром `--ssid-filter`. + +Другой способ решить вопрос, и не только с wifi, - использование фильтра NLM - Network List Manager. +`--nlm-list[=all]` вернет список GUID подключенных или всех сетей, если указано значение параметра "all". +Далее вписываете список GUID через запятую в `--nlm-filter`. + +Сеть NLM - это результат детекта системой подключения к конкретной сети. +Вы можете подключиться к роутеру по wifi или проводу, но сеть будет одна. Для различения сетей система обычно смотрит на MAC шлюза. +Технология NLM интересная и полезная, но , увы , адекватное управление ей было только в Windows 7. +В остальных системах нужно копаться в powershell или лезть в реестр, чтобы раскидать подключения по нужным GUID, +если вдруг они раскидались системой неправильно. Но можно и не бороться, а просто внести список GUID, назначенных системой автоматически. +NLM, в отличие от SSID, работает поверх любых типов сетей - не только wifi. + +