【linux】 tcpdump抓包相关,如何进行udp回溯

背景

因为涉及媒体流相关测试时,经常会需要进行抓包,之前联调测试时出现一些偶先的问题,但是苦于没有抓包,只能观察日志分析或者重新抓包测试期望复现。

后来询问运维人员得知,已经启动了udp回溯,听到这个名词觉得很高大上,于是抱着求知的好奇心去了解了一下,原来是使用的命令在后台进行抓包,然后使用脚本对包进行移动放至每日的文件夹中。

实现

FIRST

首先需要启动一个抓包命令,这里需要几个条件:

  • 服务器已安装 libpcaptcpdump
  • root 权限账户
  • 使用 & 后台运行,可选 nohup 输出至 nohup.out
命令如下:
nohup tcpdump -i any -s 0 -B 409600 udp dst portrange 50500-50506 -G 300  -w /home/tcpdumpfile_bak/%Y%m%d%H%M%S_SUPER8.cap -Z root &

这里可以不用指定端口区间,抓取服务器所有udp包,但是在我们的测试中,一般情况下存在非常多的udp流,所以针对不同的程序,可以设置不同的端口区间,通过文件名称进行区分。

参数解释:
  • -i
    • 指定网卡,值为 any 表示监听所有网卡
  • -s
    • snaplen,从每个数据包中读取的开始字节
  • -B
    • 数据包大小
  • udp
    • 只过滤udp包
  • dst
    • portrange 只过滤目的端口为区间内的包,同理 src portrange/port
  • -G
    • second 表示生成文件的间隔时间
  • -w
    • 生成文件路径及名称
  • -Z
    • user 指明使用用户

SECOND

其次使用脚本将每日抓包文件进行归类。

脚本如下:
#!/bin/bash
# date: 2023/6/20

BEFORE_TIME=$(date -d '1 day ago' +%Y%m%d) #get yesterday string
mkdir -p /home/tcpdumpfile_bak/$BEFORE_TIME  #create date dir

find /home/tcpdumpfile_bak -name ''$BEFORE_TIME'*cap' -exec mv {} /home/tcpdumpfile_bak/$BEFORE_TIME \;  #move cap file to date dir

通过sh backup.sh将昨天及之前的文件进行移动至目的文件夹。

整个流程便已完成,还可以设置定时删除指定文件夹,实现保留多少天的udp包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值