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