流量监控 shell分析流量,Ntop3和4,iftop 配置方法,附带安装脚本

第一种:

如果网络中使用代理服务器,局域网中的计算机通过代理服务器与Internet进行连接,则应该流量监控安装在代理服务器上,这样ntop才可以捕获局域网和Internet之间传输的数据。

 

 

第二种:

 

如果局域网使用交换机或路由器与外部网络进行连接,若欲使用ntopr实现对端口流量的监控,就必须配置端口镜像,并将安装ntop的计算机连接至该镜像目的端口。若欲实现对整个网络的监控,那么,就应当将总出口(即连接路由器或代理服务器的端口)设置为目的端口。

所谓端口镜像,是指把交换机一个或多个端口(或VLAN)的数据镜像到一个或多个端口的方法。端口镜像简单地说,就是把交换机一个(数个)端口(源端口)的流量完全复制一份,从另外一个端口(目的端口)发出去,以便网络管理人员从目的端口通过分析源端口的流量来找出网络存在问题的原因。

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

这个是总流量~~~

 

  
  
  
  
  1. #!/bin/bash 

  2. while [ "1" ] 

  3. do 

  4. eth=$1 

  5. RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}') 

  6. TXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}') 

  7. sleep 1 

  8. RXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}') 

  9. TXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}') 

  10. clear 

  11. echo  -e  "\t RX `date +%k:%M:%S` TX" 

  12. RX=$((${RXnext}-${RXpre})) 

  13. TX=$((${TXnext}-${TXpre})) 

  14. if [[ $RX -lt 1024 ]];then 

  15. RX="${RX}B/s"

  16. elif [[ $RX -gt 1048576 ]];then 

  17. RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}') 

  18. else 

  19. RX=$(echo $RX | awk '{print $1/1024 "KB/s"}') 

  20. fi 

  21. if [[ $TX -lt 1024 ]];then 

  22. TX="${TX}B/s"

  23. elif [[ $TX -gt 1048576 ]];then 

  24. TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}') 

  25. else 

  26. TX=$(echo $TX | awk '{print $1/1024 "KB/s"}') 

  27. fi 

  28. echo -e "$eth \t $RX   $TX " 

  29. done 


 

局域网每个ip的地址,这个是google收集的,是可以用的,大家可以根据思路自己编写适合自己的脚本。

