一、iftop是什麼?
iftop是類似于top的實時流量監控工具。
官方網站:http://www.ex-parrot.com/~pdw/iftop/
二、iftop有什麼用?
iftop可以用來監控網卡的實時流量(可以指定網段)、反向解析IP、顯示端口資訊等,詳細的将會在後面的使用參數中說明。
三、安裝iftop
安裝方法1、編譯安裝
如果采用編譯安裝可以到iftop官網下載下傳最新的源碼包。
安裝前需要已經安裝好基本的編譯所需的環境,比如make、gcc、autoconf等。安裝iftop還需要安裝libpcap和libcurses。
CentOS上安裝所需依賴包:
yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel
Debian上安裝所需依賴包:
apt-get install flex byacc libpcap0.8 libncurses5
下載下傳iftop
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make && make install
安裝方法2:(懶人辦法,最簡單)
直接省略上面的步驟
按https://www.vpser.net/manage/centos-rhel-linux-third-party-source-epel.html 這個教程安裝好EPEL,直接yum install iftop
Debian系統 運作:apt-get install iftop
四、運作iftop
直接運作: iftop
效果如下圖:

五、相關參數及說明
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退出監控。
4.2 iftop的輸出從整體上可以分為三大部分:
第一部分是iftop輸出中最上面的一行,此行是流量刻度,用于顯示網卡帶寬流量;
第二部分是iftop輸出中最大的一個部分,此部分又分為左中右三列,左列和中列記錄了哪些IP或主機正在本機的網絡進行連接配接。其中中列的 => 代表發送資料,<=代表接收資料,通過這個訓示箭頭可以很清晰的知道兩個IP之間的通信情況。最右列又分為三個小列,這些實時參數分别表示外部IP連接配接到本機2s 10s和40s的平均流量。另外這個部分還有一個流量圖形條,流量圖形條是對流量大小的動态展示,以第一部分中的流量刻度為基準。通過這個流量圖形條可以很友善的看出那個IP的流量最大,今兒迅速定位網絡中可能出現的流量問題;
第三部分位于iftop輸出的最下面,可以分為三行,其中TX表示發送的資料,RX表示接受的資料,TOTAL表示發送和接收的全部流量。與這三行對應的有三列,其中cum清單示從運作iftop到目前的發送,接收和總資料流量;peak清單示發送,接收以及總的流量峰值;rates清單示過去2s 10s和40s的平均流量值;
4.3iftop使用的參數(iftop -h)
參數 含義
-i 指定需要檢測的網卡
-n 将輸出的主機資訊都通過IP顯示,不進行DNS解析
-B 将輸出以byte為機關顯示網卡流量,預設是bit
-p 以混雜模式運作iftop,此時iftop可以用作網絡嗅探器
-N 隻顯示連接配接端口号,不顯示端口對應的服務名稱
-P 顯示主機以及端口資訊
-F 顯示特定網段的網卡進出流量 如iftop -F 192.168.85.0/24
-m 設定輸出界面中最上面的流量刻度最大值,流量刻度分5個大段顯示 如iftop -m limit
-f 使用篩選碼選擇資料包來計數 如iftop -f filter code
-b 不顯示流量圖形條
-c 指定可選的配置檔案 如iftop -c config file
-t 使用不帶ncurses的文本界面,
如下兩個是隻和-t一起用的:
-s num num秒後列印一次文本輸出然後退出
-L num 列印的行數
效果如圖:
4.4互動操作
再進入iftop檢測界面後按h鍵即可進入互動選項界面,如圖
互動參數主要分為四個部分,分别為一般參數,主機參數,端口顯示參數和輸出排序參數;
一般參數:
P 切換暫停/繼續顯示
h 在互動界面/狀态輸出界面之間切換
b 切換是否顯示平均流量圖形條
B 切換顯示2s 10s和40s内的平均流量
T 切換是否顯示每個連接配接的總流量
j/k 向上或向下滾動螢幕顯示目前的連接配接資訊
f 編輯篩選碼
l 打開iftop輸出過濾功能 ,如輸入要顯示的IP按Enter鍵後螢幕就隻顯示與這個IP相關的流量資訊
L 切換顯示流量刻度範圍,刻度不同,流量圖形條也會不同
q 退出iftop
主機參數:
n 使iftop輸出結果以IP或主機名的方式顯示
s 切換是否顯示源主機資訊
d 切換是否顯示遠端目标主機資訊
t 切換輸出模式
端口顯示參數:
N 切換顯示端口号/端口号對應服務名稱
S 切換是否顯示本地源主機的端口資訊
D 切換是否顯示遠端目标主機的端口資訊
p 切換是否顯示端口資訊
輸出排序參數:
1/2/3 通過第一列/第二列/第三列排序
< 根據左邊的本地主機名或IP位址進行排序
> 根據遠端目标主機的主機名或IP位址進行排序
o 切換是否固定顯示目前的連接配接
補充:如何将iftop的輸出導出到文本中呢?
iftop的man手冊中-t選項說可以将輸出定向到标準輸出中,可是試了不行,也不知道如何做。
-t text output mode
Use text interface without ncurses and print the output to STDOUT.
但是找到了一個可以實作的方法:
nohup iftop -i eth0 > /filename 2>&1 &
六、常見問題
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.