You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用bpftool将netfilter程序挂载到网络接口?

如何用bpftool将Netfilter类型的BPF程序挂载到网络接口?

已完成操作

已成功加载Netfilter BPF程序:

sudo bpftool prog load filter.bpf.o /sys/fs/bpf/filter

问题

执行挂载命令时出现报错,且bpftool net help的Note部分声称支持netfilter挂载,但ATTACH_TYPE选项列表中无此类型:

$ sudo bpftool net attach netfilter id 122 dev eth0
Error: invalid net attach/detach type: netfilter

解决方案

Netfilter类型的BPF程序不通过bpftool net attach挂载——该命令仅用于绑定到网络设备的BPF程序(如XDP、TCX系列)。Netfilter BPF程序需要挂载到Netfilter钩子点,以下是两种常用方式:

方式1:通过nftables挂载

利用nftables将BPF程序关联到Netfilter钩子:

# 创建ip族的filter表
sudo nft add table ip filter
# 创建绑定到INPUT钩子的chain(优先级可根据需求调整)
sudo nft add chain ip filter input { type filter hook input priority 0 \; }
# 将已加载的BPF程序挂载到该chain
sudo nft add rule ip filter input meta bpf pinned /sys/fs/bpf/filter

方式2:通过bpftool link挂载(内核5.10+)

较新内核支持直接用bpftool link创建Netfilter链接:

# 挂载到INPUT钩子,优先级0,使用已固定的BPF程序
sudo bpftool link create netfilter hook input priority 0 prog pinned /sys/fs/bpf/filter

可替换的钩子参数包括:input、forward、output、prerouting、postrouting,优先级数值决定程序执行顺序。

补充说明

bpftool net help中的Note提到支持netfilter,是指bpftool net show/list可以查看Netfilter类型的BPF挂载状态,而非通过attach命令挂载。查看已挂载的Netfilter BPF程序可执行:

sudo bpftool net list

内容的提问来源于stack exchange,提问作者Orian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:43:27