网络流量分析利器-可视化网络-netflow【1】-基础原理
网络流量分析利器-可视化网络-netflow【2】-Cisco NetFlow 工作原理介绍及配置
网络流量分析利器-可视化网络-netflow【3】-netflow版本5和版本9区别
网络流量分析利器-可视化网络-netflow【4】-接收器nfdump简介
网络流量分析利器-可视化网络-netflow【5】-linux下数据采集器fprobe
网络流量分析利器-可视化网络-netflow【6】-生产网流量监控架构设计
fprobe参数 -e
fprobe参数 -n -k
netflow接收器
有了发送器,还需要有接收器才能收集数据和分析数据,商业软件有ManageEngine和SolarWinds,他们基本上按照埋点个数算钱或者按照流量收费,实在买不起。
后来找到了一个github上开源的软件,这个软件是nfsen的后台,叫nfdump,为啥没直接推荐nfsen,因为我觉nfsen的界面做的不好,而且流量图是png格式,很难二次开发,而nfdump将数据存储成文本文件,利于二次开发,可以存到数据库,再用grafana展示出来。
nfdump介绍
官网(github,如果打不开,请使用***):
https://github.com/phaag/nfdump/blob/master/README.md
2019年末,最新版本1.6.18,使用yum安装默认也是1.6.18版本。
nfdump是一个可以收集和处理netflow和sflow的工具,支持netflow v1,v5/v7,v9,IPFIX和sflow,支持IPv4和IPv6。
安装
环境:CentOS 7
更换yum源(可选操作):
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo CentOS-Base.repo
yum update
安装nfdump
yum -y install nfdump
查看版本
nfdump -V
nfdump的五大工具
nfcapd-netflow收集器守护程序,收集从采集设备发来的flow数据,并写入文件中,默认5分钟存成一个文件。
nfdump-读取文件数据,并整合数据。nfdump从nfcapd存储的一个或多个文件中读取netflow数据。nfdump语法和tcpdump语法很像,他可以输出单个数据信息,也可以进行聚合输出统计信息,还可以根据packets或者bytes等参数进行排序。
nfanon-匿名记录Netflow记录,流记录中的IP地址使用CryptoPAn方法进行匿名处理。
nfexpire-丢弃旧的数据,管理数据到期。设置适当的限制。用于NfSen。
nfreplay-Netflow重放,从nfcapd存储的文件中读取netflow数据,发送到另一台主机。
命令参数
nfcapd 命令参数
-h:帮助
-w:将文件旋转与接下来的n分钟(由-t指定)间隔对齐,实测并没看出他的用处,同步文件周期完全受到-t参数影响。单是用此参数,没有效果。
-t:(重要)指定旋转文件的时间间隔,以秒为单位。 默认值为300s。决定了生成nfcapd文件的周期。建议选择60s。
-b:监听的目标地址,可以使ip或hostname。
-4:仅监听ipv4,可以和-b搭配使用。
-6:仅监听ipv6,可以和-b搭配使用。
-J:加入多播组。
-p:(重要)监听端口。
-l:(重要)设置输出目录。
-s:(有用)子层次结构,文件内部存储接口,可以自动生成文件夹。详见man。
-n:(有用)当有多个数据源时,可以指定数配置数据源参数,格式:Ident,IP,logdir。
-P:设置pid文件。
-R:将传入的数据包重复发送到IP地址/端口。 最多8个中继器。
-B:设置套接字缓冲区大小。
-D:(重要)后台运行
-T:(重要)需要记录的参数,详见man。
-V:查看版本。
nfdump 命令参数
-h:帮助
-V:查看版本
-a:通过五元组protocol, srcip, dstip, srcport and dstport进行汇总。
-A:选择性汇总,可以单独汇总srcip或者protocol,也可以使用‘,’分割,汇总多个参数。格式-A proto,srcip,dstport,详见man。
-b:和-a相似,区别只是将双向流量汇总成一个值。
-B:和-A相似,区别只是将双向流量汇总成一个值。
-r:读取单个文件。
-w:将结果输出到文件。默认ASCII格式。
-n:查看前n位数据。
-c:从第一行读取到指定行数。
-D:使用dns将ip解析成主机名
-N:输出纯数字,比如tcp协议用6显示。
-s:格式-s [/],为生成统计信息,并根据排序。详见man。
-q:不打印标题行和底部状态行。
-I:从-r指定的nfcapd文件内读取摘要信息。
-M:读取多个文件夹,格式:/dir/dir1:dir2:dir3 Read the same files from '/dir/dir1' '/dir/dir2' and '/dir/dir3'。
-O:进行排序的参数,比如bytes,tstart,flows等。
-R:读取多个文件。格式:-R nfcapd.201912301833:nfcapd.201912301837。
-o:输出文件格式,比如csv,json,long等,也可以自定义。
配置实例
nfcapd 配置实例
使用9995端口进行监听,并存储到一个文件内,识别v9的所有标签
nfcapd -z -w -D -T all -l /netflow/spool/allflows -I any -S 2 -P /var/run/nfcapd.allflows.pid
通过8887端口收集来自两个不同采集器的数据,并存储在单独的文件夹中,并将缓冲区大小设置为128000字节
nfcapd -z -w -D -T all -p 8877 -n upstream,192.168.1.1,/netflow/spool/upstream -n peer,192.168.2.1,/netflow/spool/peer -S 2 -B 128000
只接收单一采集器的数据,并且只识别扩展3,4,5的数据,在存储完一个文件后,执行一个命令,同时设置流量自动过期
nfcapd -w -D -T 3,4,5 -n upstream,192.168.1.1,/netflow/spool/upstream -p 23456 -B 128000 -x '/path/command -r %d/%f' -P /var/run/nfcapd/nfcapd.pid -e
nfdump 配置实例
查询前一百行数据,并匹配出tcp协议,源地址172.16.17.18或者目的地址172.16.17.19的流
nfdump -r /and/dir/nfcapd.201107110845 -c 100 'proto tcp and ( src ip 172.16.17.18 or dst ip 172.16.17.19 )'
查询7月11日8:45到9:45,IP地址为192.168.1.2的记录
nfdump -R /and/dir/nfcapd.201107110845:nfcapd.201107110945 'host 192.168.1.2'
查询多个数据源下,前20的数据流
nfdump -M /to/and/dir1:dir2 -R nfcapd.200407110845:nfcapd.200407110945 -s record -n 20
查找18:33分的数据,汇聚源地址和目的地址,并以bytes进行降序排序,且用特定格式输出前二十个数据
nfdump -r nfcapd.201912301833 -o "fmt:%ts %td %pr %sap -> %dap %flg %tos %pkt %byt %fl" -A srcip,dstip -O bytes -n 20