紅聯Linux門戶
Linux幫助

一些你可能不知道的Linux網絡工具

發布時間:2015-05-12 21:58:49來源:linux.cn作者:Linux中國

如果要在你的系統上監控網絡,那么使用命令行工具是非常實用的,并且對于 Linux 用戶來說,有著許許多多現成的工具可以使用,如: nethogs, ntopng, nload, iftop, iptraf, bmon, slurm, tcptrack, cbm, netwatch, collectl, trafshow, cacti, etherape, ipband, jnettop, netspeed 以及 speedometer。

鑒于世上有著許多的 Linux 專家和開發者,顯然還存在其他的網絡監控工具,但在這篇教程中,我不打算將它們所有包括在內。

上面列出的工具都有著自己的獨特之處,但歸根結底,它們都做著監控網絡流量的工作,只是通過各種不同的方法。例如 nethogs 可以被用來展示每個進程的帶寬使用情況,以防你想知道究竟是哪個應用在消耗了你的整個網絡資源; iftop 可以被用來展示每個套接字連接的帶寬使用情況,而像 nload 這類的工具可以幫助你得到有關整個帶寬的信息。


1) nethogs

nethogs 是一個免費的工具,當要查找哪個 PID (注:即 process identifier,進程 ID) 給你的網絡流量帶來了麻煩時,它是非常方便的。它按每個進程來分組帶寬,而不是像大多數的工具那樣按照每個協議或每個子網來劃分流量。它功能豐富,同時支持 IPv4 和 IPv6,并且我認為,若你想在你的 Linux 主機上確定哪個程序正消耗著你的全部帶寬,它是來做這件事的最佳的程序。

一個 Linux 用戶可以使用 nethogs 來顯示每個進程的 TCP 下載和上傳速率,可以使用命令 nethogs eth0 來監控一個指定的設備,上面的 eth0 是那個你想獲取信息的設備的名稱,你還可以得到有關正在傳輸的數據的傳輸速率信息。

對我而言, nethogs 是非常容易使用的,或許是因為我非常喜歡它,以至于我總是在我的 Ubuntu 12.04 LTS 機器中使用它來監控我的網絡帶寬。

例如要想使用混雜模式來嗅探,可以像下面展示的命令那樣使用選項 -p:

nethogs -p wlan0

假如你想更多地了解 nethogs 并深入探索它,那么請毫不猶豫地閱讀我們做的關于這個網絡帶寬監控工具的整個教程。


2) nload

nload 是一個控制臺應用,可以被用來實時地監控網絡流量和帶寬使用情況,它還通過提供兩個簡單易懂的圖表來對流量進行可視化。這個絕妙的網絡監控工具還可以在監控過程中切換被監控的設備,而這可以通過按左右箭頭來完成。

一些你可能不知道的Linux網絡工具

正如你在上面的截圖中所看到的那樣,由 nload 提供的圖表是非常容易理解的。nload 提供了有用的信息,也展示了諸如被傳輸數據的總量和最小/最大網絡速率等信息。

而更酷的是你只需要直接運行 nload 這個工具就行,這個命令是非常的短小且易記的:

nload

我很確信的是:我們關于如何使用 nload 的詳細教程將幫助到新的 Linux 用戶,甚至可以幫助那些正尋找關于 nload 信息的老手。


3) slurm

slurm 是另一個 Linux 網絡負載監控工具,它以一個不錯的 ASCII 圖來顯示結果,它還支持許多按鍵用以交互,例如 c 用來切換到經典模式, s 切換到分圖模式, r 用來重繪屏幕, L 用來啟用 TX/RX 燈(注:TX,發送流量;RX,接收流量) ,m 用來在經典分圖模式和大圖模式之間進行切換, q 退出 slurm。

一些你可能不知道的Linux網絡工具

在網絡負載監控工具 slurm 中,還有許多其它的按鍵可用,你可以很容易地使用下面的命令在 man 手冊中學習它們。

man slurm

slurm 在 Ubuntu 和 Debian 的官方軟件倉庫中可以找到,所以使用這些發行版本的用戶可以像下面展示的那樣,使用 apt-get 安裝命令來輕松地下載它:

sudo apt-get install slurm

