又一波你可能不知道的 Linux 命令行網(wǎng)絡(luò)監(jiān)控工具
對(duì)任何規(guī)模的業(yè)務(wù)來說,網(wǎng)絡(luò)監(jiān)控工具都 是一個(gè)重要的功能。網(wǎng)絡(luò)監(jiān)控的目標(biāo)可能千差萬別。比如,監(jiān)控活動(dòng)的目標(biāo)可以是保證長(zhǎng)期的網(wǎng)絡(luò)服務(wù)、安全保護(hù)、對(duì)性能進(jìn)行排查、網(wǎng)絡(luò)使用統(tǒng)計(jì)等。由于它的目 標(biāo)不同,網(wǎng)絡(luò)監(jiān)控器使用很多不同的方式來完成任務(wù)。比如對(duì)包層面的嗅探,對(duì)數(shù)據(jù)流層面的統(tǒng)計(jì)數(shù)據(jù),向網(wǎng)絡(luò)中注入探測(cè)的流量,分析服務(wù)器日志等。
盡管有許多專用的網(wǎng)絡(luò)監(jiān)控系統(tǒng)可以365天24小時(shí)監(jiān)控,但您依舊可以在特定的情況下使用命令行式的網(wǎng)絡(luò)監(jiān)控器,某些命令行式的網(wǎng)絡(luò)監(jiān)控器在某方面很有用。如果您是系統(tǒng)管理員,那您就應(yīng)該有親身使用一些知名的命令行式網(wǎng)絡(luò)監(jiān)控器的經(jīng)歷。這里有一份Linux上流行且實(shí)用的網(wǎng)絡(luò)監(jiān)控器列表。
包層面的嗅探器
在這個(gè)類別下,監(jiān)控工具在鏈路上捕捉獨(dú)立的包,分析它們的內(nèi)容,展示解碼后的內(nèi)容或者包層面的統(tǒng)計(jì)數(shù)據(jù)。這些工具在最底層對(duì)網(wǎng)絡(luò)進(jìn)行監(jiān)控、管理,同樣的也能進(jìn)行最細(xì)粒度的監(jiān)控,其代價(jià)是影響網(wǎng)絡(luò)I/O和分析的過程。
-
dhcpdump:一個(gè)命令行式的DHCP流量嗅探工具,捕捉DHCP的請(qǐng)求/回復(fù)流量,并以用戶友好的方式顯示解碼的DHCP協(xié)議消息。這是一款排查DHCP相關(guān)故障的實(shí)用工具。
-
dsniff:一個(gè)基于命令行的嗅探、偽造和劫持的工具合集,被設(shè)計(jì)用于網(wǎng)絡(luò)審查和滲透測(cè)試。它可以嗅探多種信息,比如密碼、NSF流量(LCTT 譯注:此處疑為 NFS 流量)、email消息、網(wǎng)絡(luò)地址等。
-
httpry:一個(gè)HTTP報(bào)文嗅探器,用于捕獲、解碼HTTP請(qǐng)求和回復(fù)報(bào)文,并以用戶友好的方式顯示這些信息。
-
IPTraf:基于命令行的網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù)查看器。它實(shí)時(shí)顯示包層面、連接層面、接口層面、協(xié)議層面的報(bào)文/字節(jié)數(shù)。抓包過程由協(xié)議過濾器控制,且操作過程全部是菜單驅(qū)動(dòng)的。
-
mysql-sniffer:一個(gè)用于抓取、解碼MySQL請(qǐng)求相關(guān)的數(shù)據(jù)包的工具。它以可讀的方式顯示最頻繁或全部的請(qǐng)求。
-
ngrep:在網(wǎng)絡(luò)報(bào)文中執(zhí)行g(shù)rep。它能實(shí)時(shí)抓取報(bào)文,并用正則表達(dá)式或十六進(jìn)制表達(dá)式的方式匹配(過濾)報(bào)文。它是一個(gè)可以對(duì)異常流量進(jìn)行檢測(cè)、存儲(chǔ)或者對(duì)實(shí)時(shí)流中特定模式報(bào)文進(jìn)行抓取的實(shí)用工具。
-
p0f:一個(gè)被動(dòng)的基于包嗅探的指紋采集工具,可以可靠地識(shí)別操作系統(tǒng)、NAT或者代理設(shè)置、網(wǎng)絡(luò)鏈路類型以及許多其它與活動(dòng)的TCP連接相關(guān)的屬性。
-
pktstat:一個(gè)命令行式的工具,通過實(shí)時(shí)分析報(bào)文,顯示連接帶寬使用情況以及相關(guān)的協(xié)議(例如,HTTP GET/POST、FTP、X11)等描述信息。
-
Snort:一個(gè)入侵檢測(cè)和預(yù)防工具,通過規(guī)則驅(qū)動(dòng)的協(xié)議分析和內(nèi)容匹配,來檢測(cè)/預(yù)防活躍流量中各種各樣的后門、僵尸網(wǎng)絡(luò)、網(wǎng)絡(luò)釣魚、間諜軟件攻擊。
-
tcpdump:一個(gè)命令行的嗅探工具,可以基于過濾表達(dá)式抓取網(wǎng)絡(luò)中的報(bào)文,分析報(bào)文,并且在包層面輸出報(bào)文內(nèi)容以便于包層面的分析。他在許多網(wǎng)絡(luò)相關(guān)的錯(cuò)誤排查、網(wǎng)絡(luò)程序debug、或安全監(jiān)測(cè)方面應(yīng)用廣泛。
-
tshark:一個(gè)與Wireshark窗口程序一起使用的命令行式的嗅探工具。它能捕捉、解碼網(wǎng)絡(luò)上的實(shí)時(shí)報(bào)文,并能以用戶友好的方式顯示其內(nèi)容。
#p#
流/進(jìn)程/接口層面的監(jiān)控
在這個(gè)分類中,網(wǎng)絡(luò)監(jiān)控器通過把流量按照流、相關(guān)進(jìn)程或接口分類,收集每個(gè)流、每個(gè)進(jìn)程、每個(gè)接口的統(tǒng)計(jì)數(shù)據(jù)。其信息的來源可以是libpcap抓包庫或者sysfs內(nèi)核虛擬文件系統(tǒng)。這些工具的監(jiān)控成本很低,但是缺乏包層面的檢視能力。
-
bmon:一個(gè)基于命令行的帶寬監(jiān)測(cè)工具,可以顯示各種接口相關(guān)的信息,不但包括接收/發(fā)送的總量/平均值統(tǒng)計(jì)數(shù)據(jù),而且擁有歷史帶寬使用視圖。
-
iftop:一個(gè)帶寬使用監(jiān)測(cè)工具,可以實(shí)時(shí)顯示某個(gè)網(wǎng)絡(luò)連接的帶寬使用情況。它對(duì)所有帶寬使用情況排序并通過ncurses的接口來進(jìn)行可視化。他可以方便的監(jiān)控哪個(gè)連接消耗了最多的帶寬。
-
nethogs:一個(gè)基于ncurses顯示的進(jìn)程監(jiān)控工具,提供進(jìn)程相關(guān)的實(shí)時(shí)的上行/下行帶寬使用信息。它對(duì)檢測(cè)占用大量帶寬的進(jìn)程很有用。
-
netstat:一個(gè)顯示許多TCP/UDP的網(wǎng)絡(luò)堆棧的統(tǒng)計(jì)信息的工具。諸如打開的TCP/UDP連接書、網(wǎng)絡(luò)接口發(fā)送/接收、路由表、協(xié)議/套接字的統(tǒng)計(jì)信息和屬性。當(dāng)您診斷與網(wǎng)絡(luò)堆棧相關(guān)的性能、資源使用時(shí)它很有用。
-
speedometer:一個(gè)可視化某個(gè)接口發(fā)送/接收的帶寬使用的歷史趨勢(shì),并且基于ncurses的條狀圖進(jìn)行顯示的終端工具。
-
sysdig:一個(gè)可以通過統(tǒng)一的界面對(duì)各個(gè)Linux子系統(tǒng)進(jìn)行系統(tǒng)級(jí)綜合性調(diào)試的工具。它的網(wǎng)絡(luò)監(jiān)控模塊可以監(jiān)控在線或離線、許多進(jìn)程/主機(jī)相關(guān)的網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù),例如帶寬、連接/請(qǐng)求數(shù)等。
-
tcptrack:一個(gè)TCP連接監(jiān)控工具,可以顯示活動(dòng)的TCP連接,包括源/目的IP地址/端口、TCP狀態(tài)、帶寬使用等。
-
vnStat:一個(gè)存儲(chǔ)并顯示每個(gè)接口的歷史接收/發(fā)送帶寬視圖(例如,當(dāng)前、每日、每月)的流量監(jiān)控器。作為一個(gè)后臺(tái)守護(hù)進(jìn)程,它收集并存儲(chǔ)統(tǒng)計(jì)數(shù)據(jù),包括接口帶寬使用率和傳輸字節(jié)總數(shù)。
#p#
主動(dòng)網(wǎng)絡(luò)監(jiān)控器
不同于前面提到的被動(dòng)的監(jiān)聽工具,這個(gè)類別的工具們?cè)诒O(jiān)聽時(shí)會(huì)主動(dòng)的“注入”探測(cè)內(nèi)容到網(wǎng)絡(luò)中,并且會(huì)收集相應(yīng)的反應(yīng)。監(jiān)聽目標(biāo)包括路由路徑、可供使用的帶寬、丟包率、延時(shí)、抖動(dòng)(jitter)、系統(tǒng)設(shè)置或者缺陷等。
-
dnsyo:一個(gè)DNS檢測(cè)工具,能夠管理跨越多達(dá)1500個(gè)不同網(wǎng)絡(luò)的開放解析器的DNS查詢。它在您檢查DNS傳播或排查DNS設(shè)置的時(shí)候很有用。
-
iperf:一個(gè)TCP/UDP帶寬測(cè)量工具,能夠測(cè)量?jī)蓚€(gè)端點(diǎn)間最大可用帶寬。它通過在兩個(gè)主機(jī)間單向或雙向的輸出TCP/UDP探測(cè)流量來測(cè)量可用的帶寬。它在監(jiān)測(cè)網(wǎng)絡(luò)容量、調(diào)諧網(wǎng)絡(luò)協(xié)議棧參數(shù)時(shí)很有用。一個(gè)叫做netperf的變種擁有更多的功能及更好的統(tǒng)計(jì)數(shù)據(jù)。
-
netcat/socat:通用的網(wǎng)絡(luò)調(diào)試工具,可以對(duì)TCP/UDP套接字進(jìn)行讀、寫或監(jiān)聽。它通常和其他的程序或腳本結(jié)合起來在后端對(duì)網(wǎng)絡(luò)傳輸或端口進(jìn)行監(jiān)聽。
-
nmap:一個(gè)命令行的端口掃描和網(wǎng)絡(luò)發(fā)現(xiàn)工具。它依賴于若干基于TCP/UDP的掃描技術(shù)來查找開放的端口、活動(dòng)的主機(jī)或者在本地網(wǎng)絡(luò)存在的操作系統(tǒng)。它在你審查本地主機(jī)漏洞或者建立維護(hù)所用的主機(jī)映射時(shí)很有用。zmap是一個(gè)類似的替代品,是一個(gè)用于互聯(lián)網(wǎng)范圍的掃描工具。
-
ping:一個(gè)常用的網(wǎng)絡(luò)測(cè)試工具。通過交換ICMP的echo和reply報(bào)文來實(shí)現(xiàn)其功能。它在測(cè)量路由的RTT、丟包率以及檢測(cè)遠(yuǎn)端系統(tǒng)防火墻規(guī)則時(shí)很有用。ping的變種有更漂亮的界面(例如,noping)、多協(xié)議支持(例如,hping)或者并行探測(cè)能力(例如,fping)。
-
sprobe:一個(gè)啟發(fā)式推斷本地主機(jī)和任意遠(yuǎn)端IP地址之間的網(wǎng)絡(luò)帶寬瓶頸的命令行工具。它使用TCP三次握手機(jī)制來評(píng)估帶寬的瓶頸。它在檢測(cè)大范圍網(wǎng)絡(luò)性能和路由相關(guān)的問題時(shí)很有用。
-
traceroute:一個(gè)能發(fā)現(xiàn)從本地到遠(yuǎn)端主機(jī)的第三層路由/轉(zhuǎn)發(fā)路徑的網(wǎng)絡(luò)發(fā)現(xiàn)工具。它發(fā)送限制了TTL的探測(cè)報(bào)文,收集中間路由的ICMP反饋信息。它在排查低速網(wǎng)絡(luò)連接或者路由相關(guān)的問題時(shí)很有用。traceroute的變種有更好的RTT統(tǒng)計(jì)功能(例如,mtr)。
#p#
應(yīng)用日志解析器
在這個(gè)類別下的網(wǎng)絡(luò)監(jiān)測(cè)器把特定的服務(wù)器應(yīng)用程序作為目標(biāo)(例如,web服務(wù)器或者數(shù)據(jù)庫服務(wù)器)。由服務(wù)器程序產(chǎn)生或消耗的網(wǎng)絡(luò)流量通過它的日志被分析和監(jiān)測(cè)。不像前面提到的網(wǎng)絡(luò)層的監(jiān)控器,這個(gè)類別的工具能夠在應(yīng)用層面分析和監(jiān)控網(wǎng)絡(luò)流量。
-
GoAccess:一個(gè)針對(duì)Apache和Nginx服務(wù)器流量的交互式查看器?;趯?duì)獲取到的日志的分析,它能展示包括日訪問量、最多請(qǐng)求、客戶端操作系統(tǒng)、客戶端位置、客戶端瀏覽器等在內(nèi)的多個(gè)實(shí)時(shí)的統(tǒng)計(jì)信息,并以滾動(dòng)方式顯示。
-
mtop:一個(gè)面向MySQL/MariaDB服務(wù)器的命令行監(jiān)控器,它可以將成本最大的查詢和當(dāng)前數(shù)據(jù)庫服務(wù)器負(fù)載以可視化的方式顯示出來。它在您優(yōu)化MySQL服務(wù)器性能、調(diào)諧服務(wù)器參數(shù)時(shí)很有用。
-
ngxtop:一個(gè)面向Nginx和Apache服務(wù)器的流量監(jiān)測(cè)工具,能夠以類似top指令的方式可視化的顯示W(wǎng)eb服務(wù)器的流量。它解析web服務(wù)器的查詢?nèi)罩疚募⑹占硞€(gè)目的地或請(qǐng)求的流量統(tǒng)計(jì)信息。
總結(jié)
在這篇文章中,我展示了許多命令行式監(jiān)測(cè)工具,從最底層的包層面的監(jiān)控器到最高層應(yīng)用程序?qū)用娴木W(wǎng)絡(luò)監(jiān)控器。了解那個(gè)工具的作用是一回事,選擇哪個(gè) 工具使用又是另外一回事。單一的一個(gè)工具不能作為您每天使用的通用的解決方案。一個(gè)好的系統(tǒng)管理員應(yīng)該能決定哪個(gè)工具更適合當(dāng)前的環(huán)境。希望這個(gè)列表對(duì)此 有所幫助。