【问题标题】:Is there any tooling for bpfilter allowing to configure a firewall?是否有任何允许配置防火墙的 bpfilter 工具?
【发布时间】:2019-06-18 19:36:37
【问题描述】:

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

内核说:

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

有没有:

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

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

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

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

【问题讨论】:

  • 你的“功能集”是什么?

标签: bpf


【解决方案1】:

截至 2019 年初,bpfilter 仍在开发中,尚未可用。基本骨架在这里和may even be activated in 4.18+ kernels,但现在does not do much 不完整。将 iptables 规则转换为 BPF 字节码所需的代码,虽然是通过 the original RFC 提交的,但目前还没有进入内核。

一旦准备就绪,就不需要任何特定的工具。 Bpfilter 可能会启用诸如modprobe bpfilter 之类的东西,然后整个想法是透明地替换后端,同时保持前端不变:所以iptables 应该是处理规则所需的唯一工具,没有任何需要特定的选项。此外,bpftool 允许检查内核中加载的 eBPF 程序(包括由 bpfilter 翻译的 iptables 规则)。

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

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

【讨论】:

    【解决方案2】:

    看起来有一个名为bpf-iptables 的工具可以执行此操作。更好的是,它似乎使用了正常的iptables 语法。我自己还没用过,不过我想下次一定要设置iptables的时候试试看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多