OpenCloudOS / nettrace

nettrace is a eBPF-based tool to trace network packet and diagnose network problem.
Other
326 stars 80 forks source link

在跟踪数据包时是否可以考虑增加自定义链表详细信息输出 #111

Closed sun363587351 closed 2 days ago

sun363587351 commented 2 months ago

在进行数据包追踪过程发现,可以列出原始的默认的链表信息,但是对于自定义的链表丢弃数据包的时候没有了详细信息,例如可以追踪到INPUT链,但是时间丢弃数据包是在INPUT链下面的INPUT_direct链,输出没有显示到INPUT_direct. tcp

menglongdong commented 2 months ago

你的意思是在INPUT链里,-j到了自定义的INPUT_direct链,然后在INPUT_direct链中产生了丢包,然后没有跟踪到INPUT_direct这个链吗?

sun363587351 commented 2 months ago

你的意思是在INPUT链里,-j到了自定义的INPUT_direct链,然后在INPUT_direct链中产生了丢包,然后没有跟踪到INPUT_direct这个链吗?

是的 就是这种自定义链 在k8s环境大量存在

sun363587351 commented 3 weeks ago

请问此issue有考虑吗

menglongdong commented 3 weeks ago

有考虑的。。。最近有点忙,还要再等一等

sun363587351 commented 5 days ago

请问相关优化好久考虑一下

menglongdong commented 4 days ago

你好,我看了下内核代码,这块无法实现。内核是在ipt_do_table或者nft_do_chain来处理链上的规则的。如果存在规则jump到自定义的chain,那么内核还是会在当前函数中进行处理。而nettrace是通过跟踪内核函数来实现的,因此对于nettrace来说,它看不到自定义链的处理过程,因此无法进行跟踪。

sun363587351 commented 2 days ago

好的 感谢 明白了

menglongdong commented 2 days ago

你可以使用系统自带的功能来跟踪报文在iptables中的处理过程,用法为:

用下面的命令给要跟踪的报文打上trace的标签

iptables -t raw -I PREROUTING -p icmp -j TRACE

使用下面的命令来监听报文的trace事件

nft monitor