Linux服务器上监控网络带宽的18个常用命令
本文介绍了一些可以用来监控网络使用情况的Linux命令行工具。这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度。入站流量和出站流量分开来显示。
这些工具使用不同的机制来制作流量报告。nload等一些工具可以读取"proc/net/dev"文件,以获得流量统计信息;而一些工具使用pcap库来捕获所有数据包,然后计算总数据量,从而估计流量负载。
下面是按功能划分的命令名称。
- 监控总体带宽使用――nload、bmon、slurm、bwm-ng、cbm、speedometer和netload
- 监控总体带宽使用(批量式输出)――vnstat、ifstat、dstat和collectl
- 每个套接字连接的带宽使用――iftop、iptraf-ng、tcptrack、pktstat、netwatch和trafshow
- 每个进程的带宽使用――nethogs
- nagiosweb------nagios
1. nload
nload是一个命令行工具,让用户可以分开来监控入站流量和出站流量。它还可以绘制图表以显示入站流量和出站流量,视图比例可以调整。用起来很简单,不支持许多选项。
所以,如果你只需要快速查看总带宽使用情况,无需每个进程的详细情况,那么nload用起来很方便。结果是bit/s
- $ nload
安装nload:Fedora和Ubuntu在默认软件库里面就有nload。CentOS用户则需要从Epel软件库获得nload。
2. iftop
iftop可测量通过每一个套接字连接传输的数据;它采用的工作方式有别于nload。iftop使用pcap库来捕获进出网络适配器的数据包,然后汇总数据包大小和数量,搞清楚总的带宽使用情况。
虽然iftop报告每个连接所使用的带宽,但它无法报告参与某个套按字连接的进程名称/编号(ID)。不过由于基于pcap库,iftop能够过滤流量,并报告由过滤器指定的所选定主机连接的带宽使用情况。
- $ sudo iftop -n
n选项可以防止iftop将IP地址解析成主机名,解析本身就会带来额外的网络流量。
安装iftop:Ubuntu/Debian/Fedora用户可以从默认软件库获得它。CentOS用户可以从Epel获得它。
3. iptraf
iptraf是一款交互式、色彩鲜艳的IP局域网监控工具。它可以显示每个连接以及主机之间传输的数据量。下面是屏幕截图。
- $ sudo iptraf
4. nethogs
nethogs是一款小巧的"net top"工具,可以显示每个进程所使用的带宽,并对列表排序,将耗用带宽最多的进程排在最上面。万一出现带宽使用突然激增的情况,用户迅速打开nethogs,就可以找到导致带宽使用激增的进程。nethogs可以报告程序的进程编号(PID)、用户和路径。
- $ sudo nethogs
安装nethogs:Ubuntu、Debian和Fedora用户可以从默认软件库获得。CentOS用户则需要Epel。
5. bmon
bmon(带宽监控器)是一款类似nload的工具,它可以显示系统上所有网络接口的流量负载。输出结果还含有图表和剖面,附有数据包层面的详细信息。
安装bmon:Ubuntu、Debian和Fedora用户可以从默认软件库来安装。CentOS用户则需要安装repoforge,因为Epel里面没有bmon。
bmon支持许多选项,能够制作HTML格式的报告。欲知更多信息,请参阅参考手册页。
6. slurm
slurm是另一款网络负载监控器,可以显示设备的统计信息,还能显示ASCII图形。它支持三种不同类型的图形,使用c键、s键和l键即可激活每种图形。slurm功能简单,无法显示关于网络负载的任何更进一步的详细信息。
- $ slurm -s -i eth0
7. tcptrack
tcptrack类似iftop,使用pcap库来捕获数据包,并计算各种统计信息,比如每个连接所使用的带宽。它还支持标准的pcap过滤器,这些过滤器可用来监控特定的连接。
安装tcptrack:Ubuntu、Debian和Fedora在默认软件库里面就有它。CentOS用户则需要从RepoForge获得它,因为Epel里面没有它。
8. vnstat
vnstat与另外大多数工具有点不一样。它实际上运行后台服务/守护进程,始终不停地记录所传输数据的大小。之外,它可以用来制作显示网络使用历史情况的报告。
- $ service vnstat status
- * vnStat daemon is running
运行没有任何选项的vnstat,只会显示自守护进程运行以来所传输的数据总量。
- $ vnstat
- Database updated: Mon Mar 17 15:26:59 2014
- eth0 since 06/12/13
- rx: 135.14 GiB tx: 35.76 GiB total: 170.90 GiB
- monthly
- rx | tx | total | avg. rate
- ------------------------+-------------+-------------+-------------
- Feb '14 8.19 GiB | 2.08 GiB | 10.27 GiB | 35.60 kbit/s
- Mar '14 4.98 GiB | 1.52 GiB | 6.50 GiB | 37.93 kbit/s
- ------------------------+-------------+-------------+-------------
- estimated 9.28 GiB | 2.83 GiB | 12.11 GiB |
- daily
- rx | tx | total | avg. rate
- ------------------------+-------------+-------------+-------------
- yesterday 236.11 MiB | 98.61 MiB | 334.72 MiB | 31.74 kbit/s
- today 128.55 MiB | 41.00 MiB | 169.56 MiB | 24.97 kbit/s
- ------------------------+-------------+-------------+-------------
- estimated 199 MiB | 63 MiB | 262 MiB |
想实时监控带宽使用情况,请使用"-l"选项(实时模式)。然后,它会显示入站数据和出站数据所使用的总带宽量,但非常精确地显示,没有关于主机连接或进程的任何内部详细信息。
- $ vnstat -l -i eno1
- Monitoring eth0... (press CTRL-C to stop)
- rx: 12 kbit/s 10 p/s tx: 12 kbit/s 11 p/s
vnstat更像是一款制作历史报告的工具,显示每天或过去一个月使用了多少带宽。它并不是严格意义上的实时监控网络的工具。
vnstat支持许多选项,支持哪些选项方面的详细信息请参阅参考手册页。
9. bwm-ng
bwm-ng(下一代带宽监控器)是另一款非常简单的实时网络负载监控工具,可以报告摘要信息,显示进出系统上所有可用网络接口的不同数据的传输速度。
- $ bwm-ng
- bwm-ng v0.6 (probing every 0.500s), press 'h' for help
- input: /proc/net/dev type: rate
- / iface Rx Tx T
- ot=================================================================
- == eth0: 0.53 KB/s 1.31 KB/s 1.84
- KB lo: 0.00 KB/s 0.00 KB/s 0.00
- KB-------------------------------------------------------------------------------------------------------------
- total: 0.53 KB/s 1.31 KB/s 1.84
- KB/s
如果控制台足够大,bwm-ng还能使用curses2输出模式,为流量绘制条形图。
- $ bwm-ng -o curses2
10. cbm:Color Bandwidth Meter
这是一款小巧简单的带宽监控工具,可以显示通过诸网络接口的流量大小。没有进一步的选项,仅仅实时显示和更新流量的统计信息。
11. speedometer
这是另一款小巧而简单的工具,仅仅绘制外观漂亮的图形,显示通过某个接口传输的入站流量和出站流量。
- $ speedometer -r eth0 -t eth0
12. pktstat
pktstat可以实时显示所有活动连接,并显示哪些数据通过这些活动连接传输的速度。它还可以显示连接类型,比如TCP连接或UDP连接;如果涉及HTTP连接,还会显示关于HTTP请求的详细信息。
- $ sudo pktstat -i eth0 -nt
13. netwatch
netwatch是netdiag工具库的一部分,它也可以显示本地主机与其他远程主机之间的连接,并显示哪些数据在每个连接上所传输的速度。
- $ sudo netwatch -e eth0 -nt
14. trafshow
与netwatch和pktstat一样,trafshow也可以报告当前活动连接、它们使用的协议以及每条连接上的数据传输速度。它能使用pcap类型过滤器,对连接进行过滤。
只监控TCP连接
- $ sudo trafshow -i eth0 tcp
15. netload
netload命令只显示关于当前流量负载的一份简短报告,并显示自程序启动以来所传输的总字节量。没有更多的功能特性。它是netdiag的一部分。
- $ netload eth0
16. ifstat
ifstat能够以批处理式模式显示网络带宽。输出采用的一种格式便于用户使用其他程序或实用工具来记入日志和分析。
- $ ifstat -t -i eth0 0.5
- Time eth0
- HH:MM:SS KB/s in KB/s out
- 09:59:21 2.62 2.80
- 09:59:22 2.10 1.78
- 09:59:22 2.67 1.84
- 09:59:23 2.06 1.98
- 09:59:23 1.73 1.79
安装ifstat:Ubuntu、Debian和Fedora用户在默认软件库里面就有它。CentOS用户则需要从Repoforge获得它,因为Epel里面没有它。
17. dstat
dstat是一款用途广泛的工具(用python语言编写),它可以监控系统的不同统计信息,并使用批处理模式来报告,或者将相关数据记入到CSV或类似的文件。这个例子显示了如何使用dstat来报告网络带宽。
- $ dstat -nt
- -net/total- ----system----
- recv send| time
- 0 0 |23-03 10:27:13
- 1738B 1810B|23-03 10:27:14
- 2937B 2610B|23-03 10:27:15
- 2319B 2232B|23-03 10:27:16
- 2738B 2508B|23-03 10:27:17
18. collectl
collectl以一种类似dstat的格式报告系统的统计信息;与dstat一样,它也收集关于系统不同资源(如处理器、内存和网络等)的统计信息。这里给出的一个简单例子显示了如何使用collectl来报告网络使用/带宽。
- $ collectl -sn -oT -i0.5
- waiting for 0.5 second sample...
- # <----------Network---------->
- #Time KBIn PktIn KBOut PktOut
- 10:32:01 40 58 43 66
- 10:32:01 27 58 3 32
- 10:32:02 3 28 9 44
- 10:32:02 5 42 96 96
- 10:32:03 5 48 3 28
结束语
上述几个使用方便的命令可以迅速检查Linux服务器上的网络带宽使用情况。不过,这些命令需要用户通过SSH登录到远程服务器。另外,基于Web的监控工具也可以用来实现同样的任务。
ntop和darkstat是面向Linux系统的其中两个基本的基于Web的网络监控工具。除此之外还有企业级监控工具,比如nagios,它们提供了一批功能特性,不仅仅可以监控服务器,还能监控整个基础设施。
原文链接:http://www.binarytides.com/linux-commands-monitor-network/
运用Ntop监控网络流量
____ 网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降、 网络性能降低。通过流量测量不仅能反映网络设备(如路由器、交换机等)的工作是否正常,而且能反映出整个网络运行的资源瓶颈,这样管理人员就可以根据网络 的运行状态及时采取故障补救措施和进行相关的业务部署来提高网络的性能。对网络进行流量监测分析,可以建立网络流量基准,通过连接会话数的跟踪、源/目的 地址对分析、TCP流的分析等,能够及时发现网络中的异常流量,进行实时告警,从而保障网络安全。本节将介绍的Ntop便可以提供详细的网络流量明细表。 在Ossim系统中集成了Ntop可以直接使用。
1.Ntop简介
____ Ntop是一种监控网络流量的工具,用NTOP显示网络的使用情况比其他一些网管软件更加直观、详细。NTOP甚至可以列出每个节点计算机的网络带宽利用率。
2.Ntop主要功能
Ntop主要提供以下一些功能:
①.自动从网络中识别有用的信息;
②.将截获的数据包转换成易于识别的格式;
③.对网络环境中通信失败的情况进行分析;
④.探测网络环境中的通信瓶颈,记录网络通信的时间和过程。
____ Ntop可以通过分析网络流量来确定网络上存在的各种问题;也可以用来判断是否有黑客正在攻击网络系统;还可以很方便地显示出特定的网络协议、占用大量带宽的主机、各次通信的目标主机、数据包的发送时间、传递数据包的延时等详细信息。
3. Ntop支持的协议
____ Ntop比MRTG更容易安装,如果用手机话费来比喻流量,MRTG便如同提供总费用的电话账单,而Ntop则是列出每一笔费用的明细一样。目前市场上可 网管型的交换机、路由器都支持SNMP协议,Ntop支持简单网络管理协议,所以可以进行网络流量监控。Ntop几乎可以监测网络上的所有协 议: TCP/UDP/ICMP、(R)ARP、IPX、Telnet、DLC、Decnet、DHCP-BOOTP、AppleTalk、 Netbios、TCP/UDP、FTP、HTTP、DNS、Telnet、SMTP/POP/IMAP、SNMP、NNTP、NFS、X11、SSH和 基于P2P技术的协议eDonkey。
4.Ntop支持插件
①.ICMPWATCH:
____ 用于端口检测很多人都已经知道了可以借助NETSTAT -AN来查看当前的连接与开放的端口,但NETSTAT并不万能,比如Win2000遭到OOB 攻击的时候,不等NETSTAT就已经死机了。为此,出现了一种特殊的小工具——端口监听程序。端口监听并不是一项复杂的技术,但却能解决一些局部问题。
②.NetFlow:
____ 近年来,很多服务提供商一直使用NetFlow。因为NetFlow在大型广域网环境里具有伸缩能力,可以帮助支持对等点上的最佳传输流,同时可以用来进行建立在单项服务基础之上的基础设施最优化评估,解决服务和安全问题方面所表现出来的价值,为服务计费提供基础。
③.rrdPlugin:
____ 用于生成流量图。RRD的作者,也是MRTG的作者,RRD可以简单的说是MRTG的升级版,它比MRTG更灵活,更适合用shell、perl等程序来调用,成生所要的图片。
④.sFlow:
____ sFlow(RFC 3176)是基于标准的最新网络协议,能够解决当前网络管理人员面临的很多问题。sFlow已经成为一项线速运行的“永远在线”技 术,可以将sFlow技术嵌入到网络路由器和交换机 ASIC芯片中。与使用镜像端口、探针和旁路监测技术的传统网络监视解决方案相比,sFlow能够明 显地降低实施费用,同时可以使面向每一个端口的全企业网络监视解决方案成为可能。与数据包采样技术(如RMON)不同,sFlow是一种导出格式,它增加 了关于被监视数据包的更多信息,并使用嵌入到网络设备中的sFlow代理转发被采样数据包,因此在功能和性能上都超越了当前使用的RMON、 RMON II和NetFlow技术。sFlow技术独特之处在于它能够在整个网络中,以连续实时的方式监视每一个端口,但不需要镜像监视端口,对整个网 络性能的影响也非常小。
____ 另外,Ntop还允许用户安装插件用,以提供对于特定协议下具体统计数据的报告,如NFS和NetBIOS插件。当然,Ntop也可以生成运行它的主机的统计数据,列出开放套接字、接收和发送的数据以及每个过程的相关主机对。
二、 Ntop系统的部署
对于共享网络,只须将连接到共享网络中的流量采集点的网络接口置为混杂工作模式,就可实现采集网络流量数据的功能。与交换网络相比,网络发生拥塞 时,集线器网络的可靠性很低,SNMP问询命令和回应数据包可能发生延迟或丢失,这时候Ntop检测数据也就不准确了,对于交换网络的情况,需要交换设备 的支持(如具有SPAN端口的交换机)。流量采集主机连接到交换设备的一个端口后,通过交换机的SPAN至 (Switched PortAnalyzer)端口把要分析的所有流量镜像到该采集点上。SPAN在使用中非常灵活,可以监视交换机的单个端口,也可以 监视多个端口,还可以对VLAN进行监视。这就使流量异常监测系统具有了很大的灵活性。在一些流量比较大的企业,我们一般选用两个网卡,一块网卡作为 Ntop专用嗅探网卡,连到核心交换机的镜像端口,另一块配上IP地址并开放相应端口(默认是3000,也可以修改),连接交换机的作用是用来登录Web 界面进行管理,Ntop的部署如图1所示。
图1 Ntop的安装位置
____ Ntop没有自己的捕包工具,它需要一个外部的捕包程序库:libpcap。Ntop利用libpcap独立地从物理链路上进行捕包,它可以借助 libpcap的平台成为一个真正的与平台无关的应用程序。它直接从网卡捕包的任务由libpcap承担,所以我们必须确保Linux系统下正确安装了 libpcap。
三.Ntop安装配置
____ Ntop工作时需要使用zlib、gd、libpcap及libpng的函数,安装前须检查服务器中是否已经含有下列的软件:zlib(zlib-1.1.3-xx以上)、gd(gd-1.3.xx以上)、libpng。可以使用RPM来确认:
rpm -qa | grep libpcap
rpm -qa | grep zlib
rpm -qa | grep gd
rpm -qa | grep libpng
如果发现缺少任何一个就需要自行安装,举例如下。
1.安装libpcap
# tar zxvf libpcap-0.9.8.tar.gz
# cd libpcap-0.9.8
#./configure
# make&&make install
2.安装RRDtool
____ RRDtool是指Round Robin Database 工具(环状数据库)。Round Robin是一种处理定量数据以及当前元素指针的技术。 想象一个周边标有点的圆环,这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头,这就是指针。一个圆环上没有起点和终点,可以一直存储下去。经 过一段时间后,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。
#tar -zxvf rrdtool-1.3.1.tar.gz
#export PKG_CONFIG_PATH=/usr/lib/pkgconfig/
#./configure
#make
#make install
3.安装Ntop
下载ntop安装包: http://www.nmon.net/packages/rpm/x86_64/ntop/
#rpm -ivh ntop-3.3.10-.x86.rpm
#yum install ntop \\CentOS系统
#apt-get install ntop \\Debian 系统
____ 注意:在Ossim 系统中已经为我们安装好Ntop软件,可以直接使用。如果您选择单独安装可以继续参考以下内容。另外如果您使用Red Hat Linux 、Fedora或CentOS请首先关闭 SELinux功能。
4.建立Ntop用户并配置权限
#useradd ntop
5.建立Ntop存放数据的目录
#mkdir -p /var/ntop
#chown -R ntop.ntop /var/ntop
6.复制ntop.conf配置文件
#cp /ntop-3.3.10/ntop.conf.sample /etc/ntop.conf
7.设置管理密码
在执行ntop之前必须先建立管理员密码,长度至少5位。使用参数-A建立管理员密码
#ntop -A
8. Ntop的管理员密码重置方法
Ntop的用户密码文件是经过加密存储在ntop_pw.db文件中,Ntop用户密码存储位置:
64位版本:/var/lib/ntop_db_64/ntop_pw.db
64位版本需先删除其密码文件ntop_pw.db,然后用notp -A 重置管理员密码后,最后重启ntop服务就能生效。
#/etc/init.d/ntop restart
另外,注意一个细节,ntop的访问日志位置在/var/log/ntop/目录下,它的pcap log在/var/lib/ntop目录下。
四、应用Ntop
1.启动Ntop
#/usr/local/bin/ntop -i eth0 -d -L -u ntop -P /var/ntop --use-syslog=daemon
命令行中各项简要介绍如下。
l -i "eth0":指定监听网卡。
l -d:后台执行。
l -L:输出日志写入系统日志(/var/log/messages)。
l -u ntop:指定使用Ntop身份执行。
l -P /var/ntop:指定Ntop数据库的文件位置。
l -use-syslog=daemon:使用系统日志进程。
l -w:使用其他端口,指定ntop使用其他端口,例如执行ntop –w 1900以后,便可以使用 http://ip:1900 来连接ntop
2.利用Web浏览器查看Ntop状况
Ntop的通讯端口为3000,所以在浏览器使用IP:3000进入ntop便可看到ntop欢迎界面
,如图2所示。
图2 查看Ntop状况
3.查看整体流量
____ 对于网络整体流量的统计,分别是Protocol Traffic Counters、IP Traffic Counters、 TCP/UDP Connections Stats、Active TCP Connections List、Peers List。按照不同的 Packet,将流量数据存放到不同的Counter中。对网络整体流量进行分类统计,包括下列情形。
流量分布情形:区分为本网络主机之间、本网络与外部网络之间、外部网络与本网络之间的网络流量统计。
数据包分布情形:依据数据包大小、广播形态及IP与非IP等加以分类及统计。
协议使用及分布情形:本网络各主机传送与接收数据所使用的通信协议种类与数据传输量。
通过Summary→Traffic查看整体流量(如图3所示),网络流量会以清晰的表格形式显示,如图3所示。
图3 查看整体流量
____ 在图3中,Summary内容为目前玩过的整体概况,包括流量,主机网络负载等。All Protocols选项可以查看各主机占用的带宽和各时段使用的 流量明细。IP显示网络主机的流量状况和排名;Utils可以显示ntop记录的网络状况、流量统计并可以将数据存储为txt,xml等格 式;Plugins包含了ntop所支持的插件类型;Admin选项可以对ntop进行配置,例如我们可以配置Pcap Log的路径,这对于解决 Ntop数据占用磁盘空间问题很有帮助,默认路径为/usr/local/ntop/var/ntop目录下。另外为了节约磁盘空间可以降低 Max Hashes和Max Sessions的值。此外还可以进行ntop重启停止等操作。另外,如果ntop启动失败,你可以到/var/log /messages中寻找错误日志。如果你需要设置开机自动启动还可以到/etc/rc.d/rc.local文件最后加入启动ntop的命令。如果你想 修改ntop外观可以编辑ntop的HTML文档、或CSS式样文件,这些内容在/usr/share/ntop/html目录下。
图4 以表格形式显示网络流量
4.查看通信数据包(协议)比例
____ 数据包对于网络管理的网络安全而言具有至关重要的意义,如防火墙的作用就是检测网络中的数据包,判断其是否违反了预先设置的规则,如果违反就加以阻止。 Linux网络中最常见的数据包是TCP和UDP。如果想了解一个计算机传输了哪些数据,可以双击计算机名称即可分析出用户各种网络传输的协议类型和占用 带宽的比例,如图5所示。
图5查看协议类型和占用比例
5.与Google Map整合:Ntop中标注IP所在国家的位置
____ 选取Summary→Hosts World Map Ntop命令,与Google Earth(谷歌地球)进行技术整合,能将收集到的信息实时地在谷 歌地球上显示出来。首先要有Gmail账号,然后到http://code.google.com/apis/maps/signup.html上申请 Google Maps API的密钥,成功后如图6所示。
图6注册使用Google Maps API
____ 接下来复制密钥,选择Admin→Configure→Preferences,这时会提示输入用户名、密码,如图7所示。
图7 定位到Admin→Configure→Preferences
____ 在如图8所示的界面中找到 google_maps.key 选项,并把密钥填写进去。注意,调整参数需要输入用户和密码,如果忘记了Ntop密码,可以通过root输入“/usr/sbin/ntop –A”来修改用户admin的密码。
图8 填写密钥
保存退出后,在Chrome 浏览器中再次选择Hosts World Map,配置完成。
注意:由于Google Maps的限制,不能跟踪所有IP地址。如果在设置时出现“ Please enable make sure that the ntop html/ directory is properly installed ”提示错误,多半是权限问题,可采用以下方法解决:
#chown -R ntop:ntop /var/lib/ntop/
#chown -R ntop:ntop /usr/share/ntop/
# ln -s /usr/share/ntop/html /var/lib/ntop/
# /etc/init.d/ntop restart
6.数据转储功能
____ Ntop还支持把流量转储成其他格式(如文本文件、Perl、PHP、Python),以便其他外部程序可以对数据进行深加工。可以选择Utils→Data Dump命令,如图9所示。
图9定位到Utils→Data Dump
如我们选择报告主机类型,格式为PHP。则转储数据如下:
'1.1.1.12' => array(
'hostResolvedName' => '1.1.1.12',
'pktSent' => 12628,
'pktRcvd' => 32668,
'ipv4BytesSent' => 1818480,
'ipv4BytesRcvd' => 30936426,
'bytesMulticastSent' => 0,
'pktMulticastSent' => 0,
'bytesMulticastRcvd' => 0,
'pktMulticastRcvd' => 0,
'bytesSent' => 1818480,
'bytesRcvd' => 30936426,
'ipv4BytesSent' => 1818480,
'ipv4BytesRcvd' => 30936426,
'ipv6BytesSent' => 0,
'ipv6BytesRcvd' => 0,
'tcpBytesSent' => 1813788,
'tcpBytesRcvd' => 30936426,
'udpBytesSent' => 4692,
'udpBytesRcvd' => 0,
'icmpSent' => 0,
'icmpRcvd' => 0,
),
7.查看网络流量图(Local Network Traffic Map)
____ 首先,在Admin→Configure→Preference中,配置dot.path的参数为 /usr/bin/dot,然后选择 IP→Local→Network Traffic Map,就可以看到一张反应各个主机流量流向的拓扑图,箭头方向代表数据的流向,鼠标点击相应的IP 地址就能看到非常详细的IP统计信息。图10是Ntop根据网络流量情况自动生成的拓扑图。
图10Ntop检测数据流向图
8.查看主机流量
____ 管理人员在查看了网络整体流量信息后,还希望能深入分析网络中的主机流量情况,从而进行流量限制等方面的管理工作,可以选择IP→Summary→Traffic,如图11所示。
图11 查看主机流量
查看传输层的会话,能明显看出接收和发送了多少数据包,如图12所示。
图12 查看传输层的会话
9.启用插件,Ntop还提供了5个插件,如图13所示。
图13 Ntop提供的插件
(1)ICMPWatch:用于端口检测,很多人都已经知道了可以借助“netstat –an”来查看当前的连接与开放的端口,但 netstat并不是万能的,在遭到OOB攻击时,不等使用netstat命令,机器就已经死机了。为此,出现了一种特殊的小工具——端口监听程序。端口 监听并不是一项复杂的技术,但却能解决一些局部问题。
____ 图中的图标 表示这是一台Linux主机,图标 表示是Windows主机, 表示邮件服务器, 表示是Web服务器。当我们需要查看所有服务器发送流量的大小排序的,只要单击Byte下方的Sent即可,若单击Host下方的某一台主机,还能详细显 示当前主机的IP、主机名、MAC、每小时发送/接收数据包的大小、协议分布类型统计等信息,如图14所示,非常详细。
图14
(2)NetFlow:近年来,很多服务提供商一直使用NetFlow。因为NetFlow在大型广域网环境里具有伸缩能力,可以帮助支持对等点 上的最佳传输流,同时可以用来建立在单项服务基础之上的基础设施最优化评估,解决服务和安全问题方面所表现出来的价值,为服务计费提供基础。 NetFlow是一种数据交换方式,其工作原理是:NetFlow利用标准的交换模式处理数据流的第一个IP包数据,生成NetFlow 缓存,随后同样 的数据基于缓存信息在同一个数据流中进行传输,不再匹配相关的访问控制等策略,NetFlow缓存同时包含了随后数据流的统计信息。
____ 下面我们分两步走,首先在路由器上配置一个NetFlow转发流量,然后在Ntop上增加一个NetFlow接收流量。启用NetFlow,定位到 Plugins→NetFlow→Activate,然后添加设备,在NetFlow Device Configuration中选择 Add NetFlow Device选项,如图15所示,设置端口可以自己定义,只要不与现有的冲突就可以,接口地址填写打算监控的网段地址。
图15NetFlow的配置
图 16 网络接口选择
____ 接着,我们需要在路由器上做设置,NetFlow早期都是在路由器上实现的,但是现在一些高端的交换机支持NetFlow,比如Cisco6500系列。
首先需要全局配置,启用NetFlow:
ip flow-export version 5
ip flow-sampling-mode packet-interval 100
在需要监控的Interface,启用NetFlow:
Interface FastEthernet 9/0/1
ip address 192.168.150.20 255.255.255.0
ip route-cache flow sampled
show ip cache fow //查看NetFlow统计信息
show ip flow export //查看NetFlow输出信息
____ 不是所有的NetFlow源设备都支持基于Interface的NetFlow,比如Cisco4500就不支持。也就是说它不能在某个 Interface配置打开NetFlow,要么所有端口启用,要么都不启用,重要的是无法区分不同Interface上的流量情况,只能看到整个设备所 有的流量情况。
在实践中配置NetFlow需要注意以下两点:
(1)根据NetFlow流的单向性,部署NetFlow时应根据网络拓扑尽量在边界的两个端设备上配置协议。
(2)对于Catalyst 6000三层交换设备,通过Supervisor Engine 1和MultilayerSwitch Feature Card CMSFC支持多层交换(MLS)来实现快速交换。
____ 然后,是Ntop的设置环节,这很重要,各个参数不能设置错误。首先是NetFlow的设备名称,可以随便填写一个。接下来是使用的端口,这里一定要填写 路由器上NetFlow的应用端口,例如3217。同时还要针对NetFlow监控的地址网段做设置,例如笔者的是 192.168.150.0/255.255.255.0。如图10.24所示,每项参数修改设置完毕后直接单击右边的按钮生效,完成后定位到菜单中的 Admin→switch NIC命令,找到我们添加的这个NetFlow设备点Switch Nic按钮让其生效,生效后我们就可以方便查看流量了,如 图17所示。
图17 查看流量
(3)rrdPlugin:用于生成流量图。RRD可以简单的说是MRTG的升级版,它比MRTG更灵活,更适合用Shell、Perl等程序来调用,生成所要的图片。
(4)sFlow:sFlow(RFC 3176)是基于标准的最新网络导出协议,能够解决当前网络管理人员面临的很多问题。sFlow已经成为 一项线速运行的“永远在线”技术,可以将sFlow技术嵌入到网络路由器和交换机ASIC芯片中。与使用镜像端口、探针和旁路监测技术的传统网络监视解决 方案相比,sFlow能够明显地降低实施费用,同时可以使面向每一个端口的全企业网络监视解决方案成为可能。与数据包采样技术(如RMON)不 同,sFlow是一种导出格式,它增加了关于被监视数据包的更多信息,并使用嵌入到网络设备中的sFlow代理转发被采样数据包,因此在功能和性能上都超 越了当前使用的RMON、RMON II和NetFlow技术。sFlow技术的独特之处在于它能够在整个网络中,以连续实时的方式监视每一个端口,但不 需要镜像监视端口,对整个网络性能的影响也非常小。
(5)手机插件:这个功能很有意思,我们可以用智能手机,随时随地监控我们的网络,如图18所示。
图18 手机插件
插件使用高清演示 : http://www.tudou.com/programs/view/Jvq8HOBDOuI/
Ntop在病毒查杀方面的应用
____ 某客户感染病毒案例:某天上班时间,网络性能突然下降,导致不少用户无法上网传输文件。首先怀疑是设备故障,后来又查找了线路是否有问题,但都能ping 通从而一一排除,随后在Ntop检测的“IP协议”菜单中发现网络负荷维持在95%以上。在“Network Traffic:Data Sent”图表 中显示局域网中一台机器发送大量的数据包,这台机器的IP地址和MAC也能找到。基本能断定这台机器中了病毒在发送大量的UDP包,从而造成了广播风暴, 导致网络性能急速下降,如图19所示,是Ntop捕捉到的随机发送的地址列表。找到故障节点后,随后根据MAC-IP-墙点的对应,及时将这台机器隔离出 网络进行杀毒处理。
图19 病毒随机发送数据包列表
____ 除此之外,Ntop另一个重要功能是探测DDoS类型攻击,主要是它可以通过分析网路流量来确定网路上存在的各种问题,也可以用来判断是否有骇客正在攻击 网路系统,还可以很方便地显示出特定的网路协议、佔用大量频宽的 主机、各次通信的目标主机、资料包的发送时间、传递资料包的延时等详细讯息。
___ 上面介绍了一些ntop工具的特点,不过还有很多由于篇幅限制没有给大家介绍,要知道Ntop这个工具只是Ossim平台的一个很小的模块,Ossim系 统中集成的ntop可以将netflow数据存入mysql数据库,并可以再下次系统启动后继续从数据库中读取,不会影响新生成的数据分析图。要了解 Ossim是什么,请参考我的其他有关博文或视频。