我想知道bpfilter。我不能使用netfilter(太慢),nftables(没有设置我的功能)。
内核说:
CONFIG_BPFILTER:││建立实验性的bpfilter框架,旨在通过││通过BPF提供与netfilter兼容的功能
有没有
到目前为止,我只追踪了一篇LWN帖子,解释了bpffilter多么酷,但是出于管理目的,它是无用的。
https://lwn.net/Articles/747551/
它太新了,太粗略了,根本就不在乎吗?
答案 0 :(得分:1)
截至2019年初,bpfilter仍在开发中,尚无法使用。基本骨架在此处和may even be activated in 4.18+ kernels,但目前does not do much尚不完整,因此暂时没有。将iptables规则转换为BPF字节码所需的代码虽然已通过the original RFC提交,但目前尚未提交给内核。
一旦准备就绪,就不需要任何特定的工具。可以使用modprobe bpfilter
之类的东西启用Bpfilter,然后整个想法是透明地替换后端,同时不影响前端:因此iptables
应该是处理规则,无需任何特殊选择。另外,bpftool
允许检查内核中加载的eBPF程序(包括bpfilter转换的iptables规则)。
如果需要,可以在下面的video中进行检查(免责声明:由我公司提供),它显示了我们如何将bpfilter与经典的iptables规则结合使用(我们已经使用RFC中的代码对内核进行了修补;最终版本就不需要在控制台中执行bpfilter.ko。
即使不使用bpfilter,您仍然可以将BPF程序附加到XDP挂钩(在驱动程序级别),以获得比netfilter提供的性能更好的性能。但是,您将必须将规则完全重写为C程序,使用clang将其编译为eBPF,并使用例如g ip
工具(来自iproute2)。我不知道这是否符合您的“功能集”。根据您的需求的强大程度,另一种激进的选择可能是将数据包处理移至用户空间并使用DPDK框架重新实现设置。
答案 1 :(得分:0)
似乎有一个名为bpf-iptables的工具。更好的是,它似乎使用了常规的iptables
语法。我还没有亲自使用过它,但是我认为下次我必须设置iptables
时会尝试使用它。