我們已經在一個教程中對 slurm 的使用做了介紹,不要忘記和其它使用 Linux 的朋友分享這些知識。


4) iftop

當你想顯示連接到網卡上的各個主機的帶寬使用情況時,iftop 是一個非常有用的工具。根據 man 手冊,iftop 在一個指定的接口或在它可以找到的第一個接口(假如沒有任何特殊情況,它應該是一個對外的接口)上監聽網絡流量,并且展示出一個表格來顯示當前的一對主機間的帶寬使用情況。

通過在虛擬終端中使用下面的命令,Ubuntu 和 Debian 用戶可以在他們的機器中輕易地安裝 iftop:

sudo apt-get install iftop

在你的機器上,可以使用下面的命令通過 yum 來安裝 iftop:

yum -y install iftop


5) collectl

collectl 可以被用來收集描述當前系統狀態的數據,并且它支持如下兩種模式:

記錄模式
回放模式

記錄模式 允許從一個正在運行的系統中讀取數據,然后將這些數據要么顯示在終端中,要么寫入一個或多個文件或一個套接字中。

回放模式

根據 man 手冊,在這種模式下,數據從一個或多個由記錄模式生成的數據文件中讀取。

Ubuntu 和 Debian 用戶可以在他們的機器上使用他們默認的包管理器來安裝 colletcl。下面的命令將為他們做這個工作:

sudo apt-get install collectl

還可以使用下面的命令來安裝 collectl, 因為對于這些發行版本(注:這里指的是用 yum 作為包管理器的發行版本),在它們官方的軟件倉庫中也含有 collectl:

yum install collectl


6) Netstat

Netstat 是一個用來監控傳入和傳出的網絡數據包統計數據的接口統計數據命令行工具。它會顯示 TCP 連接 (包括上傳和下行),路由表,及一系列的網絡接口(網卡或者SDN接口)和網絡協議統計數據。

Ubuntu 和 Debian 用戶可以在他們的機器上使用默認的包管理器來安裝 netstat。Netsta 軟件被包括在 net-tools 軟件包中,并可以在 shell 或虛擬終端中運行下面的命令來安裝它:

sudo apt-get install net-tools

CentOS, Fedora, RHEL 用戶可以在他們的機器上使用默認的包管理器來安裝 netstat。Netstat 軟件被包括在 net-tools 軟件包中,并可以在 shell 或虛擬終端中運行下面的命令來安裝它:

yum install net-tools

運行下面的命令使用 Netstat 來輕松地監控網絡數據包統計數據:

netstat

一些你可能不知道的Linux網絡工具

更多的關于 netstat 的信息,我們可以簡單地在 shell 或終端中鍵入 man netstat 來了解:

man netstat

一些你可能不知道的Linux網絡工具


7) Netload

netload 命令只展示一個關于當前網絡荷載和自從程序運行之后傳輸數據總的字節數目的簡要報告,它沒有更多的功能。它是 netdiag 軟件的一部分。

我們可以在 fedora 中使用 yum 來安裝 Netload,因為它在 fedora 的默認軟件倉庫中。但假如你運行的是 CentOS 或 RHEL,則我們需要安裝 rpmforge 軟件倉庫(http://pkgs.org/centos-7/repoforge-x86_64/netwatch-1.0c-1.el7.rf.x86_64.rpm.html)。

# yum install netdiag

Netload 是默認倉庫中 netdiag 的一部分,我們可以輕易地使用下面的命令來利用 apt 包管理器安裝 netdiag:

$ sudo apt-get install netdiag

為了運行 netload,我們需要確保選擇了一個正在工作的網絡接口的名稱,如 eth0, eh1, wlan0, mon0等,然后在 shell 或虛擬終端中運行下面的命令:

$ netload wlan2

注意: 請將上面的 wlan2 替換為你想使用的網絡接口名稱,假如你想通過掃描了解你的網絡接口名稱,可以在一個虛擬終端或 shell 中運行 ip link show 命令。


8) Nagios

Nagios 是一個領先且功能強大的開源監控系統,它使得網絡或系統管理員可以在服務器的各種問題影響到服務器的主要事務之前,發現并解決這些問題。 有了 Nagios 系統,管理員便可以在一個單一的窗口中監控遠程的 Linux 、Windows 系統、交換機、路由器和打印機等。它會顯示出重要的警告并指出在你的網絡或服務器中是否出現某些故障,這可以間接地幫助你在問題發生前就著手執行補救行動。

