facebook/bpfilter
GitHub: facebook/bpfilter
基于 eBPF 的高性能数据包过滤框架,将人类可读的规则转换为优化的 BPF 程序,提供接近原生性能的网络流量控制能力。
Stars: 315 | Forks: 52
一个基于 eBPF 的数据包过滤框架。
**bpfilter** 利用 eBPF 技术的强大功能,彻底改变了您控制网络流量的方式。该框架将过滤规则优雅地转换为优化的 BPF 程序,为您的数据包过滤需求带来无与伦比的性能和灵活性。
主要特性 •
快速开始 •
文档
## 主要特性
- **高性能**:利用 eBPF 接近原生的性能能力
- **低开销**:以最小的资源消耗实现最大化效率
- **开发者友好**:清晰的架构,组件分离明确
**bpfilter** 包含三个组件:一个允许用户以人类可读文本定义过滤规则的 CLI,一个将这些规则转换为高效 BPF 程序的守护进程 (daemon),以及一个促进应用程序与过滤子系统之间无缝通信的库。
想要了解更多关于 **bpfilter** 的信息?请查阅 [用户指南](https://bpfilter.io/usage/index.html)、[开发者文档](https://bpfilter.io/developers/build.html)、我们的[贡献指南](https://bpfilter.io/developers/contributing.html),或观看我们最新的[公开演讲](https://www.youtube.com/watch?v=fzaPEm4PXn0)!
## 快速开始
### 安装
**bpfilter** 已针对 Fedora 40+、EPEL 9+ 打包,并支持 Fedora 40+、CentOS Stream 9+ 和 Ubuntu 24.04+。以下示例使用 Fedora 41。
```
# Fedora 40+ 或 CentOS Stream 9+ (带 EPEL)
sudo dnf install -y bpfilter bpfilter-devel
```
### 从源代码构建
```
# 基本构建要求
sudo dnf install -y clang cmake gcc libbpf-devel bison flex sed xxd
# 配置项目并构建 bpfilter
cmake -S $SOURCES_DIR -B $BUILD_DIR -DNO_DOCS=ON -DNO_TESTS=ON -DNO_CHECKS=ON -DNO_BENCHMARKS=ON
make -C $BUILD_DIR
```
### 使用
```
# 启动 daemon
sudo $BUILD_DIR/output/sbin/bpfilter
# 统计到达接口 #2 的 ping 数量
sudo $BUILD_DIR/output/sbin/bfcli ruleset set --from-str "chain my_chain BF_HOOK_XDP{ifindex=2} ACCEPT rule ip4.proto icmp counter ACCEPT"
```
完整文档可在 [bpfilter.io](https://bpfilter.io/) 获取。
## 许可证
**bpfilter** 采用 GPLv2 许可。您可以在 COPYING 文件中找到许可详细信息。
## 致谢
**bpfilter** 最初由 [Alexei Starovoitov 在 David S. Miller 和 Daniel Borkmann 的帮助下](https://lore.kernel.org/lkml/20180503043604.1604587-1-ast@kernel.org/) 设计,作为 Linux 内核用户态辅助工具,后来由 [Dmitrii Banshchikov](https://lore.kernel.org/bpf/20210829183608.2297877-1-me@ubique.spb.ru/) 进行了改进。
标签:Bash脚本, Bpfilter, DNS解析, Docker镜像, Google搜索, JIT编译, Linux内核, MacOS取证, Python, 云计算, 低延迟, 入侵防御, 内核态, 包过滤, 基础设施, 子域名枚举, 守护进程, 客户端加密, 开源项目, 无后门, 流量控制, 流量监控, 私有化部署, 系统安全, 网络安全, 网络工程, 网络数据包, 网络栈, 网络过滤, 规则引擎, 防御规避, 防火墙, 隐私保护, 零拷贝