nload等一些工具可以读取"proc/net/dev"文件,以获得流量统计信息;而一些工具使用pcap库来捕获所有数据包,然后计算总数据量,从而估计流量负载。
下面是按功能划分的命令名称。
监控总体带宽使用――nload、bmon、slurm、bwm-ng、cbm、speedometer和netload
监控总体带宽使用(批量式输出)――vnstat、ifstat、dstat和collectl
每个套接字连接的带宽使用――iftop、iptraf、tcptrack、pktstat、netwatch和trafshow
每个进程的带宽使用――nethogs
nload是一个命令行工具,让用户可以分开来监控入站流量和出站流量。它还可以绘制图表以显示入站流量和出站流量,视图比例可以调整。用起来很简单,不支持许多选项。
所以,如果你只需要快速查看总带宽使用情况,无需每个进程的详细情况,那么nload用起来很方便。
安装nload:Fedora和Ubuntu在默认软件库里面就有nload。CentOS用户则需要从Epel软件库获得nload。
- 监控网卡流量的命令
- 没有nload命令需要安装俩个包 yum install epel-release yum install nload
```
[root@aminglinux-01 ~]# nload
-bash: nload: 未找到命令
[root@aminglinux-01 ~]# yum -y install epel-release
更新完毕:
epel-release.noarch 0:7-10
完毕!
[root@aminglinux-01 ~]# yum -y install nload
已安装:
nload.x86_64 0:0.7.4-4.el7
完毕!
[root@aminglinux-01 ~]#
-安装完成后直接运行nload
[root@aminglinux-01 ~]# nload
Device ens33 [192.168.202.130] (1/2):
=============================================================================================
Incoming:
Curr: 944.00 Bit/s
Avg: 1.02 kBit/s
Min: 944.00 Bit/s
Max: 1.84 kBit/s
Ttl: 6.69 MByte
Outgoing:
Curr: 8.07 kBit/s
Avg: 7.63 kBit/s
Min: 4.25 kBit/s
Max: 8.07 kBit/s
Ttl: 2.80 MByte
-按方向键 右键 查看第二个网卡 可以来回切换 左右
Device lo [127.0.0.1] (2/2):
=============================================================================================
Incoming:
Curr: 0.00 Bit/s
Avg: 0.00 Bit/s
Min: 0.00 Bit/s
Max: 0.00 Bit/s
Ttl: 5.39 kByte
Outgoing:
Curr: 0.00 Bit/s
Avg: 0.00 Bit/s
Min: 0.00 Bit/s
Max: 0.00 Bit/s
Ttl: 5.39 kByte
- 通常情况下我们买的带宽 指的是出去的带宽 Outgoing ,
- Inconming 进来的流量,如果有攻击 进来的流量就很大
---
- 补充下 关于sa 命令
-在/var/log/sa 目录下有一个sa31 文件
- sar31 是可以查看的 可以cat的 需要明天才能生成这个文件
- sa31 是一个二进制文件,只能用sar 命令 -f 去加载它查看它,
- sar17 可以使用cat文件去查看
[root@aminglinux-01 ~]# ls /var/log/sa
sa31
[root@aminglinux-01 ~]# ls /var/log/sa/sar31
nload是个很好用的一个工具,功能也很强.只是相对单一,只能查看总的流量,不能像iptraf那样,可针对IP,协议等
可以实时地监控网卡的流量,分Incoming,Outgoing两部分,也就是流入与流出的流量
同时统计当前,平均,最小,最大,总流量的值,使人看了一目了然。
可以官网下载最新版: http://www.roland-riegel.de/nload/index.html
安装
wget http://www.roland-riegel.de/nload/nload-0.7.2.tar.gz
tar zxvf nload-0.7.2.tar.gz
cd nload-0.7.2
./configure;make;make install
使用
直接用nload回车即可,也可以指定网卡,如nload eth1
还可以指定是以K或M来显示流量,如nload -u M显示的流量是以MB为单位
nload -m 如下显示
Device eth0 [172.30.0.3] (1/3):
=============================================================================================================================================================================================================================================
Incoming: Outgoing:
Curr: 472.00 Bit/s Curr: 0.00 Bit/s
Avg: 472.00 Bit/s Avg: 0.00 Bit/s
Min: 472.00 Bit/s Min: 0.00 Bit/s
Max: 952.00 Bit/s Max: 0.00 Bit/s
Ttl: 439.47 MByte Ttl: 156.50 MByte
Device eth1 [2.3.6.5] (2/3):
=============================================================================================================================================================================================================================================
Incoming: Outgoing:
Curr: 22.37 kBit/s Curr: 19.43 kBit/s
Avg: 22.37 kBit/s Avg: 19.43 kBit/s
Min: 19.32 kBit/s Min: 3.79 kBit/s
Max: 22.37 kBit/s Max: 19.43 kBit/s
Ttl: 28.58 GByte Ttl: 1.15 GByte
Device lo [127.0.0.1] (3/3):
=============================================================================================================================================================================================================================================
Incoming: Outgoing:
Curr: 0.00 Bit/s Curr: 0.00 Bit/s
Avg: 0.00 Bit/s Avg: 0.00 Bit/s
Min: 0.00 Bit/s Min: 0.00 Bit/s
Max: 0.00 Bit/s Max: 0.00 Bit/s
Ttl: 97.20 kByte Ttl: 97.20 kByte
iftop可测量通过每一个套接字连接传输的数据;它采用的工作方式有别于nload。iftop使用pcap库来捕获进出网络适配器的数据包,然后汇总数据包大小和数量,搞清楚总的带宽使用情况。
虽然iftop报告每个连接所使用的带宽,但它无法报告参与某个套按字连接的进程名称/编号(ID)。不过由于基于pcap库,iftop能够过滤流量,并报告由过滤器指定的所选定主机连接的带宽使用情况。
CentOS上安装所需依赖包:
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
Debian/Ubuntu系统为“apt-get install iftop”
常用参数说明:
-i设定监测的网卡,如:# iftop -i eth1,其中eth1是服务器的公网网卡,(网卡名称可以通过ifconfig查看),结果如下图一、二:
-B 以Byte为单位显示流量(默认是bits),
如:
# iftop -B -F显示特定网段的进出流量,
如
# iftop -F 182.92.***.0/24或
# iftop -F 182.92.***.0/255.255.255.0
如:
iftop -i eth1 -B -F 182.92.***.20
显示182.92.***.20这个IP与服务器的网卡eth1交互的数据量,单位是Byte。
界面说明:
"<="与"=>",表示的是流量的方向
"TX":从网卡发出的流量 "RX":网卡接收流量 "TOTAL":网卡发送接收总流量
"cum":iftop开始运行到当前时间点的总流量 "peak":网卡流量峰值 "rates":分别表示最近2s、10s、40s 的平均流量
可以通过键盘的"q"键退出iftop
常用的参数
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n使host信息默认直接都显示IP,如:# iftop -n
-N使端口信息默认直接都显示端口号,如: # iftop -N
-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b使流量图形条默认就显示;
-f这个暂时还不太会用,过滤计算包用的;
-P使host信息及端口信息默认就都显示;
-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M
进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或IP排序;
按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
按q退出监控。
iftop -n -n选项可以防止iftop将IP地址解析成主机名,解析本身就会带来额外的网络流量
安装iftop:Ubuntu/Debian/Fedora用户可以从默认软件库获得它。CentOS用户可以从Epel获得它。
(1) yum -y install epel-release
(2) yum -y install iftop
(1)源码编译安装iftop
安装iftop必需的软件库:
[root@localhost ~]#yum install libpcap libpcap-devel ncurses ncurses-devel
[root@localhost ~]#yum install flex byacc
下载iftop,编译安装:
[root@localhost ~]#wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
[root@localhost ~]#tar zxvf iftop-0.17.tar.gz
[root@localhost ~]#cd iftop-0.17
[root@localhost ~]#./configure
[root@localhost ~]#make
[root@localhost ~]#make install
(2)yum方式安装
安装iftop必需的软件库:
[root@localhost ~]#yum install libpcap libpcap-devel ncurses ncurses-devel
[root@localhost ~]#yum install flex byacc
[root@localhost ~]#wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
[root@localhost ~]#rpm -ivh epel-release-6-8.noarch.rpm
[root@localhost ~]#yum install iftop
这样,iftop就安装完成了
执行“iftop -P -i em1”命令,得到如下图所示的iftop的一个典型输出界面。
iftop的输出从整体上可以分为三大部分:
第一部分。是iftop输出中最上面的一行,此行信息是流量刻度,用于显示网卡带宽流量。
第二部分。是iftop输出中最大的一个部分,此部分又分为左、中、右三列,左列和中列记录了哪些IP或主机正在和本机的网络进行连接。
其中,中列的“=>”代表发送数据,“<=”代表接收数据,通过这个指示箭头可以很清晰地知道两个IP之间的通信情况。
最右列又分为三小列,这些实时参数分别表示外部IP连接到本机2秒内、10秒内和40秒内的平均流量值。
另外,这个部分还有一个流量图形条,流量图形条是对流量大小的动态展示,以第一部分中的流量刻度为基准。通过这个流量图形条可以很方便地看出哪个IP的流量最大,进而迅速定位网络中可能出现的流量问题。
第三部分位于iftop输出的最下面,可以分为三行,其中,“TX”表示发送数据,“RX”表示接收数据,“TOTAL”表示发送和接收全部流量。
与这三行对应的有三列,其中“cum”列表示从运行iftop到目前的发送、接收和总数据流量。“peak”列表示发送、接收以及总的流量峰值。“rates”列表示过去2s、10s、40s的平均流量值。
(2) iftop使用参数说明
iftop还有很多附加参数和功能。执行“iftop -h”即可显示iftop可使用的所有参数信息。iftop常用的参数以及含义如下表所示。
参数含义 示例
-i指定需要监测的网卡iftop –i em1
-n将输出的主机信息都通过IP显示,不进行DNS反向解析iftop -n
-B将输出以bytes为单位显示网卡流量,默认是bitsiftop –B
-p以混杂模式运行iftop,此时iftop可以作为网络嗅探器使用iftop –p
-N只显示连接端口号,不显示端口对应的服务名称iftop –N
-P显示主机以及端口信息,这个参数非常有用iftop –P
-F显示特定网段的网卡进出流量iftop –F 192.168.12.0/24
-m设置iftop输出界面中最上面的流量刻度最大值,流量刻度分五个大段显示iftop –m
(3)iftop的交互操作
在iftop的实时监控界面中,还可以对输出结果进行交互式操作,用于对输出信息进行整理和过滤,在上图所示界面中,按键“h”即可进入交互选项界面,如下图所示。
iftop的交互功能和Linux下的top命令非常类似,交互参数主要分为4个部分,分别是一般参数、主机显示参数、端口显示参数和输出排序参数。相关参数的含义如下表所示。
参数 含义
P通过此键可切换暂停/继续显示
h通过此键可在交互参数界面/状态输出界面之间来回切换
b通过此键可切换是否显示平均流量图形条
B通过此键可切换显示2秒、10秒、40秒内的平均流量
T通过此键可切换是否显示每个连接的总流量
j/k按j键或k键可以向上或向下滚动屏幕显示当前的连接信息
l通过此键可打开iftop输出过滤功能,比如输入要显示的IP,按回车后,屏幕就只显示与这个IP相关的流量信息
L通过此键可切换显示流量刻度范围,刻度不同,流量图形条会跟着变化
q通过此键可退出iftop流量监控界面
n通过此键可使iftop输出结果以IP或主机名的方式显示
s通过此键可切换是否显示源主机信息
d通过此键可切换是否显示远端目标主机信息
t通过此键可切换iftop显示格式,连续按此键可依次显示:以两行方式显示发送接收流量、以一行方式显示发送接收流量、只显示发送流量/只显示接收流量
N通过此键可切换显示端口号/端口号对应服务名称
S通过此键可切换是否显示本地源主机的端口信息
D通过此键可切换是否显示远端目标主机的端口信息
p通过此键可切换是否显示端口信息
<通过此键可根据左边的本地主机名或IP地址进行排序
>通过此键可根据远端目标主机的主机名或IP地址进行排序
o通过此键可切换是否固定显示当前的连接
iftop的强大之处在于它能够实时显示网络的流量状态,监控网卡流量的来源IP和目标地址,这对于检测服务器网络故障、流量异常是非常有用的,只需通过一个命令就能把流量异常或网络故障的原因迅速定位,因此对于运维人员来说,iftop命令是必不可少的一个网络故障排查工具。
iptraf是一款交互式、色彩鲜艳的IP局域网监控工具。它可以显示每个连接以及主机之间传输的数据量。下面是屏幕截图。
yum -y install iptraf
tar zxf iptraf-2.7.0.tar.gz
# cd iptraf-2.7.0
# ./Setup
至此,安装完毕
安装程序会将执行程序安装到 /usr/local/bin 目录下,并创 /var/local/iptraf 目录放置iptraf的配置文件,同时创建 /var/log/iptraf 目录放置iptraf产生的日志文件 .
运行iptraf
确认环境变量的PATH变量包含路径 /usr/local/bin
# iptraf
运行iptraf后会产生一个字符界面的菜单,点击 x 可以退出 iptraf,
各菜单说明如下:
1、菜单Configure...
在这里可以对 iptraf 进行配置,所有的修改都将保存在文件:/var/local/iptraf/iptraf.cfg 中
--- Reverse DNS Lookups 选项,对IP地址反查 DNS名,默认是关闭的
--- TCP/UDP Service Names 选项,使用服务器代替端口号,例如用www 代替80,默认是关闭的
--- Force promiscuous 混杂模式,此时网卡将接受所有到达的数据,不管是不是发给自己的。
--- Color 终端显示彩色,当然用telnet ,ssh连接除外,也就是用不支持颜色的终端连接肯定还是没有颜色。
--- Logging 同时产生日志文件,在/var/log/iptraf 目录下
--- Activity mode 可以选择统计单位是kbit/sec 还是 kbyte/sec
--- Source MAC addrs in traffic monitor 选择后,会显示数据包的源MAC地址
2、菜单Filters...
在这里可以设置过滤规则,这是最有用的选项了,当你从远端连入监控机时,自己的机器与监控机会产生源源不断的tcp数据包,有时很令人讨厌,此时你就可以将自己的ip地址排除在外。
它包括六个选项,分别是:Tcp、Udp、Other IP、ARP、RARP、Non-ip。我们以TCP为例说明,其他选项的配置都很相似。
--- Defining a New Filter
选择Defining a New Filter后,会出来一对话框,要求填入对所建的当前规则的描述名,然后回车确定,Ctrl+x取消
再接着出现的对话框里,Host name/IP address:的First里面填源地址,Second里填目标地址,Wildcard mask 的两个框里面分别是源地址和目标地址所对应的掩码,注意,这里的地址即可以是单个地址,也可以是一个网段,如果是单个IP,则相应的子网掩码要填成 255.255.255.255,如果是一个网段,则填写相应的子网掩码:例如,想表示192.168.0.0,有256个IP地址的网段,则填写 192.168.0.0,子网是:255.255.255.0,其他类推,All则用0.0.0.0,子网也是0.0.0.0表示。
Port:栏要求填入要过滤的端口号,0表示任意端口号
Include/Exclude栏要求填入I或者E,I表示包括,E表示排除
填写完毕,回车确认,Ctrl+x取消
--- Applying a Filter
我们在上一步定义的一个或多个过滤规则会存储为一个过滤列表,在没有应用之前并不起作用,我们可以在这里选择我们应用那些过滤规则。所有应用的规则会一直起作用,即使重新启动iptraf。我们可以执行Detaching a Filter来取消执行当前所有应用的规则。
--- Editing a Defined Filter 编辑一个已经存在的规则
--- Deleting a Defined Filter 删除一个已经定义的规则
--- Detaching a Filter 取消执行当前所有应用的规则
3、菜单IP Traffic Monitor
IP数据包流量实时监控窗口,注意这里会监控所有的来往数据包,包括自己的,所以,如果你使用远程终端连接上来的话,你和监控机将会源源不断的产生数据流,因此建议在Filters...菜单中将自己的IP过滤掉,是它不产生影响。在这里可以实时的看到每一个连接的流量状态,它有两个窗口,上面的是TCP的连接状态,下面的窗口可以看到UDP、ICMP、OSPF、IGRP、IGP、IGMP、GRE、ARP、RARP的数据包。可以点击s键选择排序,可以按照包的数量排序,也可按照字节的大小排序,如果因为它是实时变化的而导致看不太清楚的话,可以在Configure菜单中把Logging功能打开,它就会在/var/log/iptraf 目录中记录日志,以方便你在日后查看,当Logging功能打开后,当你开始监控IP Traffic时,程序会提示你输入Log文件的文件名,默认的是ip_traffic-1.log。
在一个比较繁忙的网络里,显示的结果可能很乱,以至于你很难找到自己感兴趣的数据,这时可以使用Filters菜单,来过滤显示的数据。
4、菜单General Interface Statistics
这里显示每个网络设备出去和进入的数据流量统计信息,包括总计、IP包、非IP包、Bad IP包、还有每秒的流速,单位是kbit/sec或者是kbyte/sec ,这由Configure菜单的Activity选项决定。
如果设置了Filter选项,这里也受到影响
5、菜单Detailed Interface Statistics
这里包括了每个网络设备的详细的统计信息,很简单,不再赘述。
6、Statistical Breakdowns
这里提供更详细的统计信息,可以按包的大小分类,分别统计;也可以按Tcp/Udp的服务来分类统计,也不再赘述。
7、LAN Station Statistics
提供对每个网络地址通过本机的数据的统计信息。
*******************************************
iptraf
就可以启动IPTraf。首先你将看到版权声明,按任意键后就进入了主菜单。注意:使用iptraf需要root权限。IPTraf需要引用/usr/share/terminfo目录中的终端信息数据库,因此如果这个目录位于其它的位置,IPTraf将输出"Error opening terminal"错误信息之后,启动失败。一般在Slackware中可能出现这种错误,因为在Slackware发布中,terminfo一般位于/usr/lib/terminfo。这种情况可以通过如下方式解决:
#TERMINFO=/usr/lib/terminfo
#export TERMINFO
或者填加一个连接:
#ln -s /usr/lib/terminfo /usr/share/terminfo
另外,成IPTraf目前还不支持SIGWINCH处理功能,在xterm或者其它的终端启动iptraf,如果终端的大小改变,IPTraf自己不会调节自己的大小。
1.4.命令行选项
与大多数UNIX系统的命令一样,IPTraf还支持一些命令行参数,虽然不多。以下是iptraf支持的所有功能选项:
-i 网络接口
让IPTraf监视特定的网络接口,例如:eth0。-i all表示监视系统的所有网络接口。
-g
网络接口的一般统计信息。
-d 网络接口
显示特定网络接口的详细统计信息。
-s 网络接口
对特定网络接口的TCP/UDP数据流量进行监视。
-z 网络接口
监视局域网的特定网络接口。-l all表示全部。
-t timeout
使IPTraf在指定的时间后,自动退出。如果没有设置IPTraf就会一直运行,直到用户按下退出键(x)才退出。
-B
使IPTraf在后台运行。单独使用无效(被忽略直接进入菜单界面),只能和-i、-g、-d、-s、-z、-l中的某个参数一块使用。
-L filename
如果使用-B参数,使用-L filename使IPTraf把日志信息写入其它的文件(filename)中。如果filename不包括文件的绝对路径,就把文件放在默认的日志目录(/var/log/iptraf)。
-q
这个参数现在已经不用了。原来,如果IPTraf运行在使用IP地址伪装(IP Masquerading)的内核上时,会出现大量的警告信息。现在新版的IP Masquerading代码已经没有这个问题了。
-f
使IPTraf强制清除所有的加锁文件,重置所有实例计数器。
-h
显示简短的帮助信息
1.5.进入菜单界面
前面已经讲过,不使用任何参数运行IPTraf就会进入菜单界面。使用上、下箭头键移动菜单选择条。还可以使用每个菜单项中加亮的字母作为运行某个菜单选项的快捷键。
2.使用IPTraf
2.1.一般信息
2.1.1.数字表示
IPTraf能够计量接通过的报文数和字节数。因为数字的增长会很快,所以IPTraf使用了一些符号来表示较大的数字,这些符号包括:K(1x10E3)、M(1x10E6)、G(1x10E9、T(1x10E12)。这些符号和它们通常表示的数目不一样。例如:
1024K=1024000
1024M=1024000000
1024G=1024000000000
1024T=1024000000000000
2.1.2.实例和日志
IPTraf允许同时运行多个进程,但是一次只有一个进程监听某个或者所有的网络接口。不过一般接口统计(General Interface Statistics)功能除外,一次只能有一个进程执行这个操作。
IPTraf的这个特性带来了一个问题,每个进程都要产生日志文件。如果你打开了IPTraf的日志功能,在你使用某个功能时,它都会提示你设置日志文件的名字。这时,你需要自己指定每个示例的日志文件。如果日志文件发生冲突,可能会有无法预料的事情发生。如果你没有指定日志文件的绝对路径,它们就会被记录到默认的日志目录:/var/log/iptraf。
2.1.3.支持的网络接口
IPTraf目前支持如下网络接口:
lo
本机回环接口。每台机器都有这个接口,IP地址是127.0.0.1。
ethn(n>=0)
以太网接口,n是从0开始的整数。eth0是第一个以太网接口,eth1是第二个网络接口。
fddin(n>=0)
FDDI(光纤分布式数字接口)接口,n是从0开始的整数。
pppn(n>=0)
PPP(点到点协议)接口,n是从0开始的整数。
slin(n>=0)
SLIP(串行线路接口协议)接口,n是从0开始的整数。
ipppn(n>=0)
使用ISDN的同步PPP接口,n是从0开始的整数。
isdnn(n>=0)
ISDN(综合业务数字网)接口。不过ISDN接口的命名比较随意,只有以isdnn命名才能被IPTraf使用。IPTraf支持同步PPP接口、原始IP和Cisco-HDLC encapsulation。
plipn(n>=0)
PLIP接口。使用PC并口的一种点到点IP连接协议。
2.2.IP流量监视
执行IPTraf的IP Traffic Monitor菜单项或者使用-i命令行,你就可以使用IPTraf的IP流量监视功能。使用这个功能,你可以实时地监视在被监听网络接口上通过的所有报文。IPTraf的监视器对IP报文进行解码,显示报文的特定信息,例如:源地址和目的地址。除此之外,它还可以辨别出IP封装的协议(例如:TCP、UDP等),并显示这些协议的某些重要信息。
IPTraf的IP流量监视器有两个显示窗口。每个窗口都可以使用小键盘的up、down键上下滚动。使用w可以切换活动的窗口。
2.2.1.IP流量监视器的上部窗口
2.2.1.1.IP流量监视器上部窗口显示内容
IPTraf的流量监视器上部的的显示窗口显示当前的检测到的TCP连接。主要包括TCP连接的如下信息:
源地址和端口
报文计数
字节计数
源MAC地址
报文大小
窗口(window)大小
TCP标志(flag)
网络接口
使用up、down键滚动TCP窗口可以看到更多的连接信息。IPTraf的IP流量监视器不区分连接的客户端和服务器端。它可以在混杂模式下工作,监视局域网的连接状态。
IP流量监视器显示两个方向的TCP流量,窗口最左边的是TCP连接的两端(以主机:端口的格式显示)。为了方便显示,每个TCP连接对都使用[连接到了一起。
IP流量监视器上部窗口的每个条目都包括如下域,注意:在默认情况下,有些域是不显示的,要按m键才能显示:
源地址。端口(Source address and port)
以源地址:端口的格式显示。表示数据的来源。目的地址和端口是[另一头的源地址:端口对。
报文计数(Packet count)
接收到的报文数目。
字节计数(Byte count)
收到的字节数。这个数目包括IP、TCP头信息和实际的数据。数据链路层的报头不包括在内。
MAC源地址(Source MAC address)
投递这个报文的MAC地址。要使用这个功能首先要使用配置菜单(Configure)打开Source MAC addrs in traffic monitor功能,然后按m键就可以了。
报文大小(Packet Size)
最近收到报文的大小。要使用m键才能显示。这个值只是IP报文的大小,数据链路包头不包括在内。
窗口大小(Window Size)
最近收到报文的窗口大小。这个项也需要按M键盘才能显示。
标志状态(Flag statuses)
最近收到的报文的TCP标志
S
同步标志(SYN),用于建立连接。S---表示发起连接,S-A-表示对连接请求的回应。
A
确认有效标志(ACK)。
P
PSH。本报文段请求一次推动(PUSH)。对于发送方,强制协议软件不等一个缓冲区填满就发送所有数据;对于接收方,使TCP不加延迟地将数据提供给应用程序。
U
URG。表示这个报文包含紧急数据。
RESET
RST。重置连接标志。
DONE
FIN。发送放不再发送任何数据,关闭连接。
CLOSED
FIN被另一端主机确认。
2.2.1.2.rvnamed进程
在使用IP流量监视功能时,IPTraf会启动一个精灵进程rvnamed来加速域名反查的速度。在rvnamed的域名反查完成之后,IPTraf就会使用报文来源的域名来代替IP地址。之所以在IPTraf中使用独一的域名反查程序是因为标准的域名反查调用会阻塞进程,直到域名反查功能完成,比较浪费时间。
2.2.1.3.IP转发和IP地址伪装
如果内核具有IP伪装功能,老版本的IPTraf需要处理警告信息。不过,新版本内核已经对IP转发和IP伪装功能进行了改写,IPTraf不再需要处理有关的错误信息了。因此,-q命令选项已经失去作用。
对于没有IP地址伪装的IP转发,转发主机会在同一个TCP连接出现两次,不过进、出的网络接口是不同的;对于进行IP地址伪装的主机,每个TCP连接的两端分别是内部/外部网地址和接口。
2.2.1.4.连接的关闭(closed)、空闲(idle)和超时(time out)
实际应用过程中,经常会出现一些被关闭、被重置,或者空闲时间很长的连接。如果这些连接太多,IPTraf会自动把活动的连接提到显示窗口的上面。你还可以通过configure->timer->TCP closed/idle persistence...配置菜单设置IPTraf自动清理这些连接的时间,或者使用f键手工清理。
2.2.1.5.显示条目排序
你可以对上部窗口的显示条目进行排序。按s键可以显示一个排序菜单。按p键,会以报文的数量进行排序;按b键,会以字节数进行排序。
2.2.2.底部显示窗口
IP流量监视器的底部显示窗口显示其它种类的网络流量。IPTraf支持以下协议:
用户数据报协议(User Datagram Protocol,UDP)
互联网控制报文协议(Internet Control Message Protocol,ICMP)
开放式最短路径优先(Open Shortest-Path First,OSPF)
内部网关路由协议(Interior Gateway Routing Protocol,IGRP)
内部网关协议(Interior Gateway Protocol,IGP)
互联网组管理协议(Internet Group Management Protocol,IGMP)
General Routing Encapsulation (GRE)
地址解析协议(Address Resolution Protocol, ARP)
反向地址解析协议(Reverse Address Resolution Protocol,RARP)
另外,对于不认识的IP报文,IPTraf会显示其协议号;对于非IP报文IPTraf会在窗口中指出。在底部显示的条目中,UDP报文也以地址:端口的格式显示;ICMP条目包括ICMP协议类型。为了正确区分,每种协议都使用不同的颜色。
底部显示窗口可以容纳512个条目。可以使用上下箭头键滚动。如果达到了512个条目,再有新的条目加入,最老的就会被丢掉。某些条目可能很长,你也可以使用左右键滚动显示。使用w切换两个显示窗口的活动状态。
你如果打开了配置菜单(Configure)的Source MAC addrs in traffic monitor功能,IPTraf也会显示收到的非IP报文的来源MAC地址。
2.3.网络接口的一般信息统计(General Interface Statistics)
主菜单的第二个菜单项是网络接口的一般统计功能(General Interface Statistics)。在其显示窗口中,IPTraf会显示被监视网络接口的一些一般统计信息,包括这些网络接口上通过的IP、非IP和坏IP(校验和错误)报文的的数量。还有一个活动指示器显示每秒通过每个网络接口的报文数目,这个活动指示器使用Activity mode配置选项控制开/关的。如果你打开了日志功能(配置菜单的logging选项),所有的统计信息将被复制到/var/log/iptraf/iface_stats_general.log文件中。
你可以按x或者q键回到主菜单。
2.4.网络接口的细节信息统计(Detailed Interface Statistics)
主菜单的第三个功能选项是网络接口的细节统计(Detailed Interface Statistics)功能。除了General Interface Statistics选项提供的统计信息之外,Detailed Interface Statistics选项还提供有关网络接口的其它一些更为详尽的统计信息。它提供如下统计信息:
IP报文数和字节数。
TCP报文数和字节数
UDP报文数和字节数
ICMP报文数和字节数
非IP类型的报文数和字节数
其它IP类型的报文数和字节数
校验和错误计数
网络接口活动状态
IP报文(IP、TCP、UDP、ICMP以及其它IP)的字节数包括IP包头和负载字节数,而数据链路包头不包括在内;在总(total)字节数和非IP报文计数数中包括数据链路包头的字节数。
你如果想直接启动网络接口的细节统计功能,可以使用如下命令:
#iptraf -d eth0(或者其它的网络接口)
另外,你也可以打开日志功能,把网络接口的细节统计信息记录到日志文件中,默认的日志文件名是iface_stats_detailed-iface.log,其中iface以相关的网络设备名(例如:eth0)代替。
这个功能也是按x或者q键回到主菜单。
2.5.统计分析(Statistical Breakdowns)
使用IPTraf的统计分析(Statistical Breakdowns)功能,可以帮助你优化网络设置和监视网络的安全问题。IPTraf的统计分析包括:报文大小分析和TCP/UDP端口分析。
2.5.1.报文大小分析(Statistical Breakdown: Packet Sizes)
在主菜单的选择:Statistical Breakdowns->By packet size就可以进入报文大小分析界面。在老版本的IPTraf中,这个功能属于网络接口细节统计(detailed interface statistics),后来才独立出来。IPTraf根据网络接口最大传输单元(Maximum Transmission Unit,MTU)的大小,划分出20个范围,统计报文大小的分布情况。
你也可以打开日志功能,把报文大小分布信息记录到日志文件中,默认的日志文件名是packet_size-iface.log,其中iface以相关的网络设备名(例如:eth0)代替。
另外,使用以下命令行可以直接进入报文大小分析界面:
#iptraf -z eth0
按x或者Ctrl+X键退出。
2.5.2.TCP/UDP流量分析
IPTraf也可以对流过每个端口(小于1024)的TCP/UDP报文数量进行统计。
nethogs是一款小巧的"net top"工具,可以显示每个进程所使用的带宽,并对列表排序,将耗用带宽最多的进程排在最上面。万一出现带宽使用突然激增的情况,用户迅速打开nethogs,就可以找到导致带宽使用激增的进程。nethogs可以报告程序的进程编号(PID)、用户和路径。
安装nethogs:Ubuntu、Debian和Fedora用户可以从默认软件库获得。CentOS用户则需要Epel。
# ubuntu或debian(默认软件库)
$ sudo apt-get install nethogs
# fedora或centos(来自epel)
$ sudo yum install nethogs -y
NetHogs 命令行参数
以下就是NetHogs命令行的参数,用’-d’来添加刷新频率参数,`device name` 用来检测给定的某个或者某些设备的带宽(默认是eth0).例如:设置5秒钟的刷新频率,键入如下命令即可:
# nethogs -d 5
或
$ sudo nethogs -d 5
如果只用来监视设备(eth0)的网络带宽可以使用如下命令:
# nethogs eth0
或
nethogs eth0
如果要同时监视eth0和eth1接口,使用以下命令即可:
# nethogs eth0 eth1
或
nethogs eth0 eth1
其他参数和用法:
-d: delay for refresh rate.
-h: display available commands usage.
-p: sniff in promiscious mode (not recommended).
-t: trace mode.
-V: prints Version info.
NetHogs 交互控制
以下是NetHogs的一些很有用的交互控制(键盘快捷键:
-m: Change the units displayed forthe bandwidth inunits like KB/sec->KB->B->MB.
-r: Sort by magnitude of respectively traffic.
-s: Sort by magnitude of sent traffic.
-q: Hit quit tothe shell prompt.
想要NetHogs命令行工具的完整参数列表请参考NetHogs的手册,使用方法是在终端里输入‘man nethogs‘ 或者 ‘sudo man nethogs‘,更多信息请参考NetHogs项目主页。
将nethogs监控进程的信息输出重定向到日志文件中
#nethogs -c 1 -t > test.log (好像0.8.0的版本不支持)注意:如果不加-t参数,重定向到文件中的内容可能是乱码。
bmon(带宽监控器)是一款类似nload的工具,它可以显示系统上所有网络接口的流量负载。输出结果还含有图表和剖面,附有数据包层面的详细信息。
安装bmon:Ubuntu、Debian和Fedora用户可以从默认软件库来安装。CentOS用户则需要安装repoforge,因为Epel里面没有bmon。
slurm是另一款网络负载监控器,可以显示设备的统计信息,还能显示ASCII图形。它支持三种不同类型的图形,使用c键、s键和l键即可**每种图形。slurm功能简单,无法显示关于网络负载的任何更进一步的详细信息。
安装slurm
# debian或ubuntu
$ sudo apt-get install slurm
# fedora或centos
$ sudo yum install slurm -y
tcptrack类似iftop,使用pcap库来捕获数据包,并计算各种统计信息,比如每个连接所使用的带宽。它还支持标准的pcap过滤器,这些过滤器可用来监控特定的连接。
安装tcptrack:Ubuntu、Debian和Fedora在默认软件库里面就有它。CentOS用户则需要从RepoForge获得它,因为Epel里面没有它。
# ubuntu, debian
$ sudo apt-get install tcptrack
# fedora, centos(来自repoforge软件库)
$ sudo yum install tcptrack
想实时监控带宽使用情况,请使用"-l"选项(实时模式)。然后,它会显示入站数据和出站数据所使用的总带宽量,但非常精确地显示,没有关于主机连接或进程的任何内部详细信息。
$ vnstat -l -i eth0
Monitoring eth0... (press CTRL-C to stop)
rx: 12 kbit/s 10 p/s tx: 12 kbit/s 11 p/s
vnstat更像是一款制作历史报告的工具,显示每天或过去一个月使用了多少带宽。它并不是严格意义上的实时监控网络的工具。
vnstat支持许多选项,支持哪些选项方面的详细信息请参阅参考手册页。
安装vnstat
# ubuntu或debian
$ sudo apt-get install vnstat
# fedora或 centos(来自epel)
$ sudo yum install vnstat
bwm-ng(下一代带宽监控器)是另一款非常简单的实时网络负载监控工具,可以报告摘要信息,显示进出系统上所有可用网络接口的不同数据的传输速度。
安装bwm-ng:在CentOS上,可以从Epel来安装bwm-ng。
# ubuntu或debian
$ sudo apt-get install bwm-ng
# fedora或centos(来自epel)
$ sudo apt-get install bwm-ng
speedometer 这是另一款小巧而简单的工具,仅仅绘制外观漂亮的图形,显示通过某个接口传输的入站流量和出站流量。
pktstat可以实时显示所有活动连接,并显示哪些数据通过这些活动连接传输的速度。它还可以显示连接类型,比如TCP连接或UDP连接;如果涉及HTTP连接,还会显示关于HTTP请求的详细信息。
netwatch是netdiag工具库的一部分,它也可以显示本地主机与其他远程主机之间的连接,并显示哪些数据在每个连接上所传输的速度。
与netwatch和pktstat一样,trafshow也可以报告当前活动连接、它们使用的协议以及每条连接上的数据传输速度。它能使用pcap类型过滤器,对连接进行过滤。
netload命令只显示关于当前流量负载的一份简短报告,并显示自程序启动以来所传输的总字节量。没有更多的功能特性。它是netdiag的一部分。
ifstat能够以批处理式模式显示网络带宽。输出采用的一种格式便于用户使用其他程序或实用工具来记入日志和分析。
安装ifstat:Ubuntu、Debian和Fedora用户在默认软件库里面就有它。CentOS用户则需要从Repoforge获得它,因为Epel里面没有它。
# ubuntu, debian
$ sudo apt-get install ifstat
# fedora, centos(Repoforge)
$ sudo yum install ifstat
dstat是一款用途广泛的工具(用python语言编写),它可以监控系统的不同统计信息,并使用批处理模式来报告,或者将相关数据记入到CSV或类似的文件。这个例子显示了如何使用dstat来报告网络带宽。
安装dstat