Linux流量監控工具
工具一:iftop
在類Unix系統中可以使用top查看系統資源、進程、內存占用等信息。查看網絡狀態可以使用netstat、nmap等工具。若要查看實時的網絡流量,監控TCP/IP連接等,則可以使用iftop。
一、iftop是什么?
iftop是類似於top的實時流量監控工具。
官方網站:http://www.ex-parrot.com/~pdw/iftop/
二、iftop有什么用?
iftop可以用來監控網卡的實時流量(可以指定網段)、反向解析IP、顯示端口信息等,詳細的將會在后面的使用參數中說明。
三、安裝iftop
安裝方法1、編譯安裝
如果采用編譯安裝可以到iftop官網下載最新的源碼包。
安裝前需要已經安裝好基本的編譯所需的環境,比如make、gcc、autoconf等。安裝iftop還需要安裝libpcap和libcurses。
CentOS上安裝所需依賴包:
[root@sky ~]
# yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel
|
Debian上安裝所需依賴包:
apt-get install flex byacc libpcap0.8 libncurses5
下載iftop
[root@sky ~]
# wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
[root@sky ~]
# tar zxvf iftop-0.17.tar.gz
[root@sky ~]
# cd iftop-0.17
[root@sky iftop-0.17]
# ./configure
[root@sky iftop-0.17]
# make && make install
|
安裝方法2:(懶人辦法,最簡單)
直接省略上面的步驟
CentOS系統:
[root@sky ~]
#yum install flex byacc libpcap ncurses ncurses-devel
[root@sky ~]
#wget ftp://fr2.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/iftop-0.17-1.el5.rf.i386.rpm
[root@sky ~]
#rpm -ivh iftop-0.17-1.el5.rf.i386.rpm
|
Debian系統 運行:apt-get install iftop
四、運行iftop
[root@sky ~]
# iftop
|
效果如下圖:
[root@sky ~]
# iftop -P -n -N -i em2 <==查看網卡2流量,並顯示端口號
|
五、相關參數及說明
1、iftop界面相關說明
界面上面顯示的是類似刻度尺的刻度范圍,為顯示流量圖形的長條作標尺用的。
中間的<= =>這兩個左右箭頭,表示的是流量的方向。
TX:發送流量
RX:接收流量
TOTAL:總流量
Cumm:運行iftop到目前時間的總流量
peak:流量峰值
rates:分別表示過去 2s 10s 40s 的平均流量
2、iftop相關參數
常用的參數
-i設定監測的網卡,如:# iftop -i eth1
-B 以bytes為單位顯示流量(默認是bits),如:# iftop -B
-n使host信息默認直接都顯示IP,如:# iftop -n
-N使端口信息默認直接都顯示端口號,如: # iftop -N
-F顯示特定網段的進出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),幫助,顯示參數信息
-p使用這個參數后,中間的列表顯示的本地主機信息,出現了本機以外的IP信息;
-b使流量圖形條默認就顯示;
-f這個暫時還不太會用,過濾計算包用的;
-P使host信息及端口信息默認就都顯示;
-m設置界面最上邊的刻度的最大值,刻度分五個大段顯示,例:# iftop -m 100M
進入iftop畫面后的一些操作命令(注意大小寫)
按h切換是否顯示幫助;
按n切換顯示本機的IP或主機名;
按s切換是否顯示本機的host信息;
按d切換是否顯示遠端目標主機的host信息;
按t切換顯示格式為2行/1行/只顯示發送流量/只顯示接收流量
按N切換顯示端口號或端口服務名稱;
按S切換是否顯示本機的端口信息;
按D切換是否顯示遠端目標主機的端口信息;
按p切換是否顯示端口信息;
按P切換暫停/繼續顯示;
按b切換是否顯示平均流量圖形條;
按B切換計算2秒或10秒或40秒內的平均流量;
按T切換是否顯示每個連接的總流量;
按l打開屏幕過濾功能,輸入要過濾的字符,比如ip,按回車后,屏幕就只顯示這個IP相關的流量信息;
按L切換顯示畫面上邊的刻度;刻度不同,流量圖形條會有變化;
按j或按k可以向上或向下滾動屏幕顯示的連接記錄;
按1或2或3可以根據右側顯示的三列流量數據進行排序;
按<根據左邊的本機名或IP排序;
按>根據遠端目標主機的主機名或IP排序;
按o切換是否固定只顯示當前的連接;
按f可以編輯過濾代碼,這是翻譯過來的說法,我還沒用過這個!
按!可以使用shell命令,這個沒用過!沒搞明白啥命令在這好用呢!
按q退出監控。
六、常見問題
1、make: yacc: Command not found
make: *** [grammar.c] Error 127
解決方法:apt-get install byacc / yum install byacc
2、configure: error: Curses! Foiled again!
(Can't find a curses library supporting mvchgat.)
Consider installing ncurses.
解決方法:apt-get install libncurses5-dev / yum install ncurses-devel
工具二: Iptraf
Iptraf是一款linux環境下,監控網絡流量的一款絕佳的免費小軟件,特別是安裝到防火牆上,與Iptables一起工作,監控流經防火牆的網絡異常,效果非常好。
我的安裝配置環境是redhat 9.0
一、軟件下載
Iptraf的最新版本是2.7.0,可以從下面的地址下載ftp://Iptraf.seul.org/pub/Iptraf/
二、安裝環境需要
--- gcc 2.7.2.3 or later
--- GNU C (glibc) development library 2.1 or later
--- ncurses development libraries 4.2 or later
可以在linux下執行:
[root@sky ~]
# rpm -qa | grep gcc
[root@sky ~]
# rpm -qa | grep glibc
[root@sky ~]
# rpm -qa | grep ncurses
|
如果沒有,則安裝。
三、安裝
使用yum安裝方式:
[root@sky ~]
# yum -y install iptraf
|
使用rpm包安裝方式
將下載得到的Iptraf-2.7.0.tar.gz上傳到你所要安裝的機器上,我的是防火牆的 /home/ 目錄:
[root@sky ~]
# cd /home/
[root@sky home]
# tar zxf Iptraf-2.7.0.tar.gz
[root@sky home]
#cd Iptraf-2.7.0
[root@sky Iptraf-2.7.0]
# ./Setup
|
至此,安裝完畢。
安裝程序會將執行程序安裝到 /usr/local/bin 目錄下,並創 /var/local/Iptraf 目錄放置Iptraf的配置文件,同時創建 /var/log/Iptraf 目錄放置Iptraf產生的日志文件。
四、運行Iptraf
[root@sky ~]
# Iptraf
|
選擇【IP流量監控】
選擇監控全部端口【all interface】
可以看到有各種IP在通過公網掃描我的服務器,如何不讓外界來掃描本機呢?最好的做法就是在iptables里面做ACL規則限制,只允許內網和辦公司的公網IP才能ping通本機。(規則設置參照Linux下iptables配置詳解)
運行Iptraf后會產生一個字符界面的菜單,點擊x可以退出 Iptraf,各菜單說明如下:
1、菜單Configure...
在這里可以對 Iptraf 進行配置,所有的修改都將保存在文件:/var/local/Iptraf/Iptraf.cfg 中
--- Reverse DNS Lookups 選項,對IP地址反查 DNS名,默認是關閉的。
--- TCP/UDP Service Names 選項,使用服務器代替端口號,例如用www 代替80,默認是關閉的。
--- Force promiscuous 混雜模式,此時網卡將接受所有到達的數據,不管是不是發給自己的。
--- Color 終端顯示彩色,當然用telnet ,ssh連接除外,也就是用不支持顏色的終端連接肯定還是沒有顏色。
--- Logging 同時產生日志文件,在/var/log/Iptraf 目錄下。
--- Activity mode 可以選擇統計單位是kbit/sec 還是 kbyte/sec 。
--- Source MAC addrs in traffic monitor 選擇后,會顯示數據包的源MAC地址。
2、菜單Filters...
在這里可以設置過濾規則,這是最有用的選項了,當你從遠端連入監控機時,自己的機器與監控機會產生源源不斷的tcp數據包,有時很令人討厭,此時你就可以將自己的ip地址排除在外。
它包括六個選項,分別是:Tcp、Udp、Other IP、ARP、RARP、Non-ip。我們以TCP為例說明,其它選項的配置都很相似。
--- Defining a New Filter
選擇Defining a New Filter后,會出來一對話框,要求填入對所建的當前規則的描述名,然后回車確定,Ctrl+x取消。再接着出現的對話框里,Host name/IP address:的First里面填源地址,Second里填目標地址,Wildcard mask的兩個框里面分別是源地址和目標地址所對應的掩碼,注意,這里的地址即可以是單個地址,也可以是一個網段,如果是單個IP,則相應的子網掩碼要填成255.255.255.255,如果是一個網段,則填寫相應的子網掩碼:例如,想表示192.168.0.0,有256個IP地址的網段,則填寫192.168.0.0,子網是:255.255.255.0,其它類推,All則用0.0.0.0,子網也是0.0.0.0表示。
Port:欄要求填入要過濾的端口號,0表示任意端口號。Include/Exclude欄要求填入I或者E,I表示包括,E表示排除。填寫完畢,回車確認,Ctrl x取消。
--- Applying a Filter
我們在上一步定義的一個或多個過濾規則會存儲為一個過濾列表,在沒有應用之前並不起作用,我們可以在這里選擇我們應用那些過濾規則。所有應用的規則會一直起作用,即使重新啟動Iptraf。我們可以執行Detaching a Filter來取消執行當前所有應用的規則。
--- Editing a Defined Filter 編輯一個已經存在的規則
--- Deleting a Defined Filter 刪除一個已經定義的規則
--- Detaching a Filter 取消執行當前所有應用的規則
3、菜單IP Traffic Monitor
IP數據包流量實時監控窗口,注意這里會監控所有的來往數據包,包括自己的,所以,如果你使用遠程終端連接上來的話,你和監控機將會源源不斷的產生數據流,因此建議在Filters...菜單中將自己的IP過濾掉,是它不產生影響。在這里可以實時的看到每一個連接的流量狀態,它有兩個窗口,上面的是TCP的連接狀態,下面的窗口可以看到UDP、ICMP、OSPF、IGRP、IGP、IGMP、GRE、ARP、RARP的數據包。可以點擊s鍵選擇排序,可以按照包的數量排序,也可按照字節的大小排序,如果因為它是實時變化的而導致看不太清楚的話,可以在Configure菜單中把Logging功能打開,它就會在/var/log/Iptraf 目錄中記錄日志,以方便你在日后查看,當Logging功能打開后,當你開始監控Iptraffic時,程序會提示你輸入Log文件的文件名,默認的是ip_traffic-1.log。
在一個比較繁忙的網絡里,顯示的結果可能很亂,以至於你很難找到自己感興趣的數據,這時可以使用Filters菜單,來過濾顯示的數據。
4、菜單General Interface Statistics
這里顯示每個網絡設備出去和進入的數據流量統計信息,包括總計、IP包、非IP包、Bad IP包、還有每秒的流速,單位是kbit/sec或者是kbyte/sec ,這由Configure菜單的Activity選項決定。
如果設置了Filter選項,這里也受到影響。
5、菜單Detailed Interface Statistics
這里包括了每個網絡設備的詳細的統計信息,很簡單,不再贅述。
6、Statistical Breakdowns
這里提供更詳細的統計信息,可以按包的大小分類,分別統計;也可以按Tcp/Udp的服務來分類統計,也不再贅述。
7、LAN Station Statistics
提供對每個網絡地址通過本機的數據的統計信息。
