Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1830181
  • 博文数量: 116
  • 博客积分: 9934
  • 博客等级: 上将
  • 技术积分: 1881
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-22 09:16
文章分类

全部博文(116)

文章存档

2007年(43)

2006年(73)

我的朋友

分类: 系统运维

2006-07-13 14:17:15

 

监控IP流量


在流量统计软件中有MRTG,NTOP,BANDWIDTHD等多种, MRTG 只是显示某一网络接口的总量, NTOP详细得来也很占系统资源.bandwidthd因为它精简,直观.很容易配置.
好处:在任何一台电脑可以通过web界面用浏览器查看经过网关的各个ip流量,而且是分协议,分颜色显示,已经有直观的图象曲线.

在日常维护中, 网管人员最头痛的是内部网经常有人在大量传送文件而导致本来可怜的带宽变得更加狼狈.如果在网关上装上'bandwidthd' ,就可以追踪的是各个的 IP 的流量,而且可以用图象曲线显示各个ip的相应不同协议显示,还能分时段查看
例如包含HTTP, TCP, UDP, ICMP, VPN 以及 P2P 协议的各自流量,ip为统计对象.
默认的颜色,TCP为绿色;HTTP为蓝色;FTP为浅蓝;P2P为粉红;UDP为棕褐色; ICMP为红色 . 打了补丁还可以增加你想检测端口.


安装与配置 bandwidthd .


1.条件:要先安装有以下库:
如果没有请到相关网址下载:
libpcap
相关网址
libpng
相关网址(
gd
相关网址
系统须有支持 System V IPC (基本上Linux都有)

RedHat  
自带的rpm包也可以,要装有下面的包:
gd-1.8.4-4
gd-devel-1.8.4-4
libpng-1.2.2-16
libpng-devel-1.2.2-16
libpcap-0.7.2-1
分别执行 rpm -ivh 软件包 进安装即可.

2.下载:
bandwidthd
原始网址如下:

里面有下载地址的连接,目前最新的版本是 bandwidthd 1.2.1b
下载bandwidthd-1.2.1b.tgz 放在/home/(这个目录是我的习惯而已).
2.1.
也下载一个补丁吧,这个补丁可以增加检测端口的,所以在这里还是先补了再安装.
在相关补丁(patchs)的连接里有这样一个补丁:

下载bandwidthd-cp3-1.2.1b.patch.gz 也放在/home/
这是为bandwidthd 1.2.1b所用的.
解压为bandwidthd-cp3-1.2.1b.patch

3. 安装
bandwidthd-cp3-1.2.1b.patch放在bandwidthd-1.2.1b目录同一级.
3.1 tar -xvzf bandwidthd-1.2.1b.tgz
显示:
[root@mail bandwidthd]# tar zxvf bandwidthd-1.2.1b.tgz
bandwidthd-1.2.1b/
bandwidthd-1.2.1b/etc/
bandwidthd-1.2.1b/etc/bandwidthd.conf
bandwidthd-1.2.1b/CHANGELOG
bandwidthd-1.2.1b/Makefile
bandwidthd-1.2.1b/Makefile.BSD
bandwidthd-1.2.1b/Makefile.Solaris
bandwidthd-1.2.1b/README
bandwidthd-1.2.1b/TODO
bandwidthd-1.2.1b/bandwidthd-0.4.kdevprj
bandwidthd-1.2.1b/bandwidthd.c
bandwidthd-1.2.1b/bandwidthd.h
bandwidthd-1.2.1b/conf.l
bandwidthd-1.2.1b/conf.y
bandwidthd-1.2.1b/graph.c
bandwidthd-1.2.1b/htdocs/
bandwidthd-1.2.1b/htdocs/index.html
bandwidthd-1.2.1b/htdocs/legend.gif
bandwidthd-1.2.1b/htdocs/logo.gif
bandwidthd-1.2.1b/htdocs/index2.html
bandwidthd-1.2.1b/htdocs/index3.html
bandwidthd-1.2.1b/htdocs/index4.html
bandwidthd-1.2.1b/conf.tab.c
bandwidthd-1.2.1b/conf.tab.h
bandwidthd-1.2.1b/conf.l.c
3.2 cd bandwidthd-1.2.1b
3.3
执行补丁: patch -p1 < ../bandwidthd-cp3-1.2.1b.patch
显示:
[root@mail bandwidthd-1.2.1b]# patch -p1 < ../bandwidthd-cp3-1.2.1b.patch
patching file bandwidthd-0.4.kdevprj
patching file bandwidthd.c
patching file bandwidthd.h
patching file conf.l
patching file conf.y
patching file etc/bandwidthd.conf
patching file etc/bandwidthd.conf.orig
patching file graph.c
patching file Makefile
patching file Makefile.BSD
patching file Makefile.Solaris
patching file tables.c
patching file tables.h

3.4
执行 make install
显示:
[root@mail bandwidthd-1.2.1b]# make install
cc -I/usr/local/include -O3 -Wall -c -o bandwidthd.o bandwidthd.c
cc -I/usr/local/include -O3 -Wall -c -o graph.o graph.c
bison -d conf.y
cc -I/usr/local/include -O3 -Wall -c -o conf.tab.o conf.tab.c
lex -s -i -t -I conf.l > conf.l.c
cc -O3 -c -o conf.l.o conf.l.c
cc -I/usr/local/include -O3 -Wall -c -o tables.o tables.c
cc -I/usr/local/include -O3 -Wall bandwidthd.o graph.o conf.tab.o conf.l.o tables.o -o bandwidthd -L/usr/local/lib -lgd -lpng -lpcap
if [ ! -d /usr/local/bandwidthd/etc ] ; then mkdir -p /usr/local/bandwidthd/etc ; fi
if [ ! -d /usr/local/bandwidthd/htdocs ] ; then mkdir -p /usr/local/bandwidthd/htdocs ; fi
cp bandwidthd /usr/local/bandwidthd
if [ ! -f /usr/local/bandwidthd/etc/bandwidthd.conf ] ; then cp etc/bandwidthd.conf /usr/local/bandwidthd/etc/ ; fi
cp htdocs/legend.gif /usr/local/bandwidthd/htdocs/
cp htdocs/logo.gif /usr/local/bandwidthd/htdocs/

3.5
至此即已安装完成,它会将 bandwidthd 安装 /usr/local/bandwidthd

4. 设定 ,配置bandwidthd.conf
bandwidthd
的设定也很简单,一个配置文件搞定,
一般修改一下网段和掩码,其他的用默认值即可,如果你熟悉英文,就看看其他选项.大概如下
编辑:
/usr/local/bandwidthd/etc/bandwidthd.conf
####################################################
# Bandwidthd.conf
#
# Commented out options are here to provide
# documentation and represent defaults

# Subnets to collect statistics on
#subnet 10.0.0.0 255.0.0.0
#subnet 208.16.191.0 255.255.255.0
subnet 192.168.1.250 255.255.255.0 #
以一网段为例
# Device to listen on
dev "eth0" #(
这是你要检测的网卡,可以调整为对应的网络连接设备)
把其中 subnet 的设定,以一网段为例:
subnet 192.168.1.0 255.255.255.0
###################################################
# Options that don't usually get changed
# An interval is 2.5 minutes, this is how many
# intervals to skip before doing a graphing run
#skip_intervals 0 #
默间隔认2.5 minutes 刷新

