web-dev-qa-db-ja.com

インターフェイスを介してネットワークトラフィック量を監視する

特定のネットワークインターフェイス(eth0など)を介してトラフィックを監視する(たとえば、使用状況のライブビューを取得する)方法はありますか?

ここでの問題は、ボックス上のツールのセットが修正されており、RHELの標準的な展開であるため、アドオンツールを使用できないことです。

ここではiostatのような基本的で通常存在するものを探しています。

18
BeeOnRope

見たいデータは古き良きifconfigに現れます。

watch ifconfig eth0

または物事をより際立たせるために:

watch -n 1 -d ifconfig eth0
17
Joel K

Iftopコマンドを使用します。リアルタイムで統計を表示します。

iftop -i eth0

ここでいくつかのシーンショットをチェックアウトしてください:

http://www.thegeekstuff.com/2008/12/iftop-guide-display-network-interface-bandwidth-usage-on-linux/

16
Awi

新しいツールをインストールせずに:

while ifconfig eth0 | grep 'RX bytes'; do sleep 10; done

4
user239558

2015年以降のLinuxでは、これが良いかもしれませんwatch -n1 -d ip -s link show [interface]

4
massemanet
function humanValue()
{
    h=( '' K M G T P )
    i=1; v=$(( $1 * 8 ))
    while [ $v -gt $(( 1 << 10 * i )) ]; do let i++; done;
    echo -n "$(( $v >> 10 * --i )) ${h[i]}b/s";
}
ifaces=$(ip addr | grep -E "^[0-9]:" | cut -d" " -f2 | tr -d \:)
declare -A RX2 TX2;
while sleep 1; 
do
    date 
    for INTERFACE in $ifaces;
    do
        RX1=$(cat /sys/class/net/${INTERFACE}/statistics/rx_bytes)
        TX1=$(cat /sys/class/net/${INTERFACE}/statistics/tx_bytes)
        DOWN=$(( RX1 - RX2[$INTERFACE] ))
        UP=$(( TX1 - TX2[$INTERFACE] ))
        RX2[$INTERFACE]=$RX1; TX2[$INTERFACE]=$TX1
        echo -e "[ $INTERFACE:\tRX: $(humanValue $DOWN)\t|\tTX: $(humanValue $UP) ]"
    done;
done;
3
ton

ユーティリティはたくさんあります:

  1. Nethogs
  2. iptraf
  3. Iptablesは良い解決策になる可能性がありますが、ファイアウォールのセットアップを使用している場合、ルールを正しく再配置するのは少し難しいでしょう
2
dSoultanis

Iptablesを使用して、そのようなことを考えることもできます。

iptables -A INPUT -p tcp --dport $port -i eth0

そして

iptables -A OUTPUT -p tcp --sport $port -i eth0

次に、iptables -L -n -vは、インターフェースを通過したパケット数を出力します。iptables-Zは、このカウントをゼロにします。

2
philippe

ntopをご覧ください。多くの詳細なデータを提供します。

1
Nicholas