vnstat

vnstat 可以统计时,天,周,月的网络流量。安装 vnstat 以及图形输出工具:

# apt-get install vnstat vnstati

包括前面提到的几个工具,大部分数据都是取自 /proc/net/dev,vnstat 也不列外。

/var/lib/vnstat 是默认的数据库存放的地方
/etc/vnstat.conf 是其配置文件,~/.vnstatrc 的优先级高于前者,每行都有详细的注释。

vnstati 的用户请参考 man 手册。下面是 vnstat 用法。

在统计某一个接口支前,需要先初始化该接口:

# vnstat -u -i eth0

没有任何参数会统计每一个初始化过的接口的流量,也可以指定接口:

# vnstat -i eth0

以小时/天/周/月来显示:

# vnstan -h/d/w/m

以 byte 为单位显示实时的信息,这个跟 nload,iptop 类似:

# vnstat -l -ru

将流量信息给 dump 下来:

# vmstat --dumpdb

更详细的用法请参考 man 手册或这里

与传统的使用 cron 更进一步,vnstat 提供了 vnstatd 来更新数据库,vnstatd 提供了参数来开启这个 daemon,该 daemon 既可以运行在 backgroud 下,也可以运行在当前的终端下:

# /usr/sbin/vnstatd -d
# /usr/sbin/vnstatd -n

前者以背景的方式运行,跟 init.d 启动 daemon 的方式相同;后者则运行在当前的终端下。

vnstatd 主要通过 UpdateInterval,PollInterval 和 SaveInterval 来调整。
UpdateInterval 表示多长时间(秒)接口数据更新一次,这个类似 cron 的时间间隔
PollInterval 表示多长时间(秒)检查一次接口的状态,有没有可能宕掉了。
SaveInterval 表示多长时间(分)将数据写入磁盘。
这三个数据默认是 30,5,5。可根据实际需求修该。

除了 nload 以及 vnstat 是监控整体的流量以外,像 iftop,iptaf 是可以对包进行一定深度的分析的,如果客户端走 tunnel,对最后的结果肯定是有影响的。下图是我在 iptraf 上做的一个 filter,过滤的是我本地的 ip,vpn 使用的是 53 端口,可以看到 iptraf 给我解析的出来的是 "domain",而此时我正在进行下载;同理,我如果走的是 ssh tunnel,iptraf 最多只能抓取本地 ip 跟 ssh server 之间的数据,而不知道我下载的源地址。这个也是说人们所说的上网通过走 tunnel 可以一定程度上让自己的踪迹不受跟踪。

参考:

http://humdi.net/vnstat/