# Graph cutoff is how many k must be transfered by an
# ip before we bother to graph it
#graph_cutoff 1024 #
默间1M 以上的流量才有图形

#Put interface in promiscuous mode to score to traffic
#that may not be routing through the host machine.
#promiscuous true #
让网卡在混杂模式中记录

#Log data to cdf file htdocs/log.cdf
bandwidthd中生成log2.cdf log.cdf格式数据记录
output_cdf true

#Read back the cdf file on startup
在启动bandwidth时重新读取cdf的数据
recover_cdf true

#Libpcap format filter string used to control what bandwidthd see's
#Please always include "ip" in the string to avoid strange problems
#
ip为过滤对象
filter "ip"

#Draw Graphs
graph true

#
以下是我打了补丁bandwidthd-cp3-1.2.1b.patch才有的,
# List of controled protocols
# format: item "item_name" rgb_color protocol ports
这是记录的格式:端口名字,RGB颜色,端口号
# obs.: The yellow (0xffff00) color is predefined to the "TOTAL" item
黄色预设为TOTAL的颜色
item "TCP" 0x00ff00 tcp all
item "HTTP" 0x0000ff tcp 80 443
item "FTP" 0xc0c0ff tcp 20 21
item "P2P" 0xff00ff tcp 1044 1045 1214 4661 4661 4665 5190 5500 5501 5502 5503 6346 6347 6666 6667 7788 8888 8889 28864 288
65
item "UDP" 0x800000 udp all
item "ICMP" 0xff0000 icmp all
item "SMTP" 0xFF8C00 tcp 25
item "POP3" 0x00FFFF tcp 110

其中SMTPPOP3是我为了更详细的数据流而增加上去的.你也可以增加你想检测的端口,这就是为何我推荐打这个补丁再安装的原因.
存盘之后,便可执行。
5. 运行 ,要先转到安装目录才能执行
cd /usr/local/bandwidthd
./bandwidthd
6. 显示:
web 主目录下做个软连接,执行
ln -s /usr/local/bandwidthd/htdocs bandwidthd
接着您便可用 http://你的主机/bandwidthd

这样就可以在浏览器里面检测你需要的流量了 ,我的如下:



另外,更多配置方法:
1.
把设定档中的 dev 增加更多的dev,或设成 any 可以监控更多设备
2.
如果认为TOP20太少了,
就在还没MAKE时候先改graph.c
graph.c
中查找
for (Counter=0; Counter < 21 && Counter < NumIps; Counter++)
21改成101
就变成TOP100
然后查找TOP20改为字符串TOP100
然后存盘,make install 即可.

此方法我已经实践通过,特意写成文档,以分享并感谢提供bandwidthd的开发者,如果觉得有更好的配置和使用方法,请互相交流. 如果有误请赐教.我的yahoo ID kindgeorge#yahoo.com
Msn : kindgeorge # hotmail.com
bandwidthd进行网络流量检测和分析如果结合tc+iptables进行流量控制,是一个绝妙的组合. 这样你就可以随时检测和控制网内所有机器及端口的流量了.
关于tc+iptables可以参考

更多的bandwidthd可以参考:

阅读(2665) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~