第一种:
如果网络中使用代理服务器,局域网中的计算机通过代理服务器与Internet进行连接,则应该流量监控安装在代理服务器上,这样ntop才可以捕获局域网和Internet之间传输的数据。
第二种:
如果局域网使用交换机或路由器与外部网络进行连接,若欲使用ntopr实现对端口流量的监控,就必须配置端口镜像,并将安装ntop的计算机连接至该镜像目的端口。若欲实现对整个网络的监控,那么,就应当将总出口(即连接路由器或代理服务器的端口)设置为目的端口。
所谓端口镜像,是指把交换机一个或多个端口(或VLAN)的数据镜像到一个或多个端口的方法。端口镜像简单地说,就是把交换机一个(数个)端口(源端口)的流量完全复制一份,从另外一个端口(目的端口)发出去,以便网络管理人员从目的端口通过分析源端口的流量来找出网络存在问题的原因。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这个是总流量~~~
#!/bin/bash
while [ "1" ]
do
eth=$1
RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}')
TXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}')
sleep 1
RXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}')
TXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}')
clear
echo -e "\t RX `date +%k:%M:%S` TX"
RX=$((${RXnext}-${RXpre}))
TX=$((${TXnext}-${TXpre}))
if [[ $RX -lt 1024 ]];then
RX="${RX}B/s"
elif [[ $RX -gt 1048576 ]];then
RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')
else
RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')
fi
if [[ $TX -lt 1024 ]];then
TX="${TX}B/s"
elif [[ $TX -gt 1048576 ]];then
TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')
else
TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')
fi
echo -e "$eth \t $RX $TX "
done
局域网每个ip的地址,这个是google收集的,是可以用的,大家可以根据思路自己编写适合自己的脚本。
作者的邮件: Email | [email protected] 原创的地址忘了。 这是是需要数据库的
set -f
LANG_BAK=$LANG
export LANG="zh_CN.UTF-8"
mysql_password="数据库密码"
database="数据库名"
table="存放用户信息的表"
download_limit=100 # 允许的最大下载速度
upload_limit=100 # 允许的最大上传速度
function checkin_and_checkout()
{
# 略
# 可在此处编写签到逻辑,由于本文只演示如何监控局域网流量,所以此处代码就不贴了。
}
#############################################################################
################################## 监控主程序 ################################
#############################################################################
hour=`date +%H`
if [ $hour -lt 7 ];then exit 0;fi # 办公室肯定没人的时候不检测
logfile=/dev/shm/logfile.tmp.`date +%s`
tmpfile=/dev/shm/lanmon.tmp.`date +%s`
runtime=2 # minute
# 监控程序每次运行runtime分钟,runtime分钟后分析数据
begintime=$(date "+%Y-%m-%d %H:%M:%S") # 监控开始时间
iptraf -l eth0 -L $logfile -B -t $runtime
sleep $(($runtime*60+1)) # 必须等iptraf执行完毕才能继续向后执行,不然尚未生成log
endtime=$(date "+%Y-%m-%d %H:%M:%S") # 监控结束时间
# 使用sed和awk等工具,截取我们需要的数据
sed -i '1,5d;/Running time/,$d;/^$/d;/Incoming/d;/Outgoing/d;/Last 5-second/d' $logfile
sed -i -r '/Ethernet address/N;s/\n/ /g' $logfile
gawk '{ print $3,$6,$9 }' $logfile > $tmpfile
# 此时$tmpfile内容为: $1:MAC地址 $2:平均下载速度(KB/s) $3:平均上传速度(KB/s)
while read line
do
# 本次检测的用户的MAC地址
mac_address=$(echo $line | gawk '{ print $1 }')
# 该用户在过去 $runtime 分钟内的平均上传速度
avg_upload_rate=$(echo $line | gawk '{ print $3 }')
# 该用户在过去 $runtime 分钟内的平均下载速度
avg_download_rate=$(echo $line | gawk '{ print $2 }')
# 小b转大B
avg_upload_rate=$(echo helloworld | gawk -v number=$avg_upload_rate '{ print number/8; }')
avg_download_rate=$(echo helloworld | gawk -v number=$avg_download_rate '{ print number/8; }')
# 该用户的姓名
mysql_command="select cn_name from ${table} where mac_address='$mac_address'"
cn_name=$(mysql -N -u root -p$mysql_password $database -e"$mysql_command")
# 如果没人使用这个mac无需监控(如:FF:FF:FF:FF:FF:FF,或者局域网打印机之类的设备)
if [ x"$cn_name" = x"" ];then continue; fi
current_time=$(date "+%F %H:%M:%S")
checkin_and_checkout $mac_address # 为该用户签到
# 保存检测数据,无论是否超速都记录监控数据
mysql_command="insert into all_data (begintime,endtime,en_name,ip_address,mac_address,download_rate,upload_rate) values"
mysql_command="$mysql_command (\"${begintime}\",\"${endtime}\",\"${en_name}\",\"${ip_address}\",\"${mac_address}\",\"${avg_download_rate}\",\"${avg_upload_rate}\")"
mysql -u root -p$mysql_password $database -e"$mysql_command"
# 将平均上传、下载速度取整,进而判断是否超速。(因为bash无法使用小数进行数值比较)
avg_upload_rate_int=${avg_upload_rate%%.*}
avg_download_rate_int=${avg_download_rate%%.*}
# 如果超过规定的速度则记录
if [ $avg_download_rate_int -gt $download_limit -o $avg_upload_rate_int -gt $upload_limit ];then
mysql_command="insert into bad_logs (begintime,endtime,cn_name,mac_address,download_rate,upload_rate) values"
mysql_command="$mysql_command (\"${begintime}\",\"${endtime}\",\"${cn_name}\",\"$mac_address\",\"${avg_download_rate}\",\"${avg_upload_rate}\")"
mysql -u root -p$mysql_password ${database} -e"$mysql_command"
fi
done < $tmpfile
export LANG=$LANG_BAK
rm -f $tmpfile
rm -f $logfile
可以选择ntop3 和ntop4
#!/bin/bash
#by rfyiamcool
iptables -I INPUT -p udp --dport 3000 -j ACCEPT
iptables -I INPUT -p tdp --dport 3000 -j ACCEPT
mdkir -p /root/ntop
if cat /etc/issue|grep 6 ;then
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-7.noarch.rpm
else
rpm -ivh http://mirrors.sohu.com/fedora-epel/5/i386/epel-release-5-4.noarch.rpm
fi
read -p "安装ntop3 请按 A @@@ 安装ntop4 请按 B " xuanze
case $xuanze in
3|a|A)
yum -y install rrdtool cgilib ntop
;;
4|b|B)
yum -y install libpcap libpcap-devel libpng gdbm gdbm-devel glib libxml2-devel pango pango-devel gd
yum -y install GeoIP GeoIP-devel
wget http://sourceforge.net/projects/ntop/files/ntop/Stable/ntop-4.1.0.tar.gz
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz
tar zxf rrdtool-1.4.7.tar.gz
cd rrdtool-1.4.7
./configure --prefix=/usr/local/rrdtool
make
make install
cd ..
tar zxf ntop-4.1.0.tar.gz
cd ntop-4.1.0
./autogen.sh --with-tcpwrap
make
make install
mkdir -p /var/log/ntop
chown -R ntop.ntop /var/log/ntop/
;;
*)
echo "error! the number you input isn't A to B"
exit
;;
esac
echo input ntop‘password mima
ntop -A
echo start
ntop -d -i eth0
echo use ie start $(ifconfig eth0|awk '/inet addr/{print $2}' |tr -d "addr:"):3000 username:admin
详细的安装方法~~~~
yum install libpcap-devel -y
yum install libtool -y
yum install autoconf -y
yum install automake -y
yum install gdbm-devel -y
yum install zlib-devel -y
yum install ruby -y
yum install GeoIP-devel -y
yum install rrdtool* rrdtool-* -y
下载地址:http://sourceforge.net/projects/ntop/files/ntop/Stable/
我下载的是ntop-4.1.0.tar.gz,目前最新的稳定版,但我使用后怎么觉得不太稳定,时不时就崩溃了。
准备环境
编译安装:
tar zxvf ntop-4.1.0.tar.gz
cd ntop-4.1.0
./autogen.sh
./configure
make
make install
添加用户:
groupadd ntop
useradd ntop -g ntop
创建目录:
mkdir /var/log/ntop
chown -R ntop.ntop /usr/local/share/ntop/
chown -R ntop.ntop /var/log/ntop/
运行的命令是:
ntop -P /var/log/ntop/ -u ntop
第一次运行要设置管理员密码。之后可以让ntop在后台运行,如果需要开始就运行ntop,在/etc/rc.local添加以下一行:
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 安装方法~
yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make && make install