Nagios 有一個 web 界面,其中有一個圖形化的活動監視器。通過瀏覽網頁 http://localhost/nagios/ 或 http://localhost/nagios3/ 便可以登錄到這個 web 界面。假如你在遠程的機器上進行操作,請使用你的 IP 地址來替換 localhost,然后鍵入用戶名和密碼,我們便會看到如下圖所展示的信息:

一些你可能不知道的Linux網絡工具


9) EtherApe

EtherApe 是一個針對 Unix 的圖形化網絡監控工具,它仿照了 etherman 軟件。它支持鏈路層、IP 和 TCP 等模式,并支持以太網, FDDI, 令牌環, ISDN, PPP, SLIP 及 WLAN 設備等接口,以及一些封裝格式。主機和連接隨著流量和協議而改變其尺寸和顏色。它可以過濾要展示的流量,并可從一個文件或運行的網絡中讀取數據包。

在 CentOS、Fedora、RHEL 等 Linux 發行版本中安裝 etherape 是一件容易的事,因為在它們的官方軟件倉庫中就可以找到 etherape。我們可以像下面展示的命令那樣使用 yum 包管理器來安裝它:

yum install etherape

我們也可以使用下面的命令在 Ubuntu、Debian 及它們的衍生發行版本中使用 apt 包管理器來安裝 EtherApe :

sudo apt-get install etherape

在 EtherApe 安裝到你的系統之后,我們需要像下面那樣以 root 權限來運行 etherape:

sudo etherape

然后, etherape 的 圖形用戶界面 便會被執行。接著,在菜單上面的 捕捉 選項下,我們可以選擇 模式(IP,鏈路層,TCP) 和 接口。一切設定完畢后,我們需要點擊 開始 按鈕。接著我們便會看到類似下面截圖的東西:

一些你可能不知道的Linux網絡工具


10) tcpflow

tcpflow 是一個命令行工具,它可以捕捉 TCP 連接(流)的部分傳輸數據,并以一種方便協議分析或除錯的方式來存儲數據。它重構了實際的數據流并將每個流存儲在不同的文件中,以備日后的分析。它能識別 TCP 序列號并可以正確地重構數據流,不管是在重發還是亂序發送狀態下。

通過 apt 包管理器在 Ubuntu 、Debian 系統中安裝 tcpflow 是很容易的,因為默認情況下在官方軟件倉庫中可以找到它。

$ sudo apt-get install tcpflow

我們可以使用下面的命令通過 yum 包管理器在 Fedora 、CentOS 、RHEL 及它們的衍生發行版本中安裝 tcpflow:

# yum install tcpflow

假如在軟件倉庫中沒有找到它或不能通過 yum 包管理器來安裝它,則我們需要像下面展示的那樣從 http://pkgs.repoforge.org/tcpflow/ 上手動安裝它:

假如你運行 64 位的 PC:

# yum install --nogpgcheck http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.x86_64.rpm

假如你運行 32 位的 PC:

# yum install --nogpgcheck http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.i686.rpm

我們可以使用 tcpflow 來捕捉全部或部分 tcp 流量,并以一種簡單的方式把它們寫到一個可讀的文件中。下面的命令就可以完成這個事情,但我們需要在一個空目錄中運行下面的命令,因為它將創建諸如 x.x.x.x.y-a.a.a.a.z 格式的文件,運行之后,只需按 Ctrl-C 便可停止這個命令。

$ sudo tcpflow -i eth0 port 8000

注意:請將上面的 eth0 替換為你想捕捉的網卡接口名稱。


11) IPTraf

IPTraf 是一個針對 Linux 平臺的基于控制臺的網絡統計應用。它生成一系列的圖形,如 TCP 連接的包/字節計數、接口信息和活動指示器、 TCP/UDP 流量故障以及局域網內設備的包/字節計數。

在默認的軟件倉庫中可以找到 IPTraf,所以我們可以使用下面的命令通過 apt 包管理器輕松地安裝 IPTraf:

$ sudo apt-get install iptraf

