流量统计

来自Ubuntu中文
跳到导航跳到搜索

ipac-ng

其对象人群拥有小的家庭网络,且希望监控因特网的上传或者下载数量而非LAN的本地流量。如果因特网服务提供商设置了每月带宽限制,且同时又需要进行本地网络文件传输,这时它是很有用的。

这个说明书将引导设置IPAC-NG,一个基于iptables/ipchains的IP统计工具包。

安装

你需要访问通用软件仓库——如果需要更多信息,请参照AddingRepositoriesHowto。

首先安装ipac-ng,可以通过新立得(SynapticHowto)或者在终端中输入:

sudo aptitude install ipac-ng

配置

编辑 /etc/ipac-ng/rules.conf 以指明所要记录的通信的类型。

要想简单地测量上传和下载总量,可键入:

# /etc/ipac-ng/rules.conf

total upload |ipac~i|eth0|all||
total download |ipac~o|eth0|all||

注意:将eth0替换为你想要测量的网络适配器的名称。

编辑 /etc/ipac-ng/ipac.conf 并把存储方式改为 gdbm ,否则日志将占据很大的空间。(或许也可以使用postgre)

# /etc/ipac-ng/ipac.conf

storage = gdbm

要忽略本地网络(LAN)通信量的话,要向启动脚本终加入一些简单的iptable规则。

编辑 /etc/init.d/ipac-ng 并增加 ## 之后的四行,具体如下:


case "$1" in
start)
        echo -n "Starting $DESC: "
        check
        $DAEMON -S
        $IPTABLES -I INPUT -s aaa.bbb.ccc.0/24 -j ACCEPT
        $IPTABLES -I OUTPUT -d aaa.bbb.ccc.0/24 -j ACCEPT
        echo "$NAME."
        ;;
stop)
        echo -n "Stopping $DESC: "
        # fetch accounting before removing the rules
        $DAEMON
        echo -n "flushing IP accounting rules ..."
        $IPTABLES --flush ipac~o
        $IPTABLES --flush ipac~i
        $IPTABLES --flush ipac~fi
        $IPTABLES --flush ipac~fo
        # here should the ipac_* rule be removed from INPUT OUTPUT and FORWARD but --flush is
        # evil because it would remove all rules in these chains.
        $IPTABLES -D INPUT -s aaa.bbb.ccc.0/24 -j ACCEPT
        $IPTABLES -D OUTPUT -d aaa.bbb.ccc.0/24 -j ACCEPT
        echo "$NAME stopped."
        ;;

注意,将 aaa.bbb.ccc.0 替换为本地网络。例如,如果路由器地址是 192.168.0.1 ,则应使用 192.168.0.0 。

就这样了!当你的电脑运行时,每十分钟总的通信量将会被自动从iptable获取。要想查看总通信量,要使用“ipacsum”。它可以被配置为显示一个特定的时间间隔,甚至可以绘出通信量的曲线图。

链接

[1]

vnstat

vnstat 是另一个可以用来监视带宽使用量的程序。它比ipac-ng更简单易用。 vnstat的一个优点是它不是一个运行的守护程序,所以它几乎不占用内存。它由 cron 任务创建,每五分钟运行一次。

安装

vnstat包可以不依赖于其他而很容易地从软件仓库中安装。

sudo apt-get install vnstat

设置

vnstat照道理应该可以被任何用户使用,所以应首先给它正确的(访问)许可。下面的指令允许任何用户这个特性。如果需要,你可以建立一个组,以便只有组里的用户能够使用它。

sudo chmod o+x /usr/bin/vnstat
sudo chmod o+wx /var/lib/vnstat/

现在应该已经可以运行了。

使用

要创建 cron 任务,简单地运行这个命令

vnstat -u -i ath0

将ath0替换为要监控的接口

这将在 /var/lib/vnstat/ 下创建一个收集几口数据的文件。一个 cron 任务将每五分钟运行一次并更新数据。下面是未使用选项时的一个示例

vnstat -d /// 查看流量

Database updated: Thu Jan 12 22:20:01 2006

ath0

received:           0.11 MB (nan%)
transmitted:           0.01 MB (nan%)
total:           0.12 MB

rx     |     tx     |  total
-----------------------+------------+-----------
today      0.11 MB |    0.01 MB |    0.12 MB
-----------------------+------------+-----------
estimated         0 MB |       0 MB |       0 MB

阅读更多关于选项的文档,这样就可以在vnstat的主页面中改变它的输出了。