Процессор сетевых пакетов для обхода систем глубокой инспекции пакетов (DPI) с помощью манипуляции очередью netfilter.
- Linux-система (десктоп, сервер или роутер)
- Root-доступ (sudo)
Это всё. Установщик позаботится об остальном.
Note
В некоторых системах необходимо запускать sudo b4install.sh.
Через wget:
wget -qO- https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | shЧерез curl:
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | shЕсли что-то пошло не так, попробуйте запустить с флагом --sysinfo — это выполнит диагностику системы:
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh -s -- --sysinfoИли передайте --help для получения дополнительной информации о доступных опциях:
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh -s -- --helpУдалить B4:
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh -s -- --remove# Установить последнюю версию b4
./install.sh
# Показать справку
./install.sh -h
# Показать диагностику системы и статус b4
./install.sh --sysinfo
# Установить определённую версию
./install.sh v1.10.0
# Тихий режим (подавляет вывод, кроме ошибок)
./install.sh --quiet
# Указать источник и путь назначения geosite.dat
./install.sh --geosite-src=--geosite-src=https://example.com/geosite.dat --geosite-dst=/opt/etc/b4
# Обновить b4 до последней версии
./install.sh --update
# Удалить b4
./install.sh --removegit clone https://github.com/daniellavrushin/b4.git
cd b4
# Собрать UI
cd src/http/ui
pnpm install && pnpm build
cd ../../..
# Собрать бинарник
make build
# Все архитектуры
make build-all
# Или собрать для конкретной
make linux-amd64
make linux-arm64
make linux-armv7docker run --network host \
--cap-add NET_ADMIN --cap-add NET_RAW --cap-add SYS_MODULE \
-v /etc/b4:/etc/b4 \
lavrushin/b4:latest --config /opt/etc/b4/b4.jsonВеб-интерфейс: http://localhost:7000
services:
b4:
image: lavrushin/b4:latest
container_name: b4
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
- SYS_MODULE
volumes:
- ./config:/etc/b4
command: ["--config", "/etc/b4/b4.json"]
restart: unless-stopped- Только Linux-хост — b4 использует netfilter queue (NFQUEUE), что является функцией ядра Linux
--network hostобязателен — b4 должен иметь прямой доступ к сетевому стеку хоста- Capabilities:
NET_ADMIN(правила файрвола),NET_RAW(raw-сокеты),SYS_MODULE(загрузка модулей ядра) - Ядро хоста должно поддерживать
nfqueue(модулиxt_NFQUEUE,nf_conntrack)
# Стандартный Linux (systemd)
sudo systemctl start b4
sudo systemctl enable b4 # Запуск при загрузке
# OpenWRT
/etc/init.d/b4 restart # start | stop
# Entware/MerlinWRT
/opt/etc/init.d/S99b4 restart # start | stophttp://ip-вашего-устройства:7000
# Справка
b4 --help
# Базовое использование — указание доменов вручную
b4 --sni-domains youtube.com,netflix.com
# С категориями geosite
b4 --geosite /etc/b4/geosite.dat --geosite-categories youtube,netflix
# Пользовательский конфиг
b4 --config /path/to/config.jsonВеб-интерфейс доступен по адресу http://ip-устройства:7000 (порт по умолчанию, можно изменить в файле config).
Возможности:
- Метрики в реальном времени (соединения, пакеты, пропускная способность)
- Потоковая передача логов с фильтрацией и горячими клавишами (p — приостановить, del — очистить)
- Управление доменами/IP на лету (добавление домена или IP в набор через вкладку Domains)
- Быстрые тесты доменов и автоподбор стратегий обхода
- Интеграция ipinfo.io API для сканирования ASN
- Захват пользовательских payload для faking
Включить HTTPS для веб-интерфейса можно в Web UI: Settings > Network Configuration > Web Server (поля TLS Certificate / TLS Key), или через конфиг:
{
"system": {
"web_server": {
"tls_cert": "/path/to/server.crt",
"tls_key": "/path/to/server.key"
}
}
}Установщик автоматически обнаруживает сертификаты на OpenWrt (uhttpd) и Asus Merlin и включает HTTPS в конфиге.
B4 включает встроенный SOCKS5 прокси-сервер. Приложения с поддержкой SOCKS5 (браузеры, curl, торрент-клиенты и т.д.) могут направлять трафик через B4 без системной настройки.
Включите в Web UI: Settings > Network Configuration > SOCKS5 Server, или через конфиг:
{
"system": {
"socks5": {
"enabled": true,
"port": 1080,
"bind_address": "0.0.0.0",
"username": "",
"password": ""
}
}
}Оставьте username и password пустыми для работы без аутентификации.
Примеры:
# curl
curl --socks5 127.0.0.1:1080 https://example.com
# Firefox: Настройки > Параметры сети > Ручная настройка прокси
# Узел SOCKS: 127.0.0.1, Порт: 1080, SOCKS v5
# Git
git config --global http.proxy socks5://127.0.0.1:1080Note
Перезапустите B4 после изменения настроек SOCKS5.
B4 предоставляет интерактивную документацию REST API через Swagger UI. Для включения добавьте в b4.json:
{
"system": {
"web_server": {
"swagger": true
}
}
}После перезапуска B4 откройте:
http://ip-вашего-устройства:7000/swagger/
Tip
Если включена авторизация, выполните POST /api/auth/login для получения токена, затем нажмите Authorize в Swagger UI и введите Bearer {ваш_токен}.
B4 поддерживает файлы geosite.dat от v2ray/xray из различных источников:
# Loyalsoldier
wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
# RUNET Freedom
wget https://raw.githubusercontent.com/runetfreedom/russia-v2ray-rules-dat/release/geosite.dat
Поместите файл в /etc/b4/geosite.dat и настройте категории:
sudo b4 --geosite /etc/b4/geosite.dat --geosite-categories youtube,netflix,facebookTip
Все эти настройки можно настроить через веб-интерфейс.
Вклад в проект принимается через pull request на GitHub.
Основано на исследованиях:
- youtubeUnblock — обход DPI на C
- GoodbyeDPI — обход DPI для Windows
- zapret — продвинутые техники обхода DPI
- dpi-detector — техники обнаружения DPI/ТСПУ
Этот проект предоставляется в образовательных целях. Пользователи несут ответственность за соблюдение применимых законов и правил. Авторы не несут ответственности за неправомерное использование данного программного обеспечения.