Board logo

标题: 深信服AC里面的一个抓包脚本 checkpps.sh [打印本页]

作者: linda    时间: 2018-5-28 11:08     标题: 深信服AC里面的一个抓包脚本 checkpps.sh

一般情况下PPS不会超过2000/s, 如果网络突然特别慢的时候,可以抓一下包看看是不是内网出现攻击。
以往的经验曾出现过200M/s的流量,直接就把深信服AC给搞挂了。


#!/b。in/s。h
#脚本功能:在指定网口收包超过某个pps时,自动抓取一定数量的包,存成一个文件,通常在不确定设备什么时候受到攻击或者流量异常的时候使用
#此脚本先放到 /t。mp 下, 然后按如下步骤操作
#d。os2unix /t。mp/checkpps.sh
#c。hmod a+x /t。mp/checkpps.sh
#c。p /t。mp/checkpps.sh /u。sr/s。bin/
#(/u。sr/s。bin/checkpps.sh eth0 10000 50000 &)   //注意,要带括号
#参数可自定义
#第一个表示要抓包的网口
#第二个表示收包的检测阀值,超过此数值就开始抓包
#第三个表示要抓多少包(默认值是只出10000包,另外有个超时值是6秒,意思是如果6秒内抓不够包,也会停止tcpdump)
#脚本的输出日志和抓到的包都放在 /aclog/checkpps_output/ 下面,
#已对这个文件夹做了大小不限,不会超过2G,如果超过了,则会先删除一些数据包,然后再抓。
#所以不用担心抓的包过多,多大,占用太多磁盘空间。
#此外,要注意,如果重启了设备,则需要重新手动执行脚本,如果想启动就监控,请自行添加 /e。tc/rc2.d 下的启动脚本

echo "usage: ${0} [ifname] [max recv pps] [capture packet count]"

output_dir="/aclog/checkpps_output/"
[ ! -d ${output_dir} ] && mkdir -p ${output_dir}


#pps概念:每秒数据包个数
#注意包数和包大小不是一个概念,就是说pps和流量,带宽并不是相同概念,64字节以下的小包是一个包,大于1400字节的大包,也是一个包

#要抓包的网口,一般设置成内网口就行了
IFN=$1
echo "IFN="${IFN:="eth0"}

#检测间隔,每n秒检测一次pps,一般2或3秒可以了
S。LEEP=2


#pps阀值设置:如果满足 “接收pps超过一定值” 或者 “接收但被drop的pps超过一定值” 两个条件之一,则启动抓包
#通常可以设置为实际正常上班时间网络接收pps的峰值的1.5到3倍就可以了
#比如早上10到11点eth0接收 pps是 10万 左右,那可以考虑设置成18万
#不过也要参考我们设备目前实际的性能指标,非10G版本6000平台,目前单桥单向数据一般也就是20多万的pps
#第二个条件drop包接收pps一般不需要管,设成一个较大的值就可以了(相当于忽略这条件)

RECV_PPS=$2
echo "RECV_PPS="${RECV_PPS:=10000}


#下面的参数是指启动抓包后,要抓多少个包才停止。
#注意不能抓太多,如果太多,可能文件会很大,占空间,也不好拷回来
#例如800Mbps的带宽(通常指下行,单向),1秒的数据包总大小,就是100MB左右了(除8,1字节等于8比特)
#可以根据实际正常的网络流量估算和估算的数据包大小,抓若干秒或几十秒的数据即可
#比如正常pps是2000,你可以抓10秒的数据,就是20000包,以每包1KB大包来算,大概就是10几MB
PKT_CNT=$3
echo "PKT_CNT="${PKT_CNT:=100000}

#抓包日志路径
LOGF=${output_dir}/${IFN}.log


LASTRX=0
LASTTX=0
LASTRB=0
LASTTB=0

START=0
END=0


RX_PACKTS="rx_packets:"
TX_PACKTS="tx_packets:"
RX_BYTES="rx_bytes:"
TX_BYTES="tx_bytes:"


#判断是否为万兆网卡
driver=`ethtool -i ${IFN} | g。rep "driver" | a。wk -F ":" '{ print $2 }'`
if [ ${driver} = "ixgbe" ] ; then
        RX_PACKTS="rx_pkts_nic:"
        TX_PACKTS="tx_pkts_nic:"
        RX_BYTES="rx_bytes_nic:"
        TX_BYTES="tx_bytes_nic:"
fi

loop=1





原文: https://morphyhu.szitcare.com/wordpress/?p=399

[ 本帖最后由 linda 于 2018-5-28 22:13 编辑 ]




欢迎光临 中神通公司技术论坛 (http://trustcomputing.com.cn/bbs/) Powered by Discuz! 6.0.0