From dd72c68ae6e0f9c9b5068b344fd8ebac6bc1fd55 Mon Sep 17 00:00:00 2001 From: bol-van Date: Mon, 23 Jun 2025 08:14:36 +0300 Subject: [PATCH] winws: increase windivert filter buffers --- docs/changes.txt | 1 + docs/windows.md | 2 +- nfq/nfqws.c | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 4f1b87d2..d366ef68 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -523,3 +523,4 @@ v71.2 nfqws: apply udp desync to replayed packets with non-zero reasm offset (except fake) blockcheck: display curl version and kernel version install_bin: stop if no binaries found. display help text. +winws: increase buffers for port filter diff --git a/docs/windows.md b/docs/windows.md index e0d7f3b3..b91e468f 100644 --- a/docs/windows.md +++ b/docs/windows.md @@ -84,7 +84,7 @@ SubInterface используется windivert, но практически в autottl и autohostlist. При включении autohostlist так же перенаправляются пакеты данных с http redirect с кодами 302 и 307. Всегда добавляется фильтр на исключение не-интернет адресов ipv4 и ipv6. Для сложных нестандартных сценариев могут потребоваться свои фильтры. Логично будет начать со стандартного шаблона, -сохраненного через `--wf-save`. Нужно править файл и подсовывать его в параметре `--wf-raw`. Максимальный размер фильтра - **8 Kb**. +сохраненного через `--wf-save`. Нужно править файл и подсовывать его в параметре `--wf-raw`. Максимальный размер фильтра - **16 Kb**. Можно запускать несколько процессов **winws** с разными стратегиями. Однако, не следует делать пересекающиеся фильтры. diff --git a/nfq/nfqws.c b/nfq/nfqws.c index f13bd2a9..829e31a8 100644 --- a/nfq/nfqws.c +++ b/nfq/nfqws.c @@ -1449,7 +1449,7 @@ static bool wf_make_filter( const char *pf_tcp_src, const char *pf_tcp_dst, const char *pf_udp_src, const char *pf_udp_dst) { - char pf_dst_buf[512],iface[64]; + char pf_dst_buf[8192],iface[64]; const char *pf_dst; const char *f_tcpin = *pf_tcp_src ? dp_list_have_autohostlist(¶ms.desync_profiles) ? "(" DIVERT_TCP_INBOUNDS " or (" DIVERT_HTTP_REDIRECT "))" : DIVERT_TCP_INBOUNDS : ""; const char *f_tcp_not_empty = (*pf_tcp_src && !dp_list_need_all_out(¶ms.desync_profiles)) ? DIVERT_TCP_NOT_EMPTY " and " : ""; @@ -1987,7 +1987,7 @@ int main(int argc, char **argv) struct hostlist_file *anon_hl = NULL, *anon_hl_exclude = NULL; struct ipset_file *anon_ips = NULL, *anon_ips_exclude = NULL; #ifdef __CYGWIN__ - char windivert_filter[8192], wf_pf_tcp_src[256], wf_pf_tcp_dst[256], wf_pf_udp_src[256], wf_pf_udp_dst[256], wf_save_file[256]; + char windivert_filter[16384], wf_pf_tcp_src[4096], wf_pf_tcp_dst[4096], wf_pf_udp_src[4096], wf_pf_udp_dst[4096], wf_save_file[4096]; bool wf_ipv4=true, wf_ipv6=true; unsigned int IfIdx=0, SubIfIdx=0; unsigned int hash_wf_tcp=0,hash_wf_udp=0,hash_wf_raw=0,hash_ssid_filter=0,hash_nlm_filter=0;