站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

ipband-統計指定網卡的封包流量

前言

[IPBand - IP Bandwidth Watchdog] ipband is a libpcap(Packet Capture Library) based IP traffic monitor ,簡單來說就是可以統計通過指定網卡的封包利用 (.txt or .html) 統計方式呈現,讓您可以很簡單的了解現在網卡上進、出的流量,或是用來觀看主機所在的網段進出的封包,例如用在 Gateway 上的話就可以很即時來查看 Client 目前的即時流量。

IPBand 特色:

IPBand 成果展示畫面:

[IPBand Screenshots]

實作環境

安裝及設定

步驟1.安裝相關套件 libpcap、libpcap-devel、gcc

先確定系統是否有此三個相關套件,否則等一下 ipband-0.8 的安裝過程會失敗。

 #rpm -qa libpcap libpcap-devel gcc
 gcc-4.1.2-14.el5
 libpcap-0.9.4-11.el5
 libpcap-devel-0.9.4-11.el5

若有缺少相關套件就利用 yum 來安裝吧。

 #yum -y install gcc                //安裝 gcc 套件
 #yum -y install libpcap            //安裝 libpcap 套件 (/usr/lib/libpcap.so.0)
 #yum -y install libpcap-devel      //安裝 libpcap-devel 套件 (/usr/include/pcap.h)

步驟2.安裝 IPBand

以下為下載 IPBand v0.8 並解開該壓縮檔及安裝

 #cd ~ ; wget http://ipband.sourceforge.net/ipband-0.8.tgz    //下載 IPBand v0.8
 #tar zxvf ipband-0.8.tgz                                     //解壓縮 ipband-0.8.tgz
 #cd ipband-0.8                                               //進入 ipband 資料夾
 #make ; make install                                         //安裝 ipband

步驟3.修改 ipband.conf 設定檔

 #cd /etc ; cp ipband.sample.conf ipband.conf                 //複製範例設定檔
 #vi /etc/ipband.conf                                         //修改設定檔 (視個人需求調整)
 debug 2                                                      //啟動服務時可看到詳細的設定情形
 interface eth0                                               //指定監聽的網卡
 promisc yes                                                  //網卡混亂模式 promiscuous mode
 fork yes                                                     //將 ipband 丟到背景執行
 filter net 192.168.1.0/24                                    //指定過濾的網段
 outfile /home/web/ipband/ipband.txt                          //將統計結果輸出成 .txt 並指定路徑
 bandwidth 20                                                 //指定統計頻寬門檻 (kBytes/sec)
 average 5                                                    //指定平均統計時間 5 秒
 report 60                                                    //指定輸出到 .txt 的時間 60 秒
 top 10                                                       //指定列出前 10 名 

步驟4.啟動 ipband

 #/etc/rc.d/init.d/ipband start                               //啟動 ipband 服務,因為有設 debug 2 所以可清楚看到設定值
 Starting ipband:
 ipband 0.8 (compiled Apr 24 2008)
 libpcap version 0.9.4
 started Thu Apr 24 18:00:42 2008
 Option values:
        Debug level: 2
        Promiscuous mode: yes
        Configuration file: /etc/ipband.conf
        Averaging period (sec): 5
        Reporting peroid (sec): 60
        Bandwidth threshold (kBps): 20
        Pcap filter string: net 192.168.1.0/24
        Subnet mask bits: 24
        Report output file: /home/web/ipband/ipband.txt
        HTML output file: (null)
        Report mail to: (null)
        Report mail footer file: (null)
        MTA string: (null)
        Report top connections: 10
        Frame length adjustment: 0
 Running in background...19296
                                                           [  OK  ]

檢查 ipband process 是否執行中

 #ps ax |grep ipband
 19351 ?        Ss     0:00 /usr/local/bin/ipband

因為啟動了網卡的混亂模式 (promiscuous mode),所以可以從 /var/log/message 可知是否在監聽或結束監聽。

啟動監聽

 Apr 24 12:12:20 test1 kernel: device eth0 entered promiscuous mode
 Apr 24 12:12:20 test1 kernel: audit(1209010340.129:7): dev=eth0 prom=256 old_prom=0 auid=4294967295

結束監聽

 Apr 24 12:13:20 test1 kernel: device eth0 left promiscuous mode
 Apr 24 12:13:20 test1 kernel: audit(1209010400.495:8): dev=eth0 prom=0 old_prom=256 auid=4294967295