我們可以使用下面的命令通過 yum 包管理器輕松地安裝 IPTraf:

# yum install iptraf

我們需要以管理員權限來運行 IPTraf,并帶有一個有效的網絡接口名。這里,我們的網絡接口名為 wlan2,所以我們使用 wlan2 來作為參數:

$ sudo iptraf wlan2

一些你可能不知道的Linux網絡工具

開始通常的網絡接口統計,鍵入:

# iptraf -g

查看接口 eth0 的詳細統計信息,使用:

# iptraf -d eth0

查看接口 eth0 的 TCP 和 UDP 監控信息,使用:

# iptraf -z eth0

查看接口 eth0 的包的大小和數目,使用:

# iptraf -z eth0

注意:請將上面的 eth0 替換為你的接口名稱。你可以通過運行ip link show命令來檢查你的接口。


12) Speedometer

Speedometer 是一個小巧且簡單的工具,它只用來繪出一幅包含有通過某個給定端口的上行、下行流量的好看的圖。

在默認的軟件倉庫中可以找到 Speedometer ,所以我們可以使用下面的命令通過 yum 包管理器輕松地安裝 Speedometer:

# yum install speedometer

我們可以使用下面的命令通過 apt 包管理器輕松地安裝 Speedometer:

$ sudo apt-get install speedometer

Speedometer 可以簡單地通過在 shell 或虛擬終端中執行下面的命令來運行:

$ speedometer -r wlan2 -t wlan2

一些你可能不知道的Linux網絡工具

注:請將上面的 wlan2 替換為你想要使用的網絡接口名稱。


13) Netwatch

Netwatch 是 netdiag 工具集里的一部分,它也顯示當前主機和其他遠程主機的連接情況,以及在每個連接中數據傳輸的速率。

我們可以使用 yum 在 Fedora 中安裝 Netwatch,因為它在 fedora 的默認軟件倉庫中。但若你運行著 CentOS 或 RHEL , 我們需要安裝 rpmforge 軟件倉庫(http://pkgs.org/centos-7/repoforge-x86_64/netwatch-1.0c-1.el7.rf.x86_64.rpm.html)。

# yum install netwatch

Netwatch 是 netdiag 的一部分,可以在默認的軟件倉庫中找到,所以我們可以輕松地使用下面的命令來利用 apt 包管理器安裝 netdiag:

$ sudo apt-get install netdiag

為了運行 netwatch, 我們需要在虛擬終端或 shell 中執行下面的命令:

$ sudo netwatch -e wlan2 -nt

一些你可能不知道的Linux網絡工具

注意: 請將上面的 wlan2 替換為你想使用的網絡接口名稱,假如你想通過掃描了解你的網絡接口名稱,可以在一個虛擬終端或 shell 中運行 ip link show 命令。


14) Trafshow

Trafshow 同 netwatch 和 pktstat 一樣,可以報告當前活動的連接里使用的協議和每個連接中數據傳輸的速率。它可以使用 pcap 類型的過濾器來篩選出特定的連接。

我們可以使用 yum 在 fedora 中安裝 trafshow ,因為它在 fedora 的默認軟件倉庫中。但若你正運行著 CentOS 或 RHEL , 我們需要安裝 rpmforge 軟件倉庫(http://pkgs.org/centos-6/epel-x86_64/trafshow-5.2.3-6.el6.x86_64.rpm.html)。

# yum install trafshow

Trafshow 在默認倉庫中可以找到,所以我們可以輕松地使用下面的命令來利用 apt 包管理器安裝它:

$ sudo apt-get install trafshow

為了使用 trafshow 來執行監控任務,我們需要在虛擬終端或 shell 中執行下面的命令:

$ sudo trafshow -i wlan2

一些你可能不知道的Linux網絡工具

為了專門監控 tcp 連接,如下面一樣添加上 tcp 參數:

$ sudo trafshow -i wlan2 tcp

一些你可能不知道的Linux網絡工具

注意: 請將上面的 wlan2 替換為你想使用的網絡接口名稱,假如你想通過掃描了解你的網絡接口名稱,可以在一個虛擬終端或 shell 中運行 ip link show 命令。


15) Vnstat

