0

我正在编写一个 bpf 过滤器来防止某些网络链接消息。我正在尝试调试 bpf 代码。有没有可以帮助我的调试工具?

我最初是在考虑使用 nlmon 来捕获 netlink 消息:

来自https://jvns.ca/blog/2017/09/03/debugging-netlink-requests/

# 创建网络接口

sudo ip link add nlmon0 type nlmon
sudo ip link set dev nlmon0 up
sudo tcpdump -i nlmon0 -w netlink.pcap # 捕获你的数据包

然后使用 ./bpf_dbg ( https://github.com/cloudflare/bpftools/blob/master/linux_tools/bpf_dbg.c )

1)./bpf_dbg进入shell(用'>'表示的shell cmds):
2)>加载bpf 6,40 0 0 12,21 0 3 20...(这是我打算调试的bpf代码)
3)>加载pcap netlink.pcap
4) > run /disassemble/dump/quit (self-explanatory)
5) > breakpoint 2 (在加载的 BPF insns 2 处设置 bp,run然后执行;可以设置多个 bps,当然,调用breakpoint w/ o args 显示当前加载的bps,breakpoint reset用于重置所有断点)
6)>选择3(run等将从pcap中的第三个数据包开始)
7)>步骤[-,+](通过BPF执行单步执行)

以前有人试过吗?

另外,我无法让 nlmon 模块加载到我的 linux 内核上(有这个文档吗?)

我正在运行内核版本 Linux 版本 4.10.0-40-generic nlmon 模块似乎存在于内核源代码中:

https://elixir.free-electrons.com/linux/v4.10/source/drivers/net/nlmon.c#L41

但是,当我在 /lib/modules/ 中搜索 nlmon.ko 时,我什么也没找到。

instance-1:/lib/modules$ find . | grep -i nlmon
instance-1:/lib/modules$
4

0 回答 0