[Documentation] [Документация (RU)] [Telegram]
Network packet processor that bypasses Deep Packet Inspection (DPI) using netfilter queue manipulation.
That's it. The installer will take care of the rest
[!NOTE] In some systems you need to run
sudo b4install.sh.
With wget:
wget -qO- https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh
With curl:
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh
If something went wrong try to run it with the flag --sysinfo - this will diagnose the system
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh -s -- --sysinfo
Or pass --help to get more information about the possible options.
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh -s -- --help
To update B4:
#to latest version
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh -s -- --update
#to specific version
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh -s -- --update v1.43.0
#update silently
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh -s -- --update --quiet
To remove B4:
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh -s -- --remove
# Install latest b4 version
./install.sh
# Show help message
./install.sh -h
# Show system diagnostics and b4 status
./install.sh --sysinfo
# Install specific version
./install.sh v1.10.0
# Quiet mode (suppress output except for errors)
./install.sh --quiet
# Specify geosite.dat source URL and destination
./install.sh --geosite-src=--geosite-src=https://example.com/geosite.dat --geosite-dst=/opt/etc/b4
# Update b4 to latest version
./install.sh --update
# Uninstall b4
./install.sh --remove
git clone https://github.com/daniellavrushin/b4.git
cd b4
# Build UI
make build-ui
# Build binary
make build
# All architectures
make build-all
# Or build specific
make linux-amd64
make linux-arm64
make linux-armv7
docker 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
Web UI: 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
--network host is mandatory — b4 must access the host network stack directlyNET_ADMIN (firewall rules), NET_RAW (raw sockets), SYS_MODULE (kernel module loading)nfqueue support (xt_NFQUEUE, nf_conntrack modules)
# Standard Linux (systemd)
sudo systemctl start b4
sudo systemctl enable b4 # Start on load
# OpenWRT
/etc/init.d/b4 restart # start | stop
# Entware/MerlinWRT
/opt/etc/init.d/S99b4 restart # start | stop
http://your-device-ip:7000
# Print help
b4 --help
# Basic - manual domains
b4 --sni-domains youtube.com,netflix.com
# With geosite categories
b4 --geosite /etc/b4/geosite.dat --geosite-categories youtube,netflix
# Custom config
b4 --config /path/to/config.json
The web interface is available at http://your-ip:7000 (default port, can be changed in config file).
Features:
You can enable HTTPS for the web interface in the Web UI under Settings > Network Configuration > Web Server (TLS Certificate / TLS Key fields), or by setting tls_cert and tls_key in the config JSON:
{
"system": {
"web_server": {
"tls_cert": "/path/to/server.crt",
"tls_key": "/path/to/server.key"
}
}
}
The installer automatically detects router certificates on OpenWrt (uhttpd) and Asus Merlin and enables HTTPS in the config if they are found.
B4 includes a built-in SOCKS5 proxy server. Applications that support SOCKS5 (browsers, curl, torrent clients, etc.) can route traffic through B4 without any system-wide configuration.
Enable it in the Web UI under Settings > Network Configuration > SOCKS5 Server, or in the config JSON:
{
"system": {
"socks5": {
"enabled": true,
"port": 1080,
"bind_address": "0.0.0.0",
"username": "",
"password": ""
}
}
}
Leave username and password empty for no authentication.
Examples:
# curl
curl --socks5 127.0.0.1:1080 https://example.com
# Firefox: Preferences > Network Settings > Manual proxy
# SOCKS Host: 127.0.0.1, Port: 1080, SOCKS v5
# Git
git config --global http.proxy socks5://127.0.0.1:1080
[!NOTE] Restart B4 after changing SOCKS5 settings.
B4 provides interactive REST API documentation via Swagger UI. To enable, add to your b4.json:
{
"system": {
"web_server": {
"swagger": true
}
}
}
After restarting B4, open:
http://your-device-ip:7000/swagger/
[!TIP] If web authentication is enabled, call
POST /api/auth/loginto get a token first, then click Authorize in Swagger UI and enterBearer {your_token}.
B4 supports v2ray/xray geosite.dat files from various sources:
# 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
Place the file in /etc/b4/geosite.dat and configure categories:
sudo b4 --geosite /etc/b4/geosite.dat --geosite-categories youtube,netflix,facebook
[!TIP] All these settings can be configured via the web interface.
Contributions are accepted through GitHub pull requests.
Based on research from:
This project is provided for educational purposes. Users are responsible for compliance with applicable laws and regulations. The authors are not responsible for misuse of this software.