Канон Шредингера (31 янв 2026)

Фантастический рассказ. О тульпах, людях и богах.

Установка и конфигурирование bol-van/zapret в linux

Больше
2 нед. 6 дн. назад - 2 нед. 6 дн. назад #1 от Aleksej
Скажу честно, петля затягивается. То, что работало вчера, сегодня уже может не работать. Именно потому ищем новые решения; как говорят шлюшки-айтишники Роспотребнадзора - "мне просто было интересно решить техническую проблему". Ок.

Тестировал на Leap OpenSUSE 15.6. Сделал ряд скриптов, значительно облегчающих работу с этим автономным средством противодействия DPI, выложу в ближайшее время на гитхабе. А пока - вот так, короткой строкой. Понеслось:

Code:
sudo zypper install -t pattern devel_basis sudo zypper install -y gcc make libmnl-devel zlib-devel libcap-devel libnetfilter_queue-devel libnfnetlink-devel


Дальше, опять же по-быстрому, делаем ряд симлинков:

Code:
sudo ln -s /usr/include/libmnl/libmnl/libmnl.h /usr/include/libmnl/libmnl.h sudo ln -s /usr/include/libnetfilter_queue/libnetfilter_queue/libnetfilter_queue.h            /usr/include/libnetfilter_queue/libnetfilter_queue.h sudo ln -s   /usr/include/libnfnetlink/libnfnetlink/libnfnetlink.h   /usr/include/libnfnetlink/libnfnetlink.h sudo ln -s   /usr/include/libnfnetlink/libnfnetlink/linux_nfnetlink.h   /usr/include/libnfnetlink/linux_nfnetlink.h sudo ln -s   /usr/include/libnfnetlink/libnfnetlink/linux_nfnetlink_compat.h   /usr/include/libnfnetlink/linux_nfnetlink_compat.h sudo ln -s   /usr/include/libnetfilter_queue/libnetfilter_queue/linux_nfnetlink_queue.h   /usr/include/libnetfilter_queue/linux_nfnetlink_queue.h

Теперь (всё работает до ребута только):

Code:
sudo modprobe nfnetlink_queue sudo modprobe nf_conntrack sudo modprobe nf_defrag_ipv6  # для IPv6, если используется sudo sysctl -w net.netfilter.nf_conntrack_tcp_be_liberal=1  # либеральный TCP-трекинг sudo sysctl -w net.netfilter.nf_conntrack_checksum=0  # badsum в desync sudo nft add table inet zapret sudo nft add chain inet zapret output '{type filter hook output priority 0; }' sudo nft add rule inet zapret output \     meta mark and 0x40000000 == 0 \     tcp dport { 80, 443 } \     ct original packets 1-6 \     counter queue num 100 bypass


Далее.

Code:
git clone https://github.com/bol-van/zapret.git cd zapret ./install_easy.sh

Если были неудачные попытки инсталляции, оптимально:

Code:
make clean

Проверяем:

Code:
sudo nft -v

у меня, таким образом, nftables v0.9.8 (E.D.S.).
Тестируем; после ввода команды второй раз счетчики должны меняться:

Code:
sudo nft list table inet zapret curl -4 https://rutracker.org sudo nft list table inet zapret


Теперь запускаем скрипт тестирования стратегий обхода блокировок (лежит в корне каталога zapret), предварительно сделав исполняемым:

Code:
chmod +x blockcheck.sh ./blockcheck.sh


Скрипт, в качестве итога работы, выведет в консоль несколько стратегий, в результате применения которых ему удалось через curl достучаться до rutracker.org (по умолчанию). Выбираем любую и запускаем софтину, например:

Code:
sudo ~/zapret/nfq/nfqws --qnum=100 --dpi-desync=fake --dpi-desync-ttl=4 --debug=1

Выход как-то так:

Code:
sudo kill $(cat /var/run/nfqws.pid)

Но, повторюсь, неудобно и хлопотно. Действительно заработал nfqws у меня лишь только после того, как удалось автоматизировать рутину, чтобы не тратить на нее время. Об этом - в самое ближайшее время.
Последнее редактирование: 2 нед. 6 дн. назад пользователем Aleksej. Причина: Небольшие исправления

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 1
Больше
2 нед. 4 дн. назад #2 от Aleksej
Вот как-то так.

