nettrace icon indicating copy to clipboard operation
nettrace copied to clipboard

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

Open sun363587351 opened this issue 1 year ago • 2 comments

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

sun363587351 avatar Aug 29 '24 05:08 sun363587351

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

menglongdong avatar Sep 02 '24 13:09 menglongdong

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

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

sun363587351 avatar Sep 03 '24 15:09 sun363587351

请问此issue有考虑吗

sun363587351 avatar Oct 10 '24 07:10 sun363587351

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

menglongdong avatar Oct 10 '24 11:10 menglongdong

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

sun363587351 avatar Oct 30 '24 12:10 sun363587351

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

menglongdong avatar Oct 31 '24 13:10 menglongdong

好的 感谢 明白了

sun363587351 avatar Nov 01 '24 15:11 sun363587351

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

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

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

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

nft monitor

menglongdong avatar Nov 02 '24 03:11 menglongdong

明白 但有的服务器没有使用nftable 还是iptables 这种方式我们试过 效率不高

sun363587351 avatar Nov 06 '24 08:11 sun363587351

明白 但有的服务器没有使用nftable 还是iptables 这种方式我们试过 效率不高

这个一般是debug的时候才会有这种需求吧,生产环境中有这种监控具体丢包的链和规则的需求吗?

menglongdong avatar Nov 06 '24 08:11 menglongdong

有的 有时候在k8s生产环境 会莫名端口或者ip不通 因为我们的环境开了防火墙和白名单

sun363587351 avatar Nov 11 '24 02:11 sun363587351

好的,我试试在netfilter框架里加个tracepoint,看看kernel社区能不能接受

menglongdong avatar Nov 14 '24 02:11 menglongdong

好的,我试试在netfilter框架里加个tracepoint,看看kernel社区能不能接受

算了,感觉不靠谱

menglongdong avatar Nov 14 '24 08:11 menglongdong