Linux系统抓包回放,Linux下24小时持续网络抓包(TCPDUMP)

适用于CentOS/REHL/Ubuntu/Debian等,抓出来的包可用Wireshark直接打开分析。

参考文章:

原文的脚本相互调用时,名称有些问题,已修改

1、安装tcpdump

执行(Ubuntu/Debian)

apt-get install tcpdump -y

或(CentOS/RHEL)

yum install tcpdump -y

2、编辑抓包主脚本main_dump.sh(假定脚本都放在/home目录,下同。如不放此路径则需更改相应脚本内容里的路径)

vi /home/main_dump.sh

内容

---------------------------------------------------------------

#!/bin/bash

#script name:/home/main_dump.sh

while :

do

STIME=`date +%F"@"%H%M%S`

DATE_DIR=`date +%F`

if [ ! -d /data/$DATE_DIR ];then

mkdir -p /data/$DATE_DIR

fi

#diy #unit:byte;100MB

MAXSIZE=100000000

#diy 如果你的网卡不是eth0,请替换为实际网卡设备名

DUMPPID=`ps -ef|grep "tcpdump -i eth0"|grep pcap|awk '{print $2}'`

if [ ! "$DUMPPID" ];then

#diy 请把host后的IP地址替换为需要抓取的源/目标地址;网卡替换为实际设备名;抓取的数据放在/data下,每天独立子目录

/usr/sbin/tcpdump -i eth0 host 10.13.6.15 -w /data/$DATE_DIR/$STIME.pcap -s 0 &

fi

sleep 1

#diy 如果你的网卡不是eth0,请替换为实际网卡设备名

DUMPPID=`ps -ef|grep "tcpdump -i eth0"|grep pcap|awk '{print $2}'`

PACKSIZE=`ls -l /data/$DATE_DIR|grep "$STIME.pcap"|awk '{print $5}'`

while [ "$PACKSIZE" -lt "$MAXSIZE" ];do

PACKSIZE=`ls -l /data/$DATE_DIR|grep "$STIME.pcap"|awk '{print $5}'`

sleep 1m

done

kill -9 $DUMPPID

ETIME=`date +%H%M%S`

mv /data/$DATE_DIR/$STIME.pcap /data/$DATE_DIR/$STIME-$ETIME.pcap

gzip /data/$DATE_DIR/*.pcap

sleep 5

done

-----------------------------------------------------------------------------

3、编辑抓包监控脚本monitor_dump.sh

vi /home/monitor_dump.sh

内容

---------------------------------------------------------------------

#!/bin/bash

#script name:/home/monitor_dump.sh

DATE_DIR=`date +%F`

STIME=`date +%F"@"%H%M%S`

MAINDUMP=`ps -elf|grep main_dump|grep -v grep`

#diy 如果你的网卡不是eth0,请替换为实际网卡设备名

DUMPPID=`ps -ef|grep "tcpdump -i eth0"|grep pcap`

#check main programme status

if [ ! "$MAINDUMP" ];then

/bin/bash /home/main_dump.sh

fi

if [ ! "$DUMPPID" ];then

#diy 请把host后的IP地址替换为需要抓取的源/目标地址;网卡替换为实际设备名

/usr/sbin/tcpdump -i eth0 host 10.13.6.15 -w /data/$DATE_DIR/$STIME.pcap -s 0 &

fi

-------------------------------------------------------------------------

4、编辑磁盘空间监控脚本monitor_disk.sh

vi /home/monitor_disk.sh

内容

---------------------------------------------------

#!/bin/bash

#script name:/home/monitor_disk.sh

#diy 设备/dev/xvf1是/data所在的磁盘,请替换为你实际的磁盘设备号

FREEDISK=`df -h|grep "/dev/xvdf1"|awk '{print $5}'|awk -F % '{print $1}'`

HEADMOST=`ls -l /data|grep ^d|awk '{print $NF}'|sort|head -n 1`

#check free disk status

#diy 磁盘大于等于占用75%时,删除最早那天的抓包数据,以释放空间

if [ "$FREEDISK" -ge "75" ];then

rm -rf /data/"$HEADMOST"

fi

------------------------------------------------------

5、赋予脚本执行权限

chmod +x /home/main_dump.sh

chmod +x /home/monitor_dump.sh

chmod +x /home/monitor_disk.sh

6、将定时抓包加到crontab服务的任务计划里

vi /etc/crontab

增加(每天6点执行)

*  6    * * *   root    /bin/bash /home/monitor_dump.sh

*  6    * * *   root    /bin/bash /home/monitor_disk.sh

然后执行

crontab /etc/crontab

使计划任务生效

7、如果想现在就开始执行(否则在6点才开始),或者在以后中途重启了系统(抓包会停)想重新开始

可执行

nohup sh /home/monitor_dump.sh &

8、关于TCPDUMP及其配合Wireshark的更多用法,可参考:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值