2021年Linux 5.4+主线内核bpfilter状态及Ubuntu 20.04配置问题
截至2021年Linux 5.4+内核bpfilter状态及Ubuntu 20.04配置指南
一、主线内核开发与生产落地状态
- 开发进展:截至2021年,Linux 5.4及以上版本的主线内核已经合并了bpfilter的核心框架,该功能默认作为实验性可选组件存在,仅支持简单iptables过滤规则的eBPF转译,缺少复杂匹配规则、自定义链、全场景NAT、日志审计等生产必备功能,尚未达到功能完备的状态。2020年之后bpfilter的开发进度明显放缓,内核社区更多将eBPF网络能力的开发重心放在通用可编程场景上,原计划完全替代iptables的目标没有按预期推进。
- 生产落地情况:没有公开的大规模生产部署案例,仅部分云厂商、网络技术团队在内部做小范围性能测试,所有主流发行版均未将bpfilter作为默认包过滤方案,生产环境仍普遍使用成熟的iptables或nftables方案。
二、Ubuntu 20.04启用bpfilter操作步骤
Ubuntu 20.04默认搭载的5.4内核已经默认编译了bpfilter组件,无需额外安装,仅需按以下步骤启用即可:
- 首先确认内核支持bpfilter,执行命令:
grep BPFILTER /boot/config-$(uname -r)
输出包含CONFIG_BPFILTER=y或CONFIG_BPFILTER=m即表示内核已支持该功能。 - 停用当前默认的iptables、nftables服务:
sudo systemctl stop iptables.service ip6tables.service nftables.service sudo systemctl disable iptables.service ip6tables.service nftables.service
- 加载bpfilter内核模块:
sudo modprobe bpfilter
如果需要开机自动加载,执行以下命令配置:echo "bpfilter" | sudo tee /etc/modules-load.d/bpfilter.conf - 验证启用状态:
执行lsmod | grep bpfilter有对应输出即表示模块加载成功,启用后原有iptables命令行可正常使用,规则会自动被bpfilter转译为eBPF程序运行。
注意:Ubuntu 20.04下的bpfilter功能受限,复杂规则场景下易出现不兼容、报错问题,完全不建议在生产环境使用
内容的提问来源于stack exchange,提问作者Charles Porth
相关产品推荐
相关产品推荐

