Linux下統計高速網路流量方法如下:
在Linux中有很多的流量監控工具,它們可以監控、分類網路流量,以花哨的圖形用戶界面提供實時流量分析報告。大多數這些工具(例如:ntopng,iftop )都是基於libpcap 庫的,這個函數庫是用來截取流經網卡的數據包的,可在用戶空間用來監視分析網路流量。盡管這些工具功能齊全,然而基於libpcap庫的流量監控工具無法處理高速(Gb以上)的網路介面,原因是由於在用戶空間做數據包截取的系統開銷過高所致。
在本文中我們介紹一種簡單的Shell 腳本,它可以監控網路流量而且不依賴於緩慢的libpcap庫。這些腳本支持Gb以上規模的高速網路介面,如果你對「匯聚型」的網路流量感興趣的話,它們可統計每個網路介面上的流量。
腳本主要是基於sysfs虛擬文件系統,這是由內核用來將設備或驅動相關的信息輸出到用戶空間的一種機制。網路介面的相關分析數據會通過「/sys/class/net/<ethX>/statistics」輸出。
舉個例子,eth0的網口上分析報告會輸出到這些文件中:
/sys/class/net/eth0/statistics/rx_packets: 收到的數據包數據
/sys/class/net/eth0/statistics/tx_packets: 傳輸的數據包數量
/sys/class/net/eth0/statistics/rx_bytes: 接收的位元組數
/sys/class/net/eth0/statistics/tx_bytes: 傳輸的位元組數
/sys/class/net/eth0/statistics/rx_dropped: 收包時丟棄的數據包
/sys/class/net/eth0/statistics/tx_dropped: 發包時丟棄的數據包
這些數據會根據內核數據發生變更的時候自動刷新。因此,你可以編寫一系列的腳本進行分析並計算流量統計。下面就是這樣的腳本(感謝 joemiller 提供)。第一個腳本是統計每秒數據量,包含接收(RX)或發送(TX)。而後面的則是一個描述網路傳輸中的接收(RX)發送(TX)帶寬。這些腳本中安裝不需要任何的工具。
測量網口每秒數據包:
#!/bin/bash
INTERVAL="1" #update interval in seconds
if [ -z "$1" ]; then
echo
echousage: $0 [network-interface]
echo
echoe.g. $0 eth0
echo
echoshows packets-per-second
exit
fi
IF=$1
while true
do
R1=`cat/sys/class/net/$1/statistics/rx_packets`
T1=`cat/sys/class/net/$1/statistics/tx_packets`
sleep$INTERVAL
R2=`cat/sys/class/net/$1/statistics/rx_packets`
T2=`cat/sys/class/net/$1/statistics/tx_packets`
TXPPS=`expr$T2 - $T1`
RXPPS=`expr$R2 - $R1`
echo"TX $1: $TXPPS pkts/s RX $1: $RXPPS pkts/s"
done
網路帶寬測量
#!/bin/bash
INTERVAL="1" #update interval in seconds
if [ -z"$1" ]; then
echo
echousage: $0 [network-interface]
echo
echoe.g. $0 eth0
echo
exit
fi
IF=$1
while true
do
R1=`cat/sys/class/net/$1/statistics/rx_bytes`
T1=`cat/sys/class/net/$1/statistics/tx_bytes`
sleep$INTERVAL
R2=`cat/sys/class/net/$1/statistics/rx_bytes`
T2=`cat/sys/class/net/$1/statistics/tx_bytes`
TBPS=`expr$T2 - $T1`
RBPS=`expr$R2 - $R1`
TKBPS=`expr$TBPS / 1024`
RKBPS=`expr$RBPS / 1024`
echo"TX $1: $TKBPS kb/s RX $1: $RKBPS kb/s"
done
下面的屏幕截圖顯示了上面的兩個腳本的輸出。
② Linux下查看網卡流量方法
Linux通過vnstat查看網卡流量
直接運行
yum install vnstat -y
安裝完後測試:
源碼編譯方式安裝vnstat
適用於個別系統無版法yum安裝的查看網卡流量情況。
wget http://humdi.net/vnstat/vnstat-1.10.tar.gz
tar xvzf vnstat-1.10.tar.gz
cd vnstat-1.10
make && make install
③ linux下怎麼查看某個埠的流量,要做一個軟體顯示埠號和這個埠的流量 例如21埠的流量是多少
使用iptraf就可以實現各個埠流量顯示
yum-yinstalliptraf
④ 查看linux網路流量及帶寬
在類Unix系統中可以使用top查看系統資源、進程、內存佔用等信息。查看網路狀態可以使用netstat、nmap等工具。若要查看實時的網路流量,監控TCP/IP連接等,則可以使用iftop。
iftop類似於top的實時流量監控工具,可以用來監控網卡的實時流量(可以指定網段)、反向解析IP、顯示埠信息等。
查看流量是從哪些埠發送出去的:
# iftop -P
-P 選項會在iftop 的輸出結果中開啟埠顯示
界面上面顯示的是類似刻度尺的刻度范圍,為顯示流量圖形的長條作標尺用的。
中間的<= =>這兩個左右箭頭,表示的是流量的方向。
TX:發送流量
RX:接收流量
TOTAL:總流量
Cumm:運行iftop到目前時間的總流量
peak:流量峰值
rates:分別表示過去 2s 10s 40s 的平均流量
要找到運行在該埠的進程,那麼可以用netstat 或者lsof 來找到相應的進程。
使用netstat 命令來找到運行在10910這個埠上的進程:
# netstat -tunp | grep 10910
可以使用lsof 命令來找到運行在10909這個埠上的進程:
# lsof -i:10909
查看進程PID為51919的應用程序:
# ps -ef |grep 51919
⑤ 如何查看Linux伺服器中,異常流量來自哪個IP
Linux下使用iftop工具結合iptables服務來解決帶寬資源被惡意請求滿的問題,主要通過2個步驟來實現;
1. 使用iftop工具查出來是哪些個IP地址在請求主機的帶寬資源,找出耗帶寬的元兇
2. 找出耗帶寬的IP地址或者段,分析是out方向還是in方向,使用iptables規則來進行控制
具體的詳細操作方法如下;
一但出現帶寬被惡意請求,在帶寬被請滿的情況下基本上很難通過網路登入到伺服器上進行操作跟維護,這時我們需要通過阿里雲提供的「連接管理終端」服務來登入系統
一般建議在主機正常的時候直接在伺服器內部安裝好iftop工具,這樣出現惡意請求的時候直接可以使用該工具來進行排查,下面介紹下iftop的2中安裝方法
1.使用yum 安裝iftop工具
使用yum安裝的話比較簡單,只要直接執行 yum install iftop –y命令即可,如果沒問題的話系統就會自動執行安裝,但是有使用yum可能安裝不了,這時就需要使用編譯安裝了
2.編譯安裝iftop工具
(1)下載iftop工具的源碼包;
http://oss.aliyuncs.com/aliyunecs/iftop-0.17.tar.gz
(2)CentOS下安裝所需的依賴包
yum install flex byacc libpcap ncursesncurses-devel libpcap-devel
(3 解壓縮下載的iftop文件
tarzxvf iftop-0.17.tar.gz
(4 進入到解壓的的iftop目錄中
cdiftop-0.17
配置並制定安裝目錄為/usr/local/iftop目錄下
(5./configure –prefix=/usr/local/iftop
(6)編譯並安裝
make && make install
安裝完成以後直接使用/usr/local/iftop/sbin/iftop 啟動iftop程序查看流量使用情況,如果想使用iftop的方式直接開啟程序,需要將iftop的程序添加到環境變數中即可
結合使用iptables服務來限制惡意請求的流量;
iftop –i eth1 查看eth1這塊外網網卡的流量使用情況
通過上面這張信息很清楚的看到,121.199這台伺服器一直往192.230.123.101 這個地址發送流量,而且出去產生的流量相當大,幾乎把整個出網帶寬都給耗盡了
查到了惡意請求的原因跟目標主機以後,我們就可以使用iptables服務來對這種惡意行為進行限制了,因為從查看到的數據看主要的流量是從out方向出去的,那就直接在OUT方向設置策略
Iptables -A OUTPUT -d 192.230.123.101 –j REJECT
這里可能還會發現一個情況就是禁用了這個1個IP以後可能這個段的其它IP地址都有可能馬上就接上繼續請求,那就可以針對一個段來進行限制
iptables-A OUTPUT -d 192.230.0.0/16 -j REJECT
策略加上以後可以再使用iftop –i eth1 來查看流量的請求情況;
可以查看到流量已經恢復了正常,之前的惡意請求的地址都已經被防火牆給屏蔽了,效果比較好
另外iftop還有很多的參數可以實現比較多的功能,有時間的話可以研究研究,對排查網路流量攻擊以及掌控流量使用很有幫助的
⑥ 百兆網卡跑多少流量,網卡就算滿了,在linux下怎麼查看網卡是否跑滿了
網卡計量用的是b\bit,和我們通常計量的B\byte換算關系是8:1,所以100M的網卡跑12M左右達到最大值。查看linux下網路流量可以使用iftop ,可以精確的看到每個IP的流量。