20個你可能不知道的 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 是一個控制檯應用,可以被用來實時地監控網絡流量和帶寬使用情況,它還通過提供兩個簡單易懂的圖表來對流量進行可視化。這個絕妙的網絡監控工具還可以在監控過程中切換被監控的設備,而這可以通過按左右箭頭來完成。

20個你可能不知道的 Linux 網絡工具

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

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

nload

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

3) slurm

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

20個你可能不知道的 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

20個你可能不知道的 Linux 網絡工具

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

man netstat

20個你可能不知道的 Linux 網絡工具

7) Netload

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

我們可以在 fedora 中使用 yum 來安裝 Netload,因爲它在 fedora 的默認軟件倉庫中。但假如你運行的是 CentOS 或 RHEL,則我們需要安裝 rpmforge 軟件倉庫

# 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,然後鍵入用戶名和密碼,我們便會看到如下圖所展示的信息:

20個你可能不知道的 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) 和 接口。一切設定完畢後,我們需要點擊 開始 按鈕。接着我們便會看到類似下面截圖的東西:

20個你可能不知道的 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

20個你可能不知道的 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

20個你可能不知道的 Linux 網絡工具

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

13) Netwatch

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

我們可以使用 yum 在 fedora 中安裝 Netwatch,因爲它在 fedora 的默認軟件倉庫中。但若你運行着 CentOS 或 RHEL , 我們需要安裝 rpmforge 軟件倉庫

# yum install netwatch

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

$ sudo apt-get install netdiag

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

$ sudo netwatch -e wlan2 -nt

20個你可能不知道的 Linux 網絡工具

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

14) Trafshow

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

我們可以使用 yum 在 fedora 中安裝 trafshow ,因爲它在 fedora 的默認軟件倉庫中。但若你正運行着 CentOS 或 RHEL , 我們需要安裝 rpmforge 軟件倉庫

# yum install trafshow

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

$ sudo apt-get install trafshow

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

$ sudo trafshow -i wlan2

20個你可能不知道的 Linux 網絡工具

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

$ sudo trafshow -i wlan2 tcp

20個你可能不知道的 Linux 網絡工具

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

15) Vnstat

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

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

# yum install vnstat

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

$ sudo apt-get install vnstat

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

$ vnstat

20個你可能不知道的 Linux 網絡工具

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

$ vnstat -l

20個你可能不知道的 Linux 網絡工具

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

20個你可能不知道的 Linux 網絡工具

16) tcptrack

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

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

$ sudo apt-get install tcptrack

我們可以通過 yum 在 fedora 中安裝它,因爲它在 fedora 的默認軟件倉庫中。但若你運行着 CentOS 或 RHEL 系統,我們需要安裝 rpmforge 軟件倉庫。爲此,我們需要運行下面的命令:

# 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

20個你可能不知道的 Linux 網絡工具

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

# tcptrack -i wlan2 port 80

20個你可能不知道的 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

20個你可能不知道的 Linux 網絡工具

18) bmon

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

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

$ sudo apt-get install bmon

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

$ bmon

20個你可能不知道的 Linux 網絡工具

19) tcpdump

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

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

20個你可能不知道的 Linux 網絡工具

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

$ sudo tcpdump -i wlan2 'port 80'

20個你可能不知道的 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 下的網絡負載監控工具,這對於系統管理員甚至是新手來說,都是很有幫助的。在這篇文章中介紹的每一個工具都具有其特點,不同的選項等,但最終它們都可以幫助你來監控你的網絡流量。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章