與大多數的其他工具相比,Vnstat 有一點不同。實際上它運行著一個后臺服務或守護進程,并時刻記錄著傳輸數據的大小。另外,它可以被用來生成一個網絡使用歷史記錄的報告。

我們需要開啟 EPEL 軟件倉庫,然后運行 yum 包管理器來安裝 vnstat。

# yum install vnstat

Vnstat 在默認軟件倉庫中可以找到,所以我們可以使用下面的命令運行 apt 包管理器來安裝它:

$ sudo apt-get install vnstat

不帶有任何選項運行 vnstat 將簡單地展示出從該守護進程運行后數據傳輸的總量。

$ vnstat

一些你可能不知道的Linux網絡工具

為了實時地監控帶寬使用情況,使用 ‘-l’ 選項(live 模式)。然后它將以一種非常精確的方式來展示上行和下行數據所使用的帶寬總量,但不會顯示任何有關主機連接或進程的內部細節。

$ vnstat -l

一些你可能不知道的Linux網絡工具

完成了上面的步驟后,按 Ctrl-C 來停止,這將會得到如下類型的輸出:

一些你可能不知道的Linux網絡工具


16) tcptrack

tcptrack 可以展示 TCP 連接的狀態,它在一個給定的網絡端口上進行監聽。tcptrack 監控它們的狀態并展示出排序且不斷更新的列表,包括來源/目標地址、帶寬使用情況等信息,這與 top 命令的輸出非常類似 。

鑒于 tcptrack 在軟件倉庫中,我們可以輕松地在 Debian、Ubuntu 系統中從軟件倉庫使用 apt 包管理器來安裝 tcptrack。為此,我們需要在 shell 或虛擬終端中執行下面的命令:

$ sudo apt-get install tcptrack

我們可以通過 yum 在 Fedora 中安裝它,因為它在 fedora 的默認軟件倉庫中。但若你運行著 CentOS 或 RHEL 系統,我們需要安裝 rpmforge 軟件倉庫(http://pkgs.org/centos-6/repoforge-x86_64/tcptrack-1.4.0-1.el6.rf.x86_64.rpm.html)。為此,我們需要運行下面的命令:

# wget http://apt.sw.be/RedHat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
# rpm -Uvh rpmforge-release*rpm
# yum install tcptrack

注:這里我們下載了 rpmforge-release 的當前最新版本,即 0.5.3-1,你總是可以從 rpmforge 軟件倉庫中下載其最新版本,并請在上面的命令中替換為你下載的版本。

tcptrack 需要以 root 權限或超級用戶身份來運行。執行 tcptrack 時,我們需要帶上要監視的網絡接口 TCP 連接狀況的接口名稱。這里我們的接口名稱為 wlan2,所以如下面這樣使用:

sudo tcptrack -i wlan2

一些你可能不知道的Linux網絡工具

假如你想監控特定的端口,則使用:

# tcptrack -i wlan2 port 80

一些你可能不知道的Linux網絡工具

請替換上面的 80 為你想要監控的端口號。注意: 請將上面的 wlan2 替換為你想使用的網絡接口名稱,假如你想通過掃描了解你的網絡接口名稱,可以在一個虛擬終端或 shell 中運行 ip link show 命令。


17) CBM

CBM ( Color Bandwidth Meter) 可以展示出當前所有網絡設備的流量使用情況。這個程序是如此的簡單,以至于都可以從它的名稱中看出其功能。CBM 的源代碼和新版本可以在 http://www.isotton.com/utils/cbm/ 上找到。

鑒于 CBM 已經包含在軟件倉庫中,我們可以簡單地使用 apt 包管理器從 Debian、Ubuntu 的軟件倉庫中安裝 CBM。為此,我們需要在一個 shell 窗口或虛擬終端中運行下面的命令:

$ sudo apt-get install cbm

我們只需使用下面展示的命令來在 shell 窗口或虛擬終端中運行 cbm:

$ cbm

一些你可能不知道的Linux網絡工具


18) bmon