成果展示

My ipband ScreenShots

參考

[IP Bandwidth Watchdog]

[IPBand Man Page]

Me FAQ

Q1.無法安裝 ipband 出現錯誤訊息 pcap.h: No such file or directory?

Error Meaage:

我在切換到 ipband-0.8 資料夾輸入 make 來產生安裝檔案時卻失敗了,並出現如下錯誤訊息?

 ~/ipband-0.8 # make
 gcc  -Wall -I/usr/include/pcap  -c -o main.o main.c
 In file included from main.c:27:
 ipband.h:49:18: error: pcap.h: No such file or directory
 In file included from main.c:27:
 ipband.h:180: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
 ipband.h:239: warning: ‘struct pcap_pkthdr’ declared inside parameter list
 ipband.h:239: warning: its scope is only this definition or declaration, which is probably not what you want
 main.c: In function ‘main’:
 main.c:39: error: storage size of ‘pkthdr’ isn’t known
 main.c:148: warning: implicit declaration of function ‘pcap_fileno’
 main.c:148: error: ‘pcapfile_m’ undeclared (first use in this function)
 main.c:148: error: (Each undeclared identifier is reported only once
 main.c:148: error: for each function it appears in.)
 main.c:167: warning: implicit declaration of function ‘pcap_next’
 main.c:237: warning: implicit declaration of function ‘pcap_close’
 main.c:39: warning: unused variable ‘pkthdr’
 make: *** [main.o] Error 1

Ans:

從錯誤訊息中可以看到關鍵的一行寫說 ipband.h:49:18: error: pcap.h: No such file or directory 查看了一下我的 /usr/include 下真的沒有 pcap.h 檔案所以當然出問題了,請安裝 libpcap-devel 套件即可解決。

 #yum -y install libpcap-devel      //安裝 libpcap-devel 套件 (/usr/include/pcap.h)
 #rpm -ql libpcap-devel             //列出此套件安裝了哪些檔案
 /usr/include/pcap-bpf.h
 /usr/include/pcap-namedb.h
 /usr/include/pcap.h
 /usr/lib/libpcap.a
 /usr/lib/libpcap.so

Q2.無法安裝 ipband 出現錯誤訊息 make: gcc: Command not found?

Error Meaage:

我在切換到 ipband-0.8 資料夾輸入 make 來產生安裝檔案時卻失敗了,並出現如下錯誤訊息?

 ~/ipband-0.8 # make
 gcc  -Wall -I/usr/include/pcap  -c -o main.o main.c
 make: gcc: Command not found
 make: *** [main.o] Error 127

Ans:

從錯誤訊息中可以看到關鍵的一行寫說 make: gcc: Command not found 查看了一下真的沒有安裝 gcc 套件所以當然出問題了,請安裝 gcc 套件即可解決。

 #yum -y install gcc                //安裝 gcc 套件

Q3.ipband 服務似乎沒啟動成功,查看狀態出現 ipband dead but subsys locked?

Error Meaage:

如果你是使用指令的方式來啟動,而不是使用設定檔的方式來啟動的話就有可能出現這樣的問題。

 #/etc/rc.d/init.d/ipband statusipband dead but subsys locked

Ans:

解決方式有二個 (停止 ipband、刪除 /var/lock/subsys/ipband) 即可,我個人是覺得把設定檔設一設然後指令方式啟動比較方便。

 #/etc/rc.d/init.d/ipband stop                              //方式一
 Shutting down ipband:                                      [FAILED]
 #rm/var/lock/subsys/ipband                                 //方式二
 #/etc/rc.d/init.d/ipband status                            //再查看狀態應該 OK!!
 ipband is stopped

Q4.啟動 ipband 服務時卡住?

Error Meaage:

當我啟動 ipband 服務時系統卡住了,也不知到底有沒有啟動成功?

 #/etc/rc.d/init.d/ipband start                             //沒有出現 OK,也沒反應
 Starting ipband:            

Ans:

原因在於你設定檔可能沒有設將 ipband 丟到背景執行,所以當你執行服務時其實就是啟動了只是在前景執行你覺得好像沒反應而以。

 #vi /etc/ipband.conf                                         //修改設定檔
 fork yes                                                     //將 ipband 丟到背景執行
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com