如果要在你的系统上监控网络,那么使用命令行工具是非常实用的,并且对于 Linux 用户来说,有着许许多多现成的工具可以使用,如: nethogs, ntopng, nload, iftop, iptraf, bmon, slurm, tcptrack, cbm, netwatch, collectl, trafshow, cacti, etherape, ipband, jnettop, netspeed 以及 speedometer。这个工具大多需要安装,一般用yum或apt-get命令就可以安装。
1.nethogs (推荐)
nethogs 是一个免费的工具,当要查找哪个 PID (注:即 process identifier,进程 ID) 给你的网络流量带来了麻烦时,它是非常方便的。它按每个进程来分组带宽,而不是像大多数的工具那样按照每个协议或每个子网来划分流量。它功能丰富,同时支持 IPv4 和 IPv6,若你想在你的 Linux 主机上确定哪个程序正消耗着你的全部带宽,用nethogs不错。
一个 Linux 用户可以使用 nethogs 来显示每个进程的 TCP 下载和上传速率,可以使用命令 nethogs eth0 来监控一个指定的设备,上面的 eth0 是那个你想获取信息的设备的名称,你还可以得到有关正在传输的数据的传输速率信息。
例如要想使用混杂模式来嗅探,可以像下面展示的命令那样使用选项 -p:
nethogs -p wlan0
2.nload(推荐)
nload 是一个控制台应用,可以被用来实时地监控网络流量和带宽使用情况,它还通过提供两个简单易懂的图表来对流量进行可视化。这个绝妙的网络监控工具还可以在监控过程中切换被监控的设备,而这可以通过按左右箭头来完成。
只需要直接运行 nload 这个工具就行,这个命令是非常的短小且易记的:
nload
3.slurm
slurm 是另一个 Linux 网络负载监控工具,它以一个不错的 ASCII 图来显示结果,它还支持许多按键用以交互,例如 c 用来切换到经典模式, s 切换到分图模式, r 用来重绘屏幕, L 用来启用 TX/RX 灯(注:TX,发送流量;RX,接收流量) ,m 用来在经典分图模式和大图模式之间进行切换, q 退出 slurm。
4.iftop
当你想显示连接到网卡上的各个主机的带宽使用情况时,iftop 是一个非常有用的工具。根据 man 手册,iftop 在一个指定的接口或在它可以找到的第一个接口(假如没有任何特殊情况,它应该是一个对外的接口)上监听网络流量,并且展示出一个表格来显示当前的一对主机间的带宽使用情况。
5.collectl
collectl 可以被用来收集描述当前系统状态的数据,并且它支持如下两种模式:记录模式和回放模式
记录模式:允许从一个正在运行的系统中读取数据,然后将这些数据要么显示在终端中,要么写入一个或多个文件或一个套接字中。
回放模式:根据 man 手册,在这种模式下,数据从一个或多个由记录模式生成的数据文件中读取。
6.Netstat
Netstat 是一个用来监控传入和传出的网络数据包统计数据的接口统计数据命令行工具。它会显示 TCP 连接 (包括上传和下行),路由表,及一系列的网络接口(网卡或者SDN接口)和网络协议统计数据。
7.Netload
netload 命令只展示一个关于当前网络荷载和自从程序运行之后传输数据总的字节数目的简要报告,它没有更多的功能。它是 netdiag 软件的一部分。
为了运行 netload,我们需要确保选择了一个正在工作的网络接口的名称,如 eth0, eh1, wlan0, mon0等,然后在 shell 或虚拟终端中运行下面的命令:
$ netload wlan2
注意: 请将上面的 wlan2 替换为你想使用的网络接口名称,假如你想通过扫描了解你的网络接口名称,可以在一个虚拟终端或 shell 中运行 ip link show 命令。
8.Nagios (推荐)
Nagios 是一个领先且功能强大的开源监控系统,它使得网络或系统管理员可以在服务器的各种问题影响到服务器的主要事务之前,发现并解决这些问题。 有了 Nagios 系统,管理员便可以在一个单一的窗口中监控远程的 Linux 、Windows 系统、交换机、路由器和打印机等。它会显示出重要的警告并指出在你的网络或服务器中是否出现某些故障,这可以间接地帮助你在问题发生前就着手执行补救行动。
Nagios 有一个 web 界面,其中有一个图形化的活动监视器。通过浏览网页 http://localhost/nagios/ 或 http://localhost/nagios3/ 便可以登录到这个 web 界面。
9.EtherApe
EtherApe 是一个针对 Unix 的图形化网络监控工具,它仿照了 etherman 软件。它支持链路层、IP 和 TCP 等模式,并支持以太网, FDDI, 令牌环, ISDN, PPP, SLIP 及 WLAN 设备等接口,以及一些封装格式。主机和连接随着流量和协议而改变其尺寸和颜色。它可以过滤要展示的流量,并可从一个文件或运行的网络中读取数据包。
运行sudo etherape
etherape 的 图形用户界面 便会被执行。接着,在菜单上面的捕捉选项下,我们可以选择模式(IP,链路层,TCP) 和接口。一切设定完毕后,我们需要点击开始按钮。
10.tcpflow
tcpflow 是一个命令行工具,它可以捕捉 TCP 连接(流)的部分传输数据,并以一种方便协议分析或除错的方式来存储数据。它重构了实际的数据流并将每个流存储在不同的文件中,以备日后的分析。它能识别 TCP 序列号并可以正确地重构数据流,不管是在重发还是乱序发送状态下。
我们可以使用 tcpflow 来捕捉全部或部分 tcp 流量,并以一种简单的方式把它们写到一个可读的文件中。下面的命令就可以完成这个事情,但我们需要在一个空目录中运行下面的命令,因为它将创建诸如 x.x.x.x.y-a.a.a.a.z 格式的文件,运行之后,只需按 Ctrl-C 便可停止这个命令。
$ sudo tcpflow -i eth0 port 8000
注意:请将上面的 eth0 替换为你想捕捉的网卡接口名称。
11.IPTraf
IPTraf 是一个针对 Linux 平台的基于控制台的网络统计应用。它生成一系列的图形,如 TCP 连接的包/字节计数、接口信息和活动指示器、 TCP/UDP 流量故障以及局域网内设备的包/字节计数。
我们需要以管理员权限来运行 IPTraf,并带有一个有效的网络接口名。
$ sudo iptraf wlan2
开始通常的网络接口统计,键入:
# iptraf -g
查看接口 eth0 的详细统计信息,使用:
# iptraf -d eth0
查看接口 eth0 的 TCP 和 UDP 监控信息,使用:
# iptraf -z eth0
查看接口 eth0 的包的大小和数目,使用:
# iptraf -z eth0
注意:请将上面的 eth0 替换为你的接口名称。你可以通过运行ip link show命令来检查你的接口。
12.Speedometer
Speedometer 是一个小巧且简单的工具,它只用来绘出一幅包含有通过某个给定端口的上行、下行流量的好看的图。
Speedometer 可以简单地通过在 shell 或虚拟终端中执行下面的命令来运行:
$ speedometer -r wlan2 -t wlan2
13.Netwatch
Netwatch 是 netdiag 工具集里的一部分,它也显示当前主机和其他远程主机的连接情况,以及在每个连接中数据传输的速率。
为了运行 netwatch, 我们需要在虚拟终端或 shell 中执行下面的命令:
$ sudo netwatch -e wlan2 -nt
注意: 请将上面的 wlan2 替换为你想使用的网络接口名称,假如你想通过扫描了解你的网络接口名称,可以在一个虚拟终端或 shell 中运行 ip link show 命令。
14.Trafshow
Trafshow 同 netwatch 和 pktstat 一样,可以报告当前活动的连接里使用的协议和每个连接中数据传输的速率。它可以使用 pcap 类型的过滤器来筛选出特定的连接。
在虚拟终端或 shell 中执行下面的命令:
$ sudo trafshow -i wlan2
为了专门监控 tcp 连接,可以添加上 tcp 参数:
$ sudo trafshow -i wlan2 tcp
15.Vnstat(推荐)
与大多数的其他工具相比,Vnstat 有一点不同。实际上它运行着一个后台服务或守护进程,并时刻记录着传输数据的大小。另外,它可以被用来生成一个网络使用历史记录的报告。
不带有任何选项运行 vnstat 将简单地展示出从该守护进程运行后数据传输的总量。
$ vnstat
为了实时地监控带宽使用情况,使用 ‘-l’ 选项(live 模式)。然后它将以一种非常精确的方式来展示上行和下行数据所使用的带宽总量,但不会显示任何有关主机连接或进程的内部细节。
$ vnstat -l
完成了上面的步骤后,按 Ctrl-C 来停止。
16.tcptrack
tcptrack 可以展示 TCP 连接的状态,它在一个给定的网络端口上进行监听。tcptrack 监控它们的状态并展示出排序且不断更新的列表,包括来源/目标地址、带宽使用情况等信息,这与 top 命令的输出非常类似 。
tcptrack 需要以 root 权限或超级用户身份来运行。执行 tcptrack 时,我们需要带上要监视的网络接口 TCP 连接状况的接口名称。这里我们的接口名称为 wlan2,所以如下面这样使用:
sudo tcptrack -i wlan2
假如你想监控特定的端口,则使用:
# tcptrack -i wlan2 port 80
17.CBM
CBM ( Color Bandwidth Meter) 可以展示出当前所有网络设备的流量使用情况。这个程序是如此的简单,以至于都可以从它的名称中看出其功能。CBM 的源代码和新版本可以在http://www.isotton.com/utils/cbm/ 上找到。
运行 cbm:
$ cbm
18.bmon
Bmon ( Bandwidth Monitoring) ,是一个用于调试和实时监控带宽的工具。这个工具能够检索各种输入模块的统计数据。它提供了多种输出方式,包括一个基于 curses 库的界面,轻量级的HTML输出,以及 ASCII 输出格式。
运行:
$ bmon
19.tcpdump(推荐)
TCPDump 是一个用于网络监控和数据获取的工具。它可以为我们节省很多的时间,并可用来调试网络或服务器的相关问题。它可以打印出在某个网络接口上与布尔表达式相匹配的数据包所包含的内容的一个描述。
tcpdump 需要以 root 权限或超级用户来运行,我们需要带上我们想要监控的 TCP 连接的网络接口名称来执行 tcpdump 。
$ sudo tcpdump -i wlan2
假如你只想监视一个特定的端口,则可以运行下面的命令。
$ sudo tcpdump -i wlan2 ‘port 80’
20.ntopng
ntopng是 ntop 的下一代版本。它是一个用于展示网络使用情况的网络探头,在一定程度上它与 top 针对进程所做的工作类似。ntopng 基于 libpcap 并且它以可移植的方式被重写,以达到可以在每一个 Unix 平台 、 MacOSX 以及 Win32 上运行的目的。
需要编译安装:
$ sudo wget http://sourceforge.net/projects/ntop/files/ntopng/ntopng-1.1_6932.tgz/download
$ sudo tar zxfv ntopng-1.1_6932.tgz
$ sudo cd ntopng-1.1_6932
$ sudo ./configure
$ sudo make
$ sudo make install
ntopng 既可以在命令行也可以在 Web 界面中使用。