3

我想了解 bpfilter。我不能使用 netfilter(太慢)、nftables(没有我的功能集)。

内核说:

CONFIG_BPFILTER: │ │ 这构建了实验性的 bpfilter 框架,旨在 │ │ 通过 BPF 提供与 netfilter 兼容的功能

有没有:

  • 允许使用 BPF 而不是 netfilter 配置防火墙规则的工具?
  • 允许轻松进入主题的文档?
  • 手动的?....

到目前为止,我只追踪了一篇 LWN 帖子,解释了 bpffilter 有多酷,但出于管理目的,它毫无用处。

https://lwn.net/Articles/747551/

它是否太新太粗略以至于无法关心?

4

2 回答 2

7

截至 2019 年初,bpfilter 仍在开发中,尚未可用。基本骨架就在这里,甚至可以在 4.18+ 内核中激活,但目前还没有做太多,因为它不完整。将 iptables 规则转换为 BPF 字节码所需的代码,虽然是按照原始 RFC 提交的,但目前还没有进入内核。

一旦准备好,就不需要任何特定的工具。Bpfilter 可能会modprobe bpfilter通过iptables. 此外,bpftool允许检查内核中加载的 eBPF 程序(包括由 bpfilter 翻译的 iptables 规则)。

如果需要,您可以在以下视频中查看(免责声明:由我的公司提供),该视频显示了我们如何将 bpfilter 与经典 iptables 规则一起使用(我们使用 RFC 中的代码修补了内核;并执行 bpfilter.ko最终版本不需要控制台)。

即使不使用 bpfilter,您仍然可以将 BPF 程序附加到 XDP 挂钩(在驱动程序级别),以获得比 netfilter 提供的更好的性能。但是,您必须将您的规则完全重写为 C 程序,使用 clang 将它们编译成 eBPF,然后使用例如ip工具(来自 iproute2)加载它们。我不知道这是否符合您的“功能集”。根据您的需求有多强烈,另一个激进的选择可能是将您的数据包处理移动到用户空间并使用 DPDK 框架重新实现您的设置。

于 2019-01-25T10:56:55.923 回答
0

看起来有一个名为bpf-iptables的工具可以做到这一点。更好的是,它似乎使用了正常的iptables语法。我自己还没有使用过,但我想我下次必须设置时会尝试一下iptables

于 2019-12-11T03:32:42.210 回答