zapret (nfqws) — ручной запуск и автоподбор стратегий

Данный набор скриптов предназначен для **ручного запуска zapret (nfqws)** без установки его в виде systemd-сервиса, также для автоматического подбора рабочей DPI-desync-стратегии под актуальные сетевые условия.

Требования
  • Linux с поддержкой `nfqueue` и `nftables`
  • Запуск от `root` (или через `sudo`)
  • Собранный `nfqws`
  • Установленные зависимости для `curl`
Порядок использования

1. Получение списка стратегий. Запустите оригинальный скрипт:
Code:
./blockcheck.sh

Он входит в репозиторий zapret и выводит в консоль список потенциально рабочих стратегий DPI-desync. Примечание: убедитесь, что у blockcheck.sh` и всех вспомогательных скриптов выставлены права на выполнение.

2. Подготовка strategies.txt

Скопируйте стратегии, полученные от `blockcheck.sh`, в файл:
Code:
./zapret/strategies.txt

Внимание. Формат файла критичен:
  1. каждая стратегия должна начинаться **с новой строки;
  2. между стратегиями должна быть одна пустая строка;
  3. никаких кавычек, комментариев или продолжений строк.
Пример:
Code:
--dpi-desync=fake --dpi-desync-ttl=10 --orig-ttl=1 --dpi-desync=hostfakesplit --dpi-desync-fooling=ts --dpi-desync-hostfakesplit-mod=altorder=1 --dpi-desync=fakedsplit --dpi-desync-autottl=-1


3. Автоматический подбор рабочей стратегии

Запустите автотест:
Code:
sudo ./zapret-autotest.sh

Во время работы скрипт:
  • загружает необходимые kernel-модули (`nfnetlink_queue`, `nf_conntrack`);
  • применяет нужные `sysctl`-параметры;
  • настраивает `nftables` для перенаправления трафика в `NFQUEUE`;
  • поочерёдно запускает `nfqws` с каждой стратегией;
  • проверяет доступ к тестовому ресурсу (`rutracker.org`) через `curl`;
  • останавливается при нахождении первой рабочей стратегии.
Поскольку механизмы DPI и блокировок могут изменяться со временем, рекомендуется периодически повторять автотест.

4. Сохранение результата

При успешном подборе стратегия автоматически сохраняется в файл:
Code:
WORKING_STRATEGY.conf

Этот файл используется напрямую для запуска nfqws и не требует ручного редактирования.

5. Запуск zapret в рабочем режиме

Для обычного использования выполните:
Code:
sudo ./zapret-start.sh

Скрипт:
  • повторно применяет kernel-модули и сетевые параметры (повторный запуск безопасен);
  • проверяет и настраивает nftables;
  • запускает nfqws с параметрами из WORKING_STRATEGY.conf.
После этого zapret начинает работать с подтверждённой рабочей стратегией.

Примечания
  • Все системные изменения, выполняемые скриптами, идемпотентны и не требуют перезагрузки.
  • Запуск осуществляется только вручную без systemd-сервисов.
  • При необходимости стратегию всегда можно заменить повторным запуском автотеста.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 нед. 4 дн. назад #3 от Aleksej

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 нед. 4 дн. назад #4 от orion
Тяжелая видать софтина, не для слабых машин.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 нед. 4 дн. назад #5 от evgenij
Софтина не тяжелая. Тяжелый инет, полученный таким способом.

Have a lot of fun!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 нед. 4 дн. назад #6 от Aleksej
Ну, чем богаты. Звиняйте, хлопцы.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 нед. 4 дн. назад #7 от evgenij
ByeDPI больше не работает?
masterpro.ws/forum/24-soft/5215-svobodny...-bez-vpn-v-rf-byedpi

Have a lot of fun!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 нед. 4 дн. назад #8 от Aleksej
Не знаю. На мобильном интернете может и не работать. Там уже один только "приватный" телеграм, сук, Паши Дурова пашет, когда блокировки.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 нед. 4 дн. назад #9 от dinos
попробую отпишусь

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 нед. 1 день назад #10 от Aleksej
Просто добавляем в директорию zapret эти три файла. Описание и ссылка на гитхаб - выше.

zapret-autotest.sh
Code:
#!/usr/bin/env bash set -e BASE_DIR="$(cd "$(dirname "$0")" && pwd)" NFQWS="$BASE_DIR/nfq/nfqws" STRATEGIES="$BASE_DIR/strategies.txt" RESULT="$BASE_DIR/WORKING_STRATEGY.conf" echo "[*] preparing system (kernel + nftables)" modprobe nfnetlink_queue || true modprobe nf_conntrack || true sysctl -w net.netfilter.nf_conntrack_tcp_be_liberal=1 sysctl -w net.netfilter.nf_conntrack_checksum=0 nft list table inet zapret >/dev/null 2>&1 || \ nft add table inet zapret nft list chain inet zapret output >/dev/null 2>&1 || \ nft add chain inet zapret output '{ type filter hook output priority 0; }' nft list chain inet zapret output | grep -q "queue num 100" || \ nft add rule inet zapret output \     meta mark and 0x40000000 == 0 \     tcp dport { 80, 443 } \     ct original packets 1-6 \     queue num 100 bypass echo "[*] starting autotest" while IFS= read -r strategy; do     [[ -z "$strategy" || "$strategy" =~ ^# ]] && continue     echo "[*] testing: $strategy"     timeout 12 sudo "$NFQWS" --qnum=100 $strategy &     PID=$!     sleep 2     if curl -4 --tlsv1.2 -s --connect-timeout 5 https://rutracker.org >/dev/null; then         echo "[+] WORKING strategy found"         echo "$strategy" > "$RESULT"         if kill -0 "$PID" 2>/dev/null; then             kill "$PID"         fi         exit 0     fi     if kill -0 "$PID" 2>/dev/null; then         kill "$PID"     fi     sleep 1 done < "$STRATEGIES" echo "[-] no working strategy found" exit 1

zapret-start.sh
Code:
#!/usr/bin/env bash set -e if [[ $EUID -ne 0 ]]; then     echo "ERROR: must be run as root"     exit 1 fi if pgrep -x nfqws >/dev/null; then     echo "ERROR: nfqws is already running"     exit 1 fi BASE_DIR="$(cd "$(dirname "$0")" && pwd)" STRATEGY_FILE="$BASE_DIR/WORKING_STRATEGY.conf" echo "[*] loading kernel modules" modprobe nfnetlink_queue || true modprobe nf_conntrack || true echo "[*] applying sysctl settings" sysctl -w net.netfilter.nf_conntrack_tcp_be_liberal=1 sysctl -w net.netfilter.nf_conntrack_checksum=0 echo "[*] configuring nftables" nft list table inet zapret >/dev/null 2>&1 || \ nft add table inet zapret nft list chain inet zapret output >/dev/null 2>&1 || \ nft add chain inet zapret output '{ type filter hook output priority 0; }' nft list chain inet zapret output | grep -q "queue num 100" || \ nft add rule inet zapret output \     meta mark and 0x40000000 == 0 \     tcp dport { 80, 443 } \     ct original packets 1-6 \     queue num 100 bypass if [[ ! -f "$STRATEGY_FILE" ]]; then     echo "ERROR: no working strategy found"     echo "Run zapret-autotest.sh first"     exit 1 fi read -r STRATEGY < "$STRATEGY_FILE" echo "[*] starting nfqws with strategy:" echo "    $STRATEGY" exec "$BASE_DIR/nfq/nfqws" \     --qnum=100 \     $STRATEGY

zapret-stop.sh
Code:
#!/usr/bin/env bash set -e echo "[*] stopping nfqws" pkill -TERM nfqws 2>/dev/null || true # даём корректно выйти sleep 1 # на случай зависшего процесса pkill -KILL nfqws 2>/dev/null || true echo "[*] removing nftables rules" nft delete table inet zapret 2>/dev/null || true echo "[*] done"

 

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум