Outfluencer/Minecraft-XDP-eBPF
GitHub: Outfluencer/Minecraft-XDP-eBPF
基于 eBPF/XDP 技术的 Minecraft 服务器专用 L7 DDoS 防护工具,在内核层面高效过滤恶意流量。
Stars: 155 | Forks: 20
# 基于 eBPF 的 Minecraft XDP 过滤器 – L7 DDoS 防护
本项目提供了一个利用 eBPF 的高性能基于 XDP 的防火墙,专为 Minecraft Java Edition 服务器设计。
它通过在内核层面(在网络协议栈之前)过滤恶意数据包,有效缓解 L7 DDoS 攻击。
目前,该过滤器支持 IPv4,并支持 Minecraft 版本 1.8 - 26.1。
默认过滤端口为 25565。
## 功能特性
- **协议分析**:分析 Minecraft 握手、状态、Ping 和登录请求。
- **深度包检测**:丢弃无效数据包、错误的 VarInts 和违反协议的数据包。
- **连接节流**:集成的 SYN 速率限制(默认:每个 IP 在 3 秒内最多 10 个 SYN)。
- **零拷贝丢弃**:恶意流量在驱动层面被丢弃(XDP_DROP),以实现最大性能。
## 安装 (Linux)
### 生成您的过滤器二进制文件
在此处生成:https://xdp.outfluencer.dev/
然后只需运行该可执行文件。
### 前置条件
- Rust toolchain (stable)
- **系统依赖**:
sudo apt update
sudo apt install -y gcc-multilib wget gnupg software-properties-common git libbpf-dev
如果找不到 software-properties-common,请将其从命令中移除。
- **LLVM/Clang Toolchain**:
构建需要较新的 LLVM 版本(CI 使用 LLVM 21)。
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 21 all
### 构建与运行
1. **构建项目**:
./build.sh
编译后的二进制文件将位于 `target/release/xdp-loader`。
2. **运行防火墙**:
sudo ./target/release/xdp-loader
# 示例:
sudo ./target/release/xdp-loader eth0
启用 Prometheus 指标导出:
sudo ./target/release/xdp-loader eth0 --metrics-addr 0.0.0.0:1999
指标可通过以下地址访问:`http://host:1999/metrics`
**注意:** 本项目使用持久化 XDP 加载器。使用 `XDP` 程序需要用户空间程序保持运行以管理 maps。停止加载器将卸载防火墙。
## 配置
您可以在 `build.rs` 文件中配置端口、功能和节流行为。
**更改 `build.rs` 后,您必须重新编译项目。**
## 故障排除
### 非 root / 权限错误
如果发生任何错误,请务必检查您是否以 root 身份运行。如果不是,请使用 `sudo` 重试。
### Maps 问题
如果您更改了 map 配置(例如,启用 Per-CPU maps),重启时可能会遇到 map 创建错误。
清理通用 BPF 文件系统:
```
sudo rm -r /sys/fs/bpf
```
⭐ **别忘了在 GitHub 上给项目点个 Star!**
标签:CISA项目, DDoS防护, Docker镜像, L7防御, Minecraft, Prometheus监控, Rust, SYN限速, XDP, 内核级过滤, 协议分析, 可视化界面, 子域名枚举, 客户端加密, 抗D, 权限提升, 流量清洗, 深度包检测, 游戏服务器保护, 系统安全, 网络安全, 网络安全分析, 网络流量审计, 自定义请求头, 防火墙, 隐私保护, 零拷贝