diff --git a/binaries/aarch64/ip2net b/binaries/aarch64/ip2net index 9468b90f..969be273 100755 Binary files a/binaries/aarch64/ip2net and b/binaries/aarch64/ip2net differ diff --git a/binaries/aarch64/mdig b/binaries/aarch64/mdig index 7044f6f5..bff345c7 100755 Binary files a/binaries/aarch64/mdig and b/binaries/aarch64/mdig differ diff --git a/binaries/aarch64/nfqws b/binaries/aarch64/nfqws index 4854b6ed..8b44aac1 100755 Binary files a/binaries/aarch64/nfqws and b/binaries/aarch64/nfqws differ diff --git a/binaries/aarch64/tpws b/binaries/aarch64/tpws index 594460eb..404d619f 100755 Binary files a/binaries/aarch64/tpws and b/binaries/aarch64/tpws differ diff --git a/binaries/arm/ip2net b/binaries/arm/ip2net index 292e49e8..7ea6ca95 100755 Binary files a/binaries/arm/ip2net and b/binaries/arm/ip2net differ diff --git a/binaries/arm/mdig b/binaries/arm/mdig index 5b85ecc8..77d8dfe2 100755 Binary files a/binaries/arm/mdig and b/binaries/arm/mdig differ diff --git a/binaries/arm/nfqws b/binaries/arm/nfqws index b996db19..e09b2e1d 100755 Binary files a/binaries/arm/nfqws and b/binaries/arm/nfqws differ diff --git a/binaries/arm/tpws b/binaries/arm/tpws index 7fe9a6b2..6a13bfbc 100755 Binary files a/binaries/arm/tpws and b/binaries/arm/tpws differ diff --git a/binaries/freebsd-x64/dvtws b/binaries/freebsd-x64/dvtws index b3ac9173..31a8b0e5 100755 Binary files a/binaries/freebsd-x64/dvtws and b/binaries/freebsd-x64/dvtws differ diff --git a/binaries/freebsd-x64/ip2net b/binaries/freebsd-x64/ip2net index ea0c8022..af755026 100755 Binary files a/binaries/freebsd-x64/ip2net and b/binaries/freebsd-x64/ip2net differ diff --git a/binaries/freebsd-x64/mdig b/binaries/freebsd-x64/mdig index 90716da0..0b67ab77 100755 Binary files a/binaries/freebsd-x64/mdig and b/binaries/freebsd-x64/mdig differ diff --git a/binaries/freebsd-x64/tpws b/binaries/freebsd-x64/tpws index 4ed17faf..93f70ee4 100755 Binary files a/binaries/freebsd-x64/tpws and b/binaries/freebsd-x64/tpws differ diff --git a/binaries/mac64/mdig b/binaries/mac64/mdig index d348fde5..d4664309 100755 Binary files a/binaries/mac64/mdig and b/binaries/mac64/mdig differ diff --git a/binaries/mac64/tpws b/binaries/mac64/tpws index d5ee2176..40d9e1a4 100755 Binary files a/binaries/mac64/tpws and b/binaries/mac64/tpws differ diff --git a/binaries/mips32r1-lsb/ip2net b/binaries/mips32r1-lsb/ip2net index 91d31f10..e18eb627 100755 Binary files a/binaries/mips32r1-lsb/ip2net and b/binaries/mips32r1-lsb/ip2net differ diff --git a/binaries/mips32r1-lsb/mdig b/binaries/mips32r1-lsb/mdig index c277cd0e..4e960d15 100755 Binary files a/binaries/mips32r1-lsb/mdig and b/binaries/mips32r1-lsb/mdig differ diff --git a/binaries/mips32r1-lsb/nfqws b/binaries/mips32r1-lsb/nfqws index ee0fda53..f5a96672 100755 Binary files a/binaries/mips32r1-lsb/nfqws and b/binaries/mips32r1-lsb/nfqws differ diff --git a/binaries/mips32r1-lsb/tpws b/binaries/mips32r1-lsb/tpws index c974188a..52bcd3de 100755 Binary files a/binaries/mips32r1-lsb/tpws and b/binaries/mips32r1-lsb/tpws differ diff --git a/binaries/mips32r1-msb/ip2net b/binaries/mips32r1-msb/ip2net index 89e1ac63..e3dccad3 100755 Binary files a/binaries/mips32r1-msb/ip2net and b/binaries/mips32r1-msb/ip2net differ diff --git a/binaries/mips32r1-msb/mdig b/binaries/mips32r1-msb/mdig index da0450f2..2d4561e3 100755 Binary files a/binaries/mips32r1-msb/mdig and b/binaries/mips32r1-msb/mdig differ diff --git a/binaries/mips32r1-msb/nfqws b/binaries/mips32r1-msb/nfqws index 349cc1d6..9f6ba553 100755 Binary files a/binaries/mips32r1-msb/nfqws and b/binaries/mips32r1-msb/nfqws differ diff --git a/binaries/mips32r1-msb/tpws b/binaries/mips32r1-msb/tpws index 9202e6d7..faaa3599 100755 Binary files a/binaries/mips32r1-msb/tpws and b/binaries/mips32r1-msb/tpws differ diff --git a/binaries/mips64r2-msb/mdig b/binaries/mips64r2-msb/mdig index b69086e0..d9aa73bd 100755 Binary files a/binaries/mips64r2-msb/mdig and b/binaries/mips64r2-msb/mdig differ diff --git a/binaries/mips64r2-msb/nfqws b/binaries/mips64r2-msb/nfqws index 9aae3f66..b2643c9c 100755 Binary files a/binaries/mips64r2-msb/nfqws and b/binaries/mips64r2-msb/nfqws differ diff --git a/binaries/mips64r2-msb/tpws b/binaries/mips64r2-msb/tpws index 29ad87bb..a9aa3aff 100755 Binary files a/binaries/mips64r2-msb/tpws and b/binaries/mips64r2-msb/tpws differ diff --git a/binaries/ppc/ip2net b/binaries/ppc/ip2net index 0f9c93e2..eeaab7a0 100755 Binary files a/binaries/ppc/ip2net and b/binaries/ppc/ip2net differ diff --git a/binaries/ppc/mdig b/binaries/ppc/mdig index 9e799b6c..e18a6ddd 100755 Binary files a/binaries/ppc/mdig and b/binaries/ppc/mdig differ diff --git a/binaries/ppc/nfqws b/binaries/ppc/nfqws index fd06df80..1f99d6e1 100755 Binary files a/binaries/ppc/nfqws and b/binaries/ppc/nfqws differ diff --git a/binaries/ppc/tpws b/binaries/ppc/tpws index 901a7516..32860779 100755 Binary files a/binaries/ppc/tpws and b/binaries/ppc/tpws differ diff --git a/binaries/win64/winws.exe b/binaries/win64/winws.exe index a9cd3248..020a8bef 100644 Binary files a/binaries/win64/winws.exe and b/binaries/win64/winws.exe differ diff --git a/binaries/win64/zapret-winws/winws.exe b/binaries/win64/zapret-winws/winws.exe index a9cd3248..020a8bef 100644 Binary files a/binaries/win64/zapret-winws/winws.exe and b/binaries/win64/zapret-winws/winws.exe differ diff --git a/binaries/x86/ip2net b/binaries/x86/ip2net index 299f6be1..55409ce4 100755 Binary files a/binaries/x86/ip2net and b/binaries/x86/ip2net differ diff --git a/binaries/x86/mdig b/binaries/x86/mdig index 747f6616..3a3ce6da 100755 Binary files a/binaries/x86/mdig and b/binaries/x86/mdig differ diff --git a/binaries/x86/nfqws b/binaries/x86/nfqws index a19de719..76c45970 100755 Binary files a/binaries/x86/nfqws and b/binaries/x86/nfqws differ diff --git a/binaries/x86/tpws b/binaries/x86/tpws index 9c893e5b..c210d86d 100755 Binary files a/binaries/x86/tpws and b/binaries/x86/tpws differ diff --git a/binaries/x86_64/ip2net b/binaries/x86_64/ip2net index 44580d49..77a953e1 100755 Binary files a/binaries/x86_64/ip2net and b/binaries/x86_64/ip2net differ diff --git a/binaries/x86_64/mdig b/binaries/x86_64/mdig index 4cf10070..b90b33d5 100755 Binary files a/binaries/x86_64/mdig and b/binaries/x86_64/mdig differ diff --git a/binaries/x86_64/nfqws b/binaries/x86_64/nfqws index 25b52669..3fc9d3ce 100755 Binary files a/binaries/x86_64/nfqws and b/binaries/x86_64/nfqws differ diff --git a/binaries/x86_64/tpws b/binaries/x86_64/tpws index 990ea1fa..7ae9db07 100755 Binary files a/binaries/x86_64/tpws and b/binaries/x86_64/tpws differ diff --git a/binaries/x86_64/tpws_wsl.tgz b/binaries/x86_64/tpws_wsl.tgz index 48d7a479..b8aa2b67 100644 Binary files a/binaries/x86_64/tpws_wsl.tgz and b/binaries/x86_64/tpws_wsl.tgz differ diff --git a/docs/bsd.eng.md b/docs/bsd.eng.md index d71aad21..fa7c7baf 100644 --- a/docs/bsd.eng.md +++ b/docs/bsd.eng.md @@ -185,9 +185,9 @@ The setup is similar to OpenBSD, but there are important nuances. use it for redirection target. 3. pf.conf syntax is a bit different from OpenBSD. 4. How to set maximum table size : sysctl net.pf.request_maxcount=2000000 -5. The word 'divert-packet' is absent in the pfctl binary, divert-packet rules - are not working. 'divert-to' is not the same thing. Looks like its not - possible to use `dvtws` with PF in FreeBSD. +5. `divert-to` is broken. Loop avoidance scheme does not work. + This makes `dvtws` unusable with pf. + Someone posted kernel patch but 14-RELEASE is still broken. `/etc/pf.conf`: ``` @@ -303,6 +303,8 @@ rdr pass on em1 inet6 proto tcp from any to any port = http -> fe80::20c:29ff:5a rdr pass on em1 inet6 proto tcp from any to any port = https -> fe80::20c:29ff:5ae3:4821 port 988 ``` +Also there's a way to add redirect in the pfsense UI and start `tpws` from cron using `@reboot` prefix. +This way avoids modification of pfsense code. ## OpenBSD @@ -425,8 +427,7 @@ Then write the line: Initially, the kernel of this OS was based on BSD. That's why it is still BSD but a lot was modified by Apple. As usual a mass commercial project priorities -differ from their free counterparts. Apple guys do what they want. What -everyone have updated long ago they keep old like a mammoth. But who cares? +differ from their free counterparts. Apple guys do what they want. MacOS used to have ipfw but it was removed later and replaced by PF. It looks like divert sockets are internally replaced with raw. Its possible to request a diff --git a/docs/bsd.txt b/docs/bsd.txt index 2a26484c..829dc5c8 100644 --- a/docs/bsd.txt +++ b/docs/bsd.txt @@ -47,15 +47,6 @@ BSD не содержит системного вызова splice. tpws раб Управление асинхронными сокетами в tpws основано на linux-specific механизме epoll. В BSD для его эмуляции используется epoll-shim - прослойка для эмуляции epoll на базе kqueue. -Некоторые функции dvtws пришлось реализовывать через хаки. -В BSD много ограничений, особенностей и багов при работе с низкоуровневой сетью, в особенности в области ipv6. -Казалось бы столько лет прошло, а в коде все еще сидят ограничители 15-20 летней давности. -Прямая отсылка ipv6 фреймов с измененным source address и вовсе невозможна через raw sockets. -OpenBSD не дает отсылать через raw sockets tcp фреймы. -Там, где функции нельзя было реализовать напрямую, либо их реализация привела бы к залезанию в низкоуровневые дебри, -используются те же divert сокеты. Оказывается через них можно скармливать ядру любые пакеты, обходя ограничения -raw sockets. Не знаю насколько это легально, но пока это работает. Однако, имейте в виду. Что-то может сломаться. - mdig и ip2net полностью работоспособны в BSD. В них нет ничего системо-зависимого. FreeBSD @@ -122,10 +113,10 @@ ipfw add 100 fwd ::1,988 tcp from any to any 80,443 proto ip6 recv em1 Для всего трафика : ipfw delete 100 -ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted not sockarg xmit em0 +ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted xmit em0 # required for autottl mode only -ipfw add 100 divert 989 tcp from any 80,443 to any tcpflags syn,ack in not diverted not sockarg recv em0 -/opt/zapret/nfq/dvtws --port=989 ---dpi-desync=split2 +ipfw add 100 divert 989 tcp from any 80,443 to any tcpflags syn,ack in not diverted recv em0 +/opt/zapret/nfq/dvtws --port=989 --dpi-desync=split2 Для трафика только на таблицу zapret, за исключением таблицы nozapret : ipfw delete 100 @@ -135,15 +126,6 @@ ipfw add 100 divert 989 tcp from any to table\(zapret\) 80,443 out not diverted ipfw add 100 divert 989 tcp from table\(zapret\) 80,443 to any tcpflags syn,ack in not diverted not sockarg recv em0 /opt/zapret/nfq/dvtws --port=989 --dpi-desync=split2 -Недопущение зацикливания - повторного вхождения фейк пакетов на обработку. -FreeBSD игнорирует sockarg в ipv6. -Это искусственное ограничение в коде ядра, которое тянется уже лет 10-20. -Кто-то в свое время посчитал код сырым, и до сих пор никто не удосужился поправить. -dvtws в FreeBSD отсылает ipv4 фреймы через raw socket. Такие пакеты не 'diverted'. Они отсекаются по 'sockarg'. -Для отсылки ipv6 фейков используется divert socket, потому что ipv6 raw сокеты в BSD не дают самому -формировать IP заголовок и подменять source address. Фейки в ipv6 'diverted'. Они отсекаются по 'diverted'. -В linux nfqws для недопущения зацикливания используется fwmark. - PF в FreeBSD: Настройка аналогична OpenBSD, но есть важные нюансы. @@ -152,8 +134,10 @@ PF в FreeBSD: Смотрите через ifconfig адрес fe80:... и добавляете в правило 3) Синтаксис pf.conf немного отличается. Более новая версия PF. 4) Лимит на количество элементов таблиц задается так : sysctl net.pf.request_maxcount=2000000 -5) Слово 'divert-packet' отсутствует в бинарике pfctl, правила divert-packet выдают ошибку. -'divert-to' - это не то. Не похоже, что в FreeBSD можно завести dvtws через PF. +5) divert-to сломан. Он работает, но не работает механизм предотвращения зацикливаний. +Кто-то уже написал патч, но в 14-RELEASE проблема все еще есть. +Следовательно, на данный момент работа dvtws через pf невозможна. + /etc/pf.conf ----------- rdr pass on em1 inet6 proto tcp to port {80,443} -> fe80::31c:29ff:dee2:1c4d port 988 @@ -168,7 +152,7 @@ pfsense ------- pfsense основано на FreeBSD. -pfsense использует фаервол pf, а он не поддерживает divert. +pfsense использует фаервол pf, а он имеет проблемы с divert. К счастью, модули ipfw и ipdivert присутствуют в поставке последних версий pfsense. Их можно подгрузить через kldload. В некоторых более старых версиях pfsense требуется изменить порядок фаерволов через sysctl, сделав ipfw первым. @@ -204,7 +188,7 @@ sysctl net.inet6.ip6.pfil.outbound=ipfw,pf sysctl net.inet6.ip6.pfil.inbound=ipfw,pf ipfw delete 100 -ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted not sockarg xmit em0 +ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted xmit em0 pkill ^dvtws$ dvtws --daemon --port 989 --dpi-desync=split2 @@ -261,6 +245,9 @@ rdr pass on em1 inet6 proto tcp from any to any port = http -> fe80::20c:29ff:5a rdr pass on em1 inet6 proto tcp from any to any port = https -> fe80::20c:29ff:5ae3:4821 port 988 ----------- +Так же есть более элегантный способ запуска tpws через @reboot в cron и правило перенаправления в UI. +Это позволит не редактировать код pfsense. + OpenBSD ------- @@ -351,10 +338,7 @@ MacOS Иначально ядро этой ОС "darwin" основывалось на BSD, потому в ней много похожего на другие версии BSD. Однако, как и в других массовых коммерческих проектах, приоритеты смещаются в сторону от оригинала. -Яблочники что хотят, то и творят. Меняют, убирают, оставляют какие-то безумно старые версии API и утилит. -То, что уже давно везде обновили, может быть еще древним как мамонт в самой последней версии MacOS. -Но кого это волнует ? - +Яблочники что хотят, то и творят. Раньше был ipfw, потом его убрали, заменили на PF. Есть сомнения, что divert сокеты в ядре остались. Попытка создать divert socket не выдает ошибок, но полученный сокет ведет себя точно так же, как raw, со всеми его унаследованными косяками + еще яблочно специфическими. diff --git a/docs/bsdfw.txt b/docs/bsdfw.txt index 90317242..2575c690 100644 --- a/docs/bsdfw.txt +++ b/docs/bsdfw.txt @@ -19,22 +19,16 @@ ipfw add 100 fwd ::1,988 tcp from any to any 80,443 proto ip6 recv em1 /opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 -; Loop avoidance. -; FreeBSD artificially ignores sockarg for ipv6 in the kernel. -; This limitation is coming from the ipv6 early age. Code is still in "testing" state. 10-20 years. Everybody forgot about it. -; dvtws sends ipv6 forged frames using another divert socket (HACK). they can be filtered out using 'diverted'. - - ipfw delete 100 -ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted not sockarg xmit em0 +ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted xmit em0 ; required for autottl mode -ipfw add 100 divert 989 tcp from any 80,443 to any tcpflags syn,ack in not diverted not sockarg recv em0 +ipfw add 100 divert 989 tcp from any 80,443 to any tcpflags syn,ack in not diverted recv em0 ; udp -ipfw add 100 divert 989 udp from any to any 443 out not diverted not sockarg xmit em0 +ipfw add 100 divert 989 udp from any to any 443 out not diverted xmit em0 ipfw delete 100 ipfw add 100 allow tcp from me to table\(nozapret\) 80,443 -ipfw add 100 divert 989 tcp from any to table\(zapret\) 80,443 out not diverted not sockarg xmit em0 +ipfw add 100 divert 989 tcp from any to table\(zapret\) 80,443 out not diverted xmit em0 /opt/zapret/nfq/dvtws --port=989 --debug --dpi-desync=split diff --git a/docs/changes.txt b/docs/changes.txt index 9bf80dd5..d526c78e 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -299,3 +299,13 @@ v60 blockcheck: port block test, partial ip block test nfqws: seqovl split/disorder modes + +v61 + +C code cleanups +dvtws: do not use raw sockets. use divert. +nfqws,tpws: detect TLS 1.2 ClientHello from very old libraries with SSL 3.0 version in record layer +nfqws,tpws: debug log to file and syslog +tpws: --connect-bind-addr option +tpws: log local endpoint (including source port number) for remote leg +nfqws,tpws: reduced executable size by several KB by moving logging from macros to functions diff --git a/docs/quick_start.txt b/docs/quick_start.txt index e869615d..931b74d2 100644 --- a/docs/quick_start.txt +++ b/docs/quick_start.txt @@ -130,7 +130,7 @@ NFQWS_OPT_DESYNC_HTTP и NFQWS_OPT_DESYNC_HTTPS заменяют стратег 9) На все остальные вопросы install_easy.sh отвечайте согласно выводимой аннонтации. 10) Если ломаются отдельные незаблокированные ресурсы, следует вносить их в исключения, либо пользоваться ограничивающим -ipset или хост листом. Читайте основной толмуд readme.txt ради подробностей. +ipset или хост листом. Читайте основной талмуд readme.txt ради подробностей. Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея. В некоторых случаях вы не обойдетесь без знаний и основного "талмуда". diff --git a/docs/readme.eng.md b/docs/readme.eng.md index 5adb938c..1a23886d 100644 --- a/docs/readme.eng.md +++ b/docs/readme.eng.md @@ -571,7 +571,8 @@ You need to use nftables instead with hook priority 101 or higher. tpws is transparent proxy. ``` - --debug=0|1|2 ; 0(default)=silent 1=verbose 2=debug + --debug=0|1|2|syslog|@ ; 1 and 2 means log to console and set debug level. for other targets use --debug-level. + --debug-level=0|1|2 ; specify debug level for syslog and @ --bind-addr=|; for v6 link locals append %interface_name : fe80::1%br-lan --bind-iface4= ; bind to the first ipv4 addr of interface --bind-iface6= ; bind to the first ipv6 addr of interface @@ -584,6 +585,7 @@ tpws is transparent proxy. --bind-wait-ip= ; after ifup wait for ip address to appear up to N seconds --bind-wait-ip-linklocal= ; accept only link locals first N seconds then any --bind-wait-only ; wait for bind conditions satisfaction then exit. return code 0 if success. + --connect-bind-addr=| ; address for outbound connections. for v6 link locals append %%interface_name --port= ; port number to listen on --socks ; implement socks4/5 proxy instead of transparent proxy --local-rcvbuf= ; SO_RCVBUF for local legs diff --git a/docs/readme.txt b/docs/readme.txt index d7691332..5a0cb3d9 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -1,4 +1,4 @@ -zapret v.60 +zapret v.61 English ------- @@ -282,6 +282,11 @@ nfqws ЗАМЕЧАНИЕ. Параметр --wsize считается устаревшим и более не поддерживается в скриптах. Функции сплита выполняются в рамках атаки десинхронизации. Это быстрее и избавляет от целого ряда недостатков wsize. +--debug позволяет выводить подробный лог действий на консоль, в syslog или в файл. +Может быть важен порядок следования опций. --debug лучше всего указывать в самом начале. +Опции анализируются последовательно. Если ошибка будет при проверке опции, а до анализа --debug еще дело не дошло, +то сообщения не будут выведены в файл или syslog. + АТАКА ДЕСИНХРОНИЗАЦИИ DPI Суть ее в следующем. После выполнения tcp 3-way handshake идет первый пакет с данными от клиента. Там обычно "GET / ..." или TLS ClientHello. Мы дропаем этот пакет, заменяя чем-то другим. @@ -647,7 +652,8 @@ tpws ----- tpws - это transparent proxy. - --debug=0|1|2 ; Количество буковок в output : 0(default)=тихо, 1=подробно, 2=отладка + --debug=0|1|2|syslog|@ ; 0,1,2 = логирование на косоль : 0=тихо, 1(default)=подробно, 2=отладка. + --debug-level=0|1|2 ; указать уровень логирования для syslog и @ --daemon ; демонизировать прогу --pidfile= ; сохранить PID в файл --user= ; менять uid процесса @@ -668,6 +674,10 @@ tpws - это transparent proxy. ; --bind-linklocal=unwanted : согласиться на LL после N секунд ; --bind-linklocal=prefer : согласиться на global address после N секунд --bind-wait-only ; подождать все бинды и выйти. результат 0 в случае успеха, иначе не 0. + --connect-bind-addr ; с какого адреса подключаться во внешнюю сеть. может быть ipv4 или ipv6 адрес + ; если указан ipv6 link local, то требуется указать с какого он интерфейса : fe80::1%br-lan + ; опция может повторяться для v4 и v6 адресов + ; опция не отменяет правил маршрутизации ! выбор интерфейса определяется лишь правилами маршрутизации, кроме случая v6 link local. --socks ; вместо прозрачного прокси реализовать socks4/5 proxy --no-resolve ; запретить ресолвинг имен через socks5 --resolve-threads ; количество потоков ресолвера @@ -725,6 +735,15 @@ tpws - это transparent proxy. --hostlist-auto-debug= ; лог положительных решений по autohostlist. позволяет разобраться почему там появляются хосты. +--debug позволяет выводить подробный лог действий на консоль, в syslog или в файл. +Может быть важен порядок следования опций. --debug лучше всего указывать в самом начале. +Опции анализируются последовательно. Если ошибка будет при проверке опции, а до анализа --debug еще дело не дошло, +то сообщения не будут выведены в файл или syslog. +--debug=0|1|2 позволяют сразу в одном параметре включить логирование на консоль и указать уровень. +Сохранено для совместимости с более старыми версиями. Для выбора уровня в режиме syslog или file используйте +отдельный параметр --debug-level. Если в этих режимах --debug не указывать уровень через --debug-level, то автоматически +назначается уровень 1. + Параметры манипуляции могут сочетаться в любых комбинациях. В случае http запроса split-http-req имеет преимущество над split-pos.