作者的邮件: Email | [email protected]  原创的地址忘了。 这是是需要数据库的

  
  
  
  
  1. set -f 

  2. LANG_BAK=$LANG 

  3. export LANG="zh_CN.UTF-8"

  4. mysql_password="数据库密码"

  5. database="数据库名"

  6. table="存放用户信息的表"

  7. download_limit=100  # 允许的最大下载速度 

  8. upload_limit=100    # 允许的最大上传速度 

  9. function checkin_and_checkout() 

  10.     # 略 

  11.     # 可在此处编写签到逻辑,由于本文只演示如何监控局域网流量,所以此处代码就不贴了。 

  12. ############################################################################# 

  13. ################################## 监控主程序 ################################ 

  14. ############################################################################# 

  15. hour=`date +%H` 

  16. if [ $hour -lt 7 ];then exit 0;fi # 办公室肯定没人的时候不检测 

  17. logfile=/dev/shm/logfile.tmp.`date +%s` 

  18. tmpfile=/dev/shm/lanmon.tmp.`date +%s` 

  19. runtime=2 # minute 

  20. # 监控程序每次运行runtime分钟,runtime分钟后分析数据 

  21. begintime=$(date "+%Y-%m-%d %H:%M:%S") # 监控开始时间 

  22. iptraf -l eth0 -L $logfile -B -t $runtime 

  23. sleep $(($runtime*60+1))  # 必须等iptraf执行完毕才能继续向后执行,不然尚未生成log 

  24. endtime=$(date "+%Y-%m-%d %H:%M:%S") # 监控结束时间 

  25. # 使用sed和awk等工具,截取我们需要的数据 

  26. sed -i '1,5d;/Running time/,$d;/^$/d;/Incoming/d;/Outgoing/d;/Last 5-second/d' $logfile 

  27. sed -i -r '/Ethernet address/N;s/\n/ /g' $logfile 

  28. gawk '{ print $3,$6,$9 }' $logfile > $tmpfile 

  29. # 此时$tmpfile内容为: $1:MAC地址 $2:平均下载速度(KB/s) $3:平均上传速度(KB/s) 

  30. while read line 

  31. do 

  32.     # 本次检测的用户的MAC地址 

  33. mac_address=$(echo $line | gawk '{ print $1 }')  

  34.     # 该用户在过去 $runtime 分钟内的平均上传速度 

  35. avg_upload_rate=$(echo $line | gawk '{ print $3 }')  

  36.     # 该用户在过去 $runtime 分钟内的平均下载速度 

  37. avg_download_rate=$(echo $line | gawk '{ print $2 }')  

  38.     # 小b转大B 

  39. avg_upload_rate=$(echo helloworld | gawk -v number=$avg_upload_rate '{ print number/8; }') 

  40. avg_download_rate=$(echo helloworld | gawk -v number=$avg_download_rate '{ print number/8; }') 

  41.     # 该用户的姓名 

  42. mysql_command="select cn_name from ${table} where mac_address='$mac_address'"

  43. cn_name=$(mysql -N -u root -p$mysql_password $database -e"$mysql_command") 

  44.     # 如果没人使用这个mac无需监控(如:FF:FF:FF:FF:FF:FF,或者局域网打印机之类的设备) 

  45.     if [ x"$cn_name" = x"" ];then continue; fi 

  46. current_time=$(date "+%F %H:%M:%S")  

  47.     checkin_and_checkout $mac_address # 为该用户签到 

  48.     # 保存检测数据,无论是否超速都记录监控数据 

  49. mysql_command="insert into all_data (begintime,endtime,en_name,ip_address,mac_address,download_rate,upload_rate) values"

  50. mysql_command="$mysql_command (\"${begintime}\",\"${endtime}\",\"${en_name}\",\"${ip_address}\",\"${mac_address}\",\"${avg_download_rate}\",\"${avg_upload_rate}\")" 

  51.     mysql -u root -p$mysql_password $database -e"$mysql_command" 

  52.     # 将平均上传、下载速度取整,进而判断是否超速。(因为bash无法使用小数进行数值比较) 

  53. avg_upload_rate_int=${avg_upload_rate%%.*} 

  54. avg_download_rate_int=${avg_download_rate%%.*} 

  55.     # 如果超过规定的速度则记录 

  56.     if [ $avg_download_rate_int -gt $download_limit -o $avg_upload_rate_int -gt $upload_limit ];then 

  57. mysql_command="insert into bad_logs (begintime,endtime,cn_name,mac_address,download_rate,upload_rate) values"

  58. mysql_command="$mysql_command (\"${begintime}\",\"${endtime}\",\"${cn_name}\",\"$mac_address\",\"${avg_download_rate}\",\"${avg_upload_rate}\")" 

  59.         mysql -u root -p$mysql_password ${database} -e"$mysql_command" 

  60.     fi  

  61. done < $tmpfile 

  62. export LANG=$LANG_BAK 

  63. rm -f $tmpfile 

  64. rm -f $logfile 

可以选择ntop3 和ntop4

  
  
  
  
  1. #!/bin/bash 

  2. #by rfyiamcool 

  3. iptables -I INPUT -p udp --dport 3000 -j ACCEPT

  4. iptables -I INPUT -p tdp --dport 3000 -j ACCEPT 

  5. mdkir -p /root/ntop 

  6. if cat /etc/issue|grep 6 ;then 

  7.         rpm -ivh http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-7.noarch.rpm 

  8.     else 

  9.         rpm -ivh http://mirrors.sohu.com/fedora-epel/5/i386/epel-release-5-4.noarch.rpm 

  10.     fi 

  11. read -p "安装ntop3   请按 A @@@ 安装ntop4  请按 B " xuanze 

  12. case $xuanze in 

  13. 3|a|A) 

  14.        yum -y install rrdtool cgilib ntop 

  15.        ;; 

  16. 4|b|B) 

  17. yum -y install libpcap libpcap-devel libpng gdbm gdbm-devel glib libxml2-devel pango pango-devel gd 

  18. yum -y install  GeoIP GeoIP-devel 

  19. wget http://sourceforge.net/projects/ntop/files/ntop/Stable/ntop-4.1.0.tar.gz 

  20. wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz 

  21. tar zxf rrdtool-1.4.7.tar.gz 

  22. cd rrdtool-1.4.7 

  23. ./configure --prefix=/usr/local/rrdtool 

  24. make 

  25. make install 

  26. cd .. 

  27. tar zxf ntop-4.1.0.tar.gz 

  28. cd ntop-4.1.0   

  29. ./autogen.sh --with-tcpwrap 

  30. make 

  31. make install 

  32. mkdir -p /var/log/ntop 

  33. chown -R ntop.ntop /var/log/ntop/ 

  34.         ;; 

  35. *) 

  36.         echo "error! the number you input isn't A to B" 

  37.     exit 

  38.         ;; 

  39. esac 

  40. echo input ntop‘password mima

  41. ntop -A 

  42. echo start 

  43. ntop -d -i eth0 

  44. echo use ie start $(ifconfig eth0|awk  '/inet addr/{print $2}' |tr -d "addr:"):3000  username:admin 

 

 