Bmon(https://github.com/tgraf/bmon/) ( Bandwidth Monitoring) ,是一個用于調試和實時監控帶寬的工具。這個工具能夠檢索各種輸入模塊的統計數據。它提供了多種輸出方式,包括一個基于 curses 庫的界面,輕量級的HTML輸出,以及 ASCII 輸出格式。

bmon 可以在軟件倉庫中找到,所以我們可以通過使用 apt 包管理器來在 Debian、Ubuntu 中安裝它。為此,我們需要在一個 shell 窗口或虛擬終端中運行下面的命令:

$ sudo apt-get install bmon

我們可以使用下面的命令來運行 bmon 以監視我們的網絡狀態:

$ bmon

一些你可能不知道的Linux網絡工具


19) tcpdump

TCPDump(http://www.tcpdump.org/) 是一個用于網絡監控和數據獲取的工具。它可以為我們節省很多的時間,并可用來調試網絡或服務器的相關問題。它可以打印出在某個網絡接口上與布爾表達式相匹配的數據包所包含的內容的一個描述。

tcpdump 可以在 Debian、Ubuntu 的默認軟件倉庫中找到,我們可以簡單地以 sudo 權限使用 apt 包管理器來安裝它。為此,我們需要在一個 shell 窗口或虛擬終端中運行下面的命令:

$ sudo apt -get install tcpdump

tcpdump 也可以在 Fedora、CentOS、RHEL 的軟件倉庫中找到。我們可以像下面一樣通過 yum 包管理器來安裝它:

# yum install tcpdump

tcpdump 需要以 root 權限或超級用戶來運行,我們需要帶上我們想要監控的 TCP 連接的網絡接口名稱來執行 tcpdump 。在這里,我們有 wlan2 這個網絡接口,所以可以像下面這樣使用:

$ sudo tcpdump -i wlan2

一些你可能不知道的Linux網絡工具

假如你只想監視一個特定的端口,則可以運行下面的命令。下面是一個針對 80 端口(網絡服務器)的例子:

$ sudo tcpdump -i wlan2 'port 80'

一些你可能不知道的Linux網絡工具


20) ntopng

[ntopng][20] 是 ntop 的下一代版本。它是一個用于展示網絡使用情況的網絡探頭,在一定程度上它與 top 針對進程所做的工作類似。ntopng 基于 libpcap 并且它以可移植的方式被重寫,以達到可以在每一個 Unix 平臺 、 MacOSX 以及 Win32 上運行的目的。

為了在 Debian,Ubuntu 系統上安裝 ntopng,首先我們需要安裝 編譯 ntopng 所需的依賴軟件包。你可以通過在一個 shell 窗口或一個虛擬終端中運行下面的命令來安裝它們:

$ sudo apt-get install libpcap-dev libglib2.0-dev libgeoip-dev redis-server wget libxml2-dev build-essential checkinstall

現在,我們需要像下面一樣針對我們的系統手動編譯 ntopng :

$ sudo wget http://sourceforge.net/projects/ntop/files/ntopng/ntopng-1.1_6932.tgz/download
$ sudo tar zxfv ntopng-1.1_6932.tgz
$ sudo cd ntopng-1.1_6932
$ sudo ./configure
$ sudo make
$ sudo make install

這樣,在你的 Debian 或 Ubuntu 系統上應該已經安裝上了你編譯的 ntopng 。

我們已經有了有關 ntopng 的使用方法的教程,它既可以在命令行也可以在 Web 界面中使用,我們可以前往這些教程來獲得有關 ntopng 的知識。


結論

在這篇文章中,我們介紹了一些在 Linux 下的網絡負載監控工具,這對于系統管理員甚至是新手來說,都是很有幫助的。在這篇文章中介紹的每一個工具都具有其特點,不同的選項等,但最終它們都可以幫助你來監控你的網絡流量。


Ubuntu終端下Nethogs命令查看網絡帶寬:http://www.4179693.live/linux/10969.html

在Linux中如何通過nload來監控網絡使用情況:http://www.4179693.live/linux/10051.html

Linux實時顯示網卡流量的工具nload:http://www.4179693.live/linux/3320.html

VMware+Ubuntu環境安裝配置SLURM:http://www.4179693.live/linux/1910.html

Linux下監控網卡流量的軟件iftop:http://www.4179693.live/linux/7112.html

使用netstat檢測及監測網絡連接:http://www.4179693.live/linux/2527.html

搭建基于Nagios的監控系統-之監控遠程Linux服務器:http://www.4179693.live/linux/10433.html

601268股票行情中心