eBPF Firewall 是基于 eBPF 技术的高性能网络防火墙系统,具有实时入站流量监控、规则过滤和黑名单管理等功能。主要用于在资源有限的 VPS 中进行入站流量监控和过滤。
2024-11-03
重构整体架构
新增"威胁情报"模块
目前仅支持 AbuseIPDB 、 Spamhaus。支持自动更新
最终设计在 User Space 中运行,在 Kernel Space 中需要考虑兼容性问题,低版本内核支持的 eBPF 指令有限,要兼容代码量太大
新增 ElasticPool 支持自动扩缩容,避免因突增流量导致任务积压



git clone https://github.com/danger-dream/ebpf-firewall.git
cd ebpf-firewall
chmod +x quickstart.sh
./quickstart.sh build
./quickstart.sh start
项目提供了 quickstart.sh 用于自动化部署和管理,支持完整的容器生命周期管理。
# Build docker image
./quickstart.sh build
# Deploy container
./quickstart.sh start
# Build and deploy in one command
./quickstart.sh run
# Specify network interface and listening address
./quickstart.sh start \
-i eth0 \
--addr 0.0.0.0:8080 \
-a ${YOUR_AUTH_TOKEN} \
-d /data/ebpf-firewall
# Deploy with custom image tag
./quickstart.sh run \
--tag v1.0.0 \
--no-cache \
-i eth0
# View real-time logs
./quickstart.sh logs -f --tail 100
# Stop service
./quickstart.sh stop
# Clean up resources
./quickstart.sh clean
# Prune docker build cache
./quickstart.sh prune
# ./quickstart.sh
Usage: ./quickstart.sh <command> [options]
Commands:
build Build the container image
start Start the container
stop Stop the container
remove Stop and remove the container
clean Remove both container and image
run Build image and start container
prune Clean up docker build cache
logs View container logs
Options:
-t, --tag <tag> Specify image tag (default: latest)
-n, --no-cache Build without using cache
-f, --follow Follow log output
--tail <n> Number of lines to show from the end of logs
Runtime Options:
-i, --interface <name> Network interface to monitor
-p, --port <port> API port (default: 5678)
--addr <address> API address (default: :5678)
-d, --data <path> Data directory path (default: ./data)
-a, --auth <token> API authentication token (default: auto generated)
Examples:
./quickstart.sh build --tag v1.0.0
./quickstart.sh run -i eth0 -p 8080
./quickstart.sh start -i ens33 --addr :18080
./quickstart.sh start -i ens33 --addr 10.0.0.10:8080 -a 1234567890
./quickstart.sh logs -f
已经实现,但存储开销太大,不符合项目初衷
翻了很多论文,也测试了一些方案,但网络环境复杂,很难实现一个小巧且通用的检测模型。考虑有空的话得重构一个不考虑资源限制、也不考虑兼容性的版本。
请查看 CONTRIBUTING.md
本项目采用 MIT 许可证。详见 LICENSE 文件。
$ claude mcp add ebpf-firewall \
-- python -m otcore.mcp_server <graph>