eBPF Talk: skbtracer-iptables
文章目录
可还曾记得 skbtracer 内核网络包跟踪工具?
这是我刚学习 eBPF 不久就开发的工具,不过更多时候是向 skbtracer 和 pwru 这两个网络包跟踪工具项目学习。
现在,我持续参与 pwru 的维护,为其添砖加瓦、提升性能。
skbtracer
skbtracer 在开发完毕后就没有继续维护了,所以导致其中有不少使用的 kprobe 过期了。
因而,我将它存档了。
skbtracer-iptables
不过,有朋友反馈说,其中关于 iptables 的功能挺有用的。
所以,我花了一个周末的时间,将其中 iptables 相关的功能抽离出来,成为了一个独立的项目继续维护。
在开发 skbtracer-iptables 的时候,的确发现所使用的 kprobe 函数 ipt_do_tables 和 ip6t_do_tables 在 5.16 内核里有变更;因而,在 eBPF 代码里准备了两段代码,并在 Go 代码里判断一下当前的内核版本,按需选用 kprobe bpf prog。
|
|
与此同时,将 Go 代码里使用的 eBPF 库从 github.com/dropbox/goebpf 改为 github.com/cilium/ebpf。
Go 代码风格上,则直接参考了 pwru 的写法。
One more thing
准备开发一个基于 eBPF 的 iptables TRACE 的替代工具,一个比 skbtracer-iptables 更强大的 iptables 网络包跟踪工具。
万分期待。
文章作者 Leon Hwang
上次更新 2024-03-29