facebook/bpfilter

GitHub: facebook/bpfilter

基于 eBPF 的高性能数据包过滤框架,将人类可读的规则转换为优化的 BPF 程序,提供接近原生性能的网络流量控制能力。

Stars: 315 | Forks: 52

bpfilter

一个基于 eBPF 的数据包过滤框架。

**bpfilter** 利用 eBPF 技术的强大功能,彻底改变了您控制网络流量的方式。该框架将过滤规则优雅地转换为优化的 BPF 程序,为您的数据包过滤需求带来无与伦比的性能和灵活性。

主要特性快速开始文档

bpfilter

## 主要特性 - **高性能**:利用 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, 云计算, 低延迟, 入侵防御, 内核态, 包过滤, 基础设施, 子域名枚举, 守护进程, 客户端加密, 开源项目, 无后门, 流量控制, 流量监控, 私有化部署, 系统安全, 网络安全, 网络工程, 网络数据包, 网络栈, 网络过滤, 规则引擎, 防御规避, 防火墙, 隐私保护, 零拷贝