Установка и конфигурирование bol-van/zapret в linux
- Aleksej
-
Автор темы
- Не в сети
- Модератор
-
Less
Больше
2 нед. 6 дн. назад - 2 нед. 6 дн. назад #1
от Aleksej
Aleksej создал тему: Установка и конфигурирование bol-van/zapret в linux
Скажу честно, петля затягивается. То, что
работало
вчера, сегодня уже может не работать. Именно потому ищем новые решения; как говорят шлюшки-айтишники Роспотребнадзора - "мне просто было интересно решить техническую проблему". Ок.
Тестировал на Leap OpenSUSE 15.6. Сделал ряд скриптов, значительно облегчающих работу с этим автономным средством противодействия DPI, выложу в ближайшее время на гитхабе. А пока - вот так, короткой строкой. Понеслось:
Дальше, опять же по-быстрому, делаем ряд симлинков:
Теперь (всё работает до ребута только):
Далее.
Если были неудачные попытки инсталляции, оптимально:
Проверяем:
у меня, таким образом, nftables v0.9.8 (E.D.S.).
Тестируем; после ввода команды второй раз счетчики должны меняться:
Теперь запускаем скрипт тестирования стратегий обхода блокировок (лежит в корне каталога zapret), предварительно сделав исполняемым:
Скрипт, в качестве итога работы, выведет в консоль несколько стратегий, в результате применения которых ему удалось через curl достучаться до rutracker.org (по умолчанию). Выбираем любую и запускаем софтину, например:
Выход как-то так:
Но, повторюсь, неудобно и хлопотно. Действительно заработал nfqws у меня лишь только после того, как удалось автоматизировать рутину, чтобы не тратить на нее время. Об этом - в самое ближайшее время.
Тестировал на 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. Причина: Небольшие исправления
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
-
Автор темы
- Не в сети
- Модератор
-
2 нед. 4 дн. назад #2
от Aleksej
Aleksej ответил в теме Установка и конфигурирование bol-van/zapret в linux
Вот как-то так.
zapret (nfqws) — ручной запуск и автоподбор стратегий
Данный набор скриптов предназначен для **ручного запуска zapret (nfqws)** без установки его в виде systemd-сервиса, также для автоматического подбора рабочей DPI-desync-стратегии под актуальные сетевые условия.
Требования
1. Получение списка стратегий. Запустите оригинальный скрипт:
Он входит в репозиторий zapret и выводит в консоль список потенциально рабочих стратегий DPI-desync. Примечание: убедитесь, что у blockcheck.sh` и всех вспомогательных скриптов выставлены права на выполнение.
2. Подготовка strategies.txt
Скопируйте стратегии, полученные от `blockcheck.sh`, в файл:
Внимание. Формат файла критичен:
3. Автоматический подбор рабочей стратегии
Запустите автотест:
Во время работы скрипт:
4. Сохранение результата
При успешном подборе стратегия автоматически сохраняется в файл:
Этот файл используется напрямую для запуска nfqws и не требует ручного редактирования.
5. Запуск zapret в рабочем режиме
Для обычного использования выполните:
Скрипт:
Примечания
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
Внимание. Формат файла критичен:
- каждая стратегия должна начинаться **с новой строки;
- между стратегиями должна быть одна пустая строка;
- никаких кавычек, комментариев или продолжений строк.
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`;
- останавливается при нахождении первой рабочей стратегии.
4. Сохранение результата
При успешном подборе стратегия автоматически сохраняется в файл:
Code:
WORKING_STRATEGY.conf
Этот файл используется напрямую для запуска nfqws и не требует ручного редактирования.
5. Запуск zapret в рабочем режиме
Для обычного использования выполните:
Code:
sudo ./zapret-start.sh
Скрипт:
- повторно применяет kernel-модули и сетевые параметры (повторный запуск безопасен);
- проверяет и настраивает nftables;
- запускает nfqws с параметрами из WORKING_STRATEGY.conf.
Примечания
- Все системные изменения, выполняемые скриптами, идемпотентны и не требуют перезагрузки.
- Запуск осуществляется только вручную без systemd-сервисов.
- При необходимости стратегию всегда можно заменить повторным запуском автотеста.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
-
Автор темы
- Не в сети
- Модератор
-
2 нед. 4 дн. назад #3
от Aleksej
Aleksej ответил в теме Установка и конфигурирование bol-van/zapret в linux
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- orion
-
- Не в сети
- Новый участник
-
Less
Больше
- Сообщений: 7
- Спасибо получено: 0
2 нед. 4 дн. назад #4
от orion
orion ответил в теме Установка и конфигурирование bol-van/zapret в linux
Тяжелая видать софтина, не для слабых машин.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- evgenij
-
- Не в сети
- Завсегдатай
-
Less
Больше
- Сообщений: 240
- Спасибо получено: 39
2 нед. 4 дн. назад #5
от evgenij
Have a lot of fun!
evgenij ответил в теме Установка и конфигурирование bol-van/zapret в linux
Софтина не тяжелая. Тяжелый инет, полученный таким способом.
Have a lot of fun!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
-
Автор темы
- Не в сети
- Модератор
-
2 нед. 4 дн. назад #6
от Aleksej
Aleksej ответил в теме Установка и конфигурирование bol-van/zapret в linux
Ну, чем богаты. Звиняйте, хлопцы.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- evgenij
-
- Не в сети
- Завсегдатай
-
Less
Больше
- Сообщений: 240
- Спасибо получено: 39
2 нед. 4 дн. назад #7
от evgenij
Have a lot of fun!
evgenij ответил в теме Установка и конфигурирование bol-van/zapret в linux
ByeDPI больше не работает?
masterpro.ws/forum/24-soft/5215-svobodny...-bez-vpn-v-rf-byedpi
masterpro.ws/forum/24-soft/5215-svobodny...-bez-vpn-v-rf-byedpi
Have a lot of fun!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
-
Автор темы
- Не в сети
- Модератор
-
2 нед. 4 дн. назад #8
от Aleksej
Aleksej ответил в теме Установка и конфигурирование bol-van/zapret в linux
Не знаю. На мобильном интернете может и не работать. Там уже один только "приватный" телеграм, сук, Паши Дурова пашет, когда блокировки.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- dinos
-
- Не в сети
- Новый участник
-
Less
Больше
- Сообщений: 3
- Спасибо получено: 0
2 нед. 4 дн. назад #9
от dinos
dinos ответил в теме Установка и конфигурирование bol-van/zapret в linux
попробую отпишусь
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
-
Автор темы
- Не в сети
- Модератор
-
2 нед. 1 день назад #10
от Aleksej
Aleksej ответил в теме Установка и конфигурирование bol-van/zapret в linux
Просто добавляем в директорию zapret эти три файла. Описание и ссылка на гитхаб - выше.
zapret-autotest.sh
zapret-start.sh
zapret-stop.sh
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"
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.