Zapret: обсуждение

А можно в Запрете организовать блоки профилей? То есть составил я мультистратегию из 6 профилей - если этот блок не срабатывает, то включается второй из нескольких профилей. Таким образом, можно было бы сделать несколько блоков профилей, которые бы перебирались.

Это вряд ли будет. zapret расчитан на дурение произвольных случаев.
И не всегда можно надежно определить критерий успеха.
Можно утонуть в этих случаях. Все станет совсем путано и сложно

@bolvan

Если используются скрипты zapret, то в опции NFQWS сначала пишите специальные стратегии для особых доменов. После них пишите --new и дальше то, что было там раньше.
Все свои “фишки” типа стандартных листов / автолиста скрипты zapret добавляют в конец - к последнему профилю десинхронизации.

Если профиль удовлетворяет жесткому фильтру, для него задан хостлист, и у нас еще нет имени хоста, идет переход к следующему профилю. В противном случае идет проверка по хостлистам этого профиля. Если имя хоста удовлетворяет листам, выбирается этот профиль. Иначе идет переход к следующему.

NFQWS_OPT_DESYNC="--hostlist=list-youtube.txt --dpi-desync=fake,split2 --dpi-desync-repeats=8 --dpi-desync-split-seqovl=1 --dpi-desync-split-tls=sniext --dpi-desync-ttl=3 --dpi-desync-split-pos=1 --dpi-desync-fake-tls=google.bin --new --dpi-desync=fake,disorder2 --dpi-desync-ttl=3 --dpi-desync-split-pos=1 --dpi-desync-any-protocol=1"

при таком конфиге, что бы не было внутри list-youtube.txt (хоть только один 123.com) - не скачиваются приложения из play.google.com, скачивает только если файл (с хостами) пустой или отсутствует…

предполагаю, что почему-то на этапе соединения с маркетом соединение попадает в первую стратегию с хостлистом и там и остается, но почему? в остальном все работает корректно как и ожидается…

Да, такая же петрушка
blockcheck.log (678,1 КБ)
Ну в принципе такие видео лечатся обновлением страницы

Спойлер

Ютуб только что снова поломался

Зачем предполагать, если есть --debug

Я говорю ютуб только что поломали опять есть настройки ?

Почему-то nfqws путает везде SNI записи, несмотря на параметры с хостами.

Конфиг следующий:

# this file is included from init scripts
# change values here

# can help in case /tmp has not enough space
#TMPDIR=/opt/zapret/tmp

# redefine user for zapret daemons. required on Keenetic
#WS_USER=nobody

# override firewall type : iptables,nftables,ipfw
FWTYPE=nftables

# options for ipsets
# maximum number of elements in sets. also used for nft sets
SET_MAXELEM=522288
# too low hashsize can cause memory allocation errors on low RAM systems , even if RAM is enough
# too large hashsize will waste lots of RAM
IPSET_OPT="hashsize 262144 maxelem $SET_MAXELEM"
# dynamically generate additional ip. $1 = ipset/nfset/table name
#IPSET_HOOK="/etc/zapret.ipset.hook"

# options for ip2net. "-4" or "-6" auto added by ipset create script
IP2NET_OPT4="--prefix-length=22-30 --v4-threshold=3/4"
IP2NET_OPT6="--prefix-length=56-64 --v6-threshold=5"
# options for auto hostlist
AUTOHOSTLIST_RETRANS_THRESHOLD=3
AUTOHOSTLIST_FAIL_THRESHOLD=3
AUTOHOSTLIST_FAIL_TIME=60
# 1 = debug autohostlist positives to ipset/zapret-hosts-auto-debug.log
AUTOHOSTLIST_DEBUGLOG=0

# number of parallel threads for domain list resolves
MDIG_THREADS=30

# ipset/*.sh can compress large lists
GZIP_LISTS=1
# command to reload ip/host lists after update
# comment or leave empty for auto backend selection : ipset or ipfw if present
# on BSD systems with PF no auto reloading happens. you must provide your own command
# set to "-" to disable reload
#LISTS_RELOAD="pfctl -f /etc/pf.conf"

# override ports
#HTTP_PORTS=80-81,85
#HTTPS_PORTS=443,500-501
#QUIC_PORTS=443,444

# CHOOSE OPERATION MODE
# MODE : nfqws,tpws,tpws-socks,filter,custom
# nfqws : nfqws for dpi desync
# tpws : tpws transparent mode
# tpws-socks : tpws socks mode
# filter : no daemon, just create ipset or download hostlist
# custom : custom mode. should modify custom init script and add your own code
MODE=custom
# apply fooling to http
MODE_HTTP=1
# for nfqws only. support http keep alives. enable only if DPI checks for http request in any outgoing packet
MODE_HTTP_KEEPALIVE=1
# apply fooling to https
MODE_HTTPS=1
# apply fooling to quic
MODE_QUIC=0
# none,ipset,hostlist,autohostlist
MODE_FILTER=autohostlist

# CHOOSE NFQWS DAEMON OPTIONS for DPI desync mode. run "nfq/nfqws --help" for option list
# SUFFIX VARS define additional lower priority desync profile. it's required if MODE_FILTER=hostlist and strategy has hostlist-incompatible 0-phase desync methods (syndata,wssize)
DESYNC_MARK=0x40000000
DESYNC_MARK_POSTNAT=0x20000000
NFQWS_OPT_DESYNC="--dpi-desync=syndata,disorder2 --dpi-desync-fooling=badseq --dpi-desync-fake-syndata=/opt/zapret/files/fake/tls_clienthello_sberbank_ru.bin --dpi-desync-split-pos=1"
#NFQWS_OPT_DESYNC="--dpi-desync=syndata,disorder2 --dpi-desync-fooling=badseq --dpi-desync-fake-syndata=/opt/zapret/files/fake/tls_clienthello_iana_org.bin --dpi-desync-split-pos=1"
#NFQWS_OPT_DESYNC_SUFFIX=
#NFQWS_OPT_DESYNC_HTTP=
#NFQWS_OPT_DESYNC_HTTP_SUFFIX=
#NFQWS_OPT_DESYNC_HTTPS=
#NFQWS_OPT_DESYNC_HTTPS_SUFFIX=
#NFQWS_OPT_DESYNC_HTTP6=
#NFQWS_OPT_DESYNC_HTTP6_SUFFIX=
#NFQWS_OPT_DESYNC_HTTPS6=
#NFQWS_OPT_DESYNC_HTTPS6_SUFFIX=
#NFQWS_OPT_DESYNC_QUIC=
#NFQWS_OPT_DESYNC_QUIC=
#NFQWS_OPT_DESYNC_QUIC_SUFFIX=
#NFQWS_OPT_DESYNC_QUIC6=
#NFQWS_OPT_DESYNC_QUIC6_SUFFIX=

# CHOOSE TPWS DAEMON OPTIONS. run "tpws/tpws --help" for option list
# SUFFIX VARS define additional lower priority desync profile. it's required if MODE_FILTER=hostlist and strategy has hostlist-incompatible 0-phase desync methods (mss)
TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3 --oob"
#TPWS_OPT_SUFFIX="--mss 88"

# openwrt only : donttouch,none,software,hardware
FLOWOFFLOAD=donttouch

# openwrt: specify networks to be treated as LAN. default is "lan"
#OPENWRT_LAN="lan lan2 lan3"
# openwrt: specify networks to be treated as WAN. default wans are interfaces with default route
#OPENWRT_WAN4="wan vpn"
#OPENWRT_WAN6="wan6 vpn6"

# for routers based on desktop linux and macos. has no effect in openwrt.
# CHOOSE LAN and optinally WAN/WAN6 NETWORK INTERFACES
# or leave them commented if its not router
# it's possible to specify multiple interfaces like this : IFACE_LAN="eth0 eth1 eth2"
# if IFACE_WAN6 is not defined it take the value of IFACE_WAN
#IFACE_LAN=eth0
#IFACE_WAN=eth1
#IFACE_WAN6="ipsec0 wireguard0 he_net"

# should start/stop command of init scripts apply firewall rules ?
# not applicable to openwrt with firewall3+iptables
INIT_APPLY_FW=1
# firewall apply hooks
#INIT_FW_PRE_UP_HOOK="/etc/firewall.zapret.hook.pre_up"
#INIT_FW_POST_UP_HOOK="/etc/firewall.zapret.hook.post_up"
#INIT_FW_PRE_DOWN_HOOK="/etc/firewall.zapret.hook.pre_down"
#INIT_FW_POST_DOWN_HOOK="/etc/firewall.zapret.hook.post_down"

# do not work with ipv4
#DISABLE_IPV4=1
# do not work with ipv6
DISABLE_IPV6=1

# select which init script will be used to get ip or host list
# possible values : get_user.sh get_antizapret.sh get_combined.sh get_reestr.sh get_hostlist.sh
# comment if not required
#GETLIST=

Содержимое init.d custom

➜  zapret git:(master) ✗ ls init.d/openwrt/custom.d/ -la
drwxr-xr-x    2 root     root          4096 Oct 13 19:26 .
drwxr-xr-x    4 root     root          4096 Oct 13 00:09 ..
-rw-r--r--    1 root     root             0 Oct 13 00:09 .keep
-rw-r--r--    1 root     root           437 Oct 13 01:08 10-inherit-nfqws
-rw-r--r--    1 root     root         13099 Oct 13 19:26 50-discord

Скрипты без изменений.

Все TLS handshake теперь выглядят так на любой хост, даже если его нет в хостлисте, но спасает введение в список zapret-hosts-user-exclude.txt.

Я что-то упускаю?

Из-за неправильных SNI часть вебов просто не хочет работать.


Запустил руками в режиме дебаг и другим TLS handshake.bin, теперь проблемы нет, я запутался…

Здравствуй, спасибо, что помогаете, и простите что отнял у вас время. Запрет я наконец смог завести, решил проблему самым очевидным способом, перепрошил свой банан.
В этот банан напаяно три вида памяти (nor, nand, emmc) для разных нужн, каждую можно довольно легко прошить, но так же он поддерживает прямой запуск с sd карты. Я собрал новый образ, вставил карту, поставил запрет и он заработал, стало очевидно, что дело именно в прошивке.
Прошлый образ я собирал через сайт, указав дополнительные модули для кастомной установки. Я делал это не впервый раз. В основном там были те штуки, что просит сам запрет (kmod-nft-queue kmod-nfnetlink-queue coreutils-sort и тд), и некоторые вещи для работы с usb, модули для люси, где должны выводиться метрики температуры и загрузки цп. Хоть я обычно ей и не пользуюсь, тут я явно накидал всякого и погуще, раз новая машинка позваляла. Собственно в другом роутере было все тоже самое, но без этих модулей с метриками и модулей usb. Нужно было сразу догадаться проверить, а не отнимать время у себя и вас.
В этот раз я указывал только самое необхомое, как делаю обычно. В итоге прошился и всё теперь работает.
Но понять до конца, что конкретно могло конфликтовать я не смог. Я воспользовался до полной переустановки вашим советов:

И посмотреть висят ли процессы на нужных очередях
ps | grep nfqws

И тогда я и заметил, что в какой-то момен nfqws просто переставал работать. Из трёх процессов сначала оставался висеть один, потом пропадал и он. Всё это происходило в течении одной минуты.

 8221 daemon   17888 S    /opt/zapret/nfq/nfqws --qnum=200 --user=daemon --dpi-desync-fwmark=0x40000000 -debug=@/opt/zapret/log_nfqws.txt --hostlist=/opt/zapret/list-youtube.txt --dpi-desync=split2 --new --dpi-desync=fake,split --dpi-desync-fooling=datanoack
 8222 daemon   17884 S    /opt/zapret/nfq/nfqws --qnum=202 --user=daemon --dpi-desync-fwmark=0x40000000 --hostlist=/opt/zapret/list-youtube.txt --dpi-desync=fake,split2 --dpi-desync-fooling=datanoack --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin --new --dpi-desync=fake,split2 --dpi-desync-fooling=datanoack
 8223 daemon   17884 S    /opt/zapret/nfq/nfqws --qnum=210 --user=daemon --dpi-desync-fwmark=0x40000000 --hostlist=/opt/zapret/list-youtube.txt --dpi-desync=fake --dpi-desync-repeats=2 --dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin --new --dpi-desync=fake --dpi-desync-repeats=2
 8295 root      1656 S    grep --color=yes nfqws
 8296 root      1320 S    tee ps_nfqws_bpi-r3.txt

Найти, пробежавшись по логам, какого-то конфликта и ошибок, явно указывающий на пробемы, я не смог. Всё, что давал лог запрета, я кидал ранее.

Настроек универсальных может не быть. Во-первых, ваш вопрос скорее сюда:

Во-вторых, проверьте для начала рабочие стратегии с отключёнными обходчиками с помощью Goodcheck:

Используется syndata. syndata не работает с хостлистами.
Поскольку используется autohostlist, этот профиль является приоритетным, и на него падает syndata.
Применение идет с игнором хостлиста.
disorder применяется по хостлисту.
То есть для всех в хостлисте - syndata,disorder. Для остальных - syndata

В dmesg ничего не было ?
Может какая-то ошибка диска, рид еррор или что-то еще ?
Про OOM не спрашиваю. На банане там гигабайт(ы)

Полагаю, нужно написать в этой теме. Использовал сборку YTDisBystro на Windows Server 2008 R2.

При запуске winws.exe выдаётся сообщение не найдена wlanapi.dll. На данном сервере нет поддержки WLAN, да и не нужна она там. Понятно, что можно скопировать dll от windows 7(x64) или извлечь из дистрибутива, но всё же. Проблема то копеечная, возможно ли совсем не использовать эту библиотеку?
DLL от windows 7 можно положить прямо в папку с программой, тогда всё запускается и работает. Спасибо.

Легко установить поддержку WLAN через установку/удаление компонентов. servermanager
wlanapi используется для функции --ssid-filter

Спасибо, нашёл в Server Manager - Features- Add Features. Да, действительно, Wireless LAN Service не была установлена, видимо, по умолчанию, сейчас пошёл в другой сервер посмотреть - то же самое.

Именно так. По умолчанию не ставится.
А так на серверных версиях есть практически все, но только надо доустанавливать.
Начиная, с desktop experience.
Я уже давно ушел с клиентских версий и использую как десктоп серверные.
Работает практически все. За крайне редким исключением. И игры гоняются даже, хотя бывает надо пошаманить с AMD driver

@bolvan , что-то с утра задумался по поводу tls1.2/tls1.3. Насколько я понял на большинстве сайтов уже используется 1.3, так что стратегию видимо оптимально под него подбирать (я не говорю про quic - это отдельная тема).
Но как грамотно сделать fallback для 1.2? Отдельно ручками заносить в отдельный hostlist домены с 1.2 с соответствующими правилами или есть более элегантное решение?

Я уже писал неоднократно, что TLS 1.2 - это гиря 50 кг, а TLS 1.3 - 20 кг.
качок, поднявший 50, поднимет и 20. 20 только когда лучше, чем ничего

Да, эти ваши слова я помню.
Просто дело в контексте rr*-.googlevideo.com-хостов. В случае с tls 1.2 blockcheck выдаёт буквально пару рабочих вариантов, в случае с 1.3 - достаточно много. И, очевидно, что ютуб поддерживает 1.3. Проблема в том, что пересечений по работающим стратегиям между 1.2 и 1.3 нет.
Поэтому я и подумал что надо как-то отдельно правила для 1.2 и 1.3 сделать.