详细的安装方法~~~~

 

编译、安装源码

 

  
  
  
  
  1. yum install libpcap-devel -y

  2. yum install libtool -y

  3. yum install autoconf -y

  4. yum install automake -y

  5. yum install gdbm-devel -y

  6. yum install zlib-devel -y

  7. yum install ruby -y

  8. yum install GeoIP-devel -y

  9. yum install rrdtool* rrdtool-* -y

下载地址:http://sourceforge.net/projects/ntop/files/ntop/Stable/

我下载的是ntop-4.1.0.tar.gz,目前最新的稳定版,但我使用后怎么觉得不太稳定,时不时就崩溃了。

准备环境

编译安装:

  
  
  
  
  1. tar zxvf ntop-4.1.0.tar.gz 

  2. cd ntop-4.1.0 

  3. ./autogen.sh 

  4. ./configure 

  5. make 

  6. make install 

添加用户:

 

  
  
  
  
  1. groupadd ntop 

  2. useradd ntop -g ntop 

创建目录:

 

  
  
  
  
  1. mkdir /var/log/ntop 

  2. chown -R ntop.ntop /usr/local/share/ntop/ 

  3. chown -R ntop.ntop /var/log/ntop/ 

运行

运行的命令是:

  
  
  
  
  1. ntop -P /var/log/ntop/ -u ntop 

第一次运行要设置管理员密码。之后可以让ntop在后台运行,如果需要开始就运行ntop,在/etc/rc.local添加以下一行:

  
  
  
  
  1. ntop -P /var/log/ntop/ -u ntop > /dev/null 2>&1 & 

运行ntop后,通过http://localhost:3000就可以访问ntop的web界面。

后记

 

 

①About在线手册

②Summary:目前网络的整体概况。

― Traffic:流量。

― Hosts:所有主机的使用概况。

― Network Load:各时段的网络负载。

― Netflows:网络流量图。

③IP Summary:各主机的流量状况与排名明细。

― Traffic:所有主机的流量明细。

― Multicast:多点传送情况。

― Domain:域名。

― Distribution:通信量状况。

― Local >>Local:本地流量。

― Local>>Remote:所有主机对外的明细。

― Remote>>Local:远程主机到本地流量。

― Remote>>Remote:远程主机到远程主机流量。

④All Protocols:查看各主机占用的频宽与各时段网络使用者等的明细。

― Traffic:流量。

― Throughput:频宽使用明细表(点选主机,可以看到该主机详细的信息及使用状况)。

― Activity:各时段所有主机使用流量状况(点选主机,可以看到该主机详细的信息及使用状况)。

⑤Local IP:局域网络内各主机使用状况。

― Routers:路由器状况。

― Ports Used:端口使用情况。

― Active TCP Sessions:目前正在进行的联机。

― Host Fingerprint:主机快照情况。

― Host Characterization:主机描述。

― Local Matrix:局域网络内各主机间的流量明细。

⑥FC:光纤网络的状况。

⑦SCSI:SCSI设备状况。

⑧Admin:新增NTOP使用者或重新启动,停止NTOP。

 

 

 

 iftop 安装方法~

  
  
  
  
  1. yum install flex byacc  libpcap ncurses ncurses-devel libpcap-devel 

  2. wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz 

  3. tar zxvf iftop-0.17.tar.gz 

  4. cd iftop-0.17 

  5. ./configure 

  6. make && make install 

 

 

 

你可能感兴趣的:(ntop)