iftop

Ubuntu 和 CentOS 可用各自的包管理器安装:

# yum install iftop ncurses-devel
# apt-get install iftop libncurses5-dev

下面是几个常用的参数。

iftop 在没有使用 -i 指定的情况下,默认会使用 eth0 作为监控的接口。
以一台 nat 为例来说明 iftop 的用法,默认 eth1 配置私网 IP,eth0 配置公网 IP。

如果监控 eth1 接口,左右两边分别会显示内网的 IP 以及这些 IP 所访问的公网 IP;而如果监控 eth0 接口的话,有一端将始终是 eth0 的公网 IP。所以监控 eth1 接口更好。

iftop 作为精确的流量监控并不是最佳的选择,他默认是使用刻度的方式在大致的描绘目前每个连接的流量。但是作为普通的应用,这个应该足够了,比如我们只想看看有没有人在进行大流量的下载,通过一个简单的排序就可以看出结论了。

启动 iftop,监控 eth1,使用 byte 为单位,可以控制某个网段或者单个的 IP:

# iftop -i eth1 -B [-F 10.18.101.0/255.255.255.0]

启动之后可以通过下面的常见的按键来控制显示输出。

s/d:是否隐藏本地或者远程的主机
n:是否通过 dns 解析

p:是否显示两端的端口号
S/D:是否显示端口号
N:是否解析端口号与对应的服务

t:如何显示流量的收发
L:刻度变化
1/2/3:根据右边三栏流量进行排序
l:进行过滤
P:暂停   

下面具体讲讲怎么抓取内网的狂下片的同学。

1.iptop -i eth1
2.按 B 来切换成 40s 内的流量值
3.按 3 再按 T 来排序
4.按 t 来过滤下载的那部分流量

这样下来基本上就可以判定出是哪位同学占用了大家的宝贵带宽了。

可以将初始的命令放到默认的 ~/.iftoprc 文件中:
interface:eth0
hide-source:no
hide-destination: no
dns-resolution:yes
port-display:on
port-resolution:yes
show-bars:yes
sort:2s
show-totals:yes
use-bytes: yes
line-display: two-line
show-totals: yes
log-scale:yes
# 注意,这个默认的单位是 bits
max-bandwidth:20M

详细解释请查看男人。