web-dev-qa-db-fra.com

Surveillez le volume du trafic réseau via l'interface

Existe-t-il un moyen de surveiller le trafic (par exemple, obtenir une vue en direct de l'utilisation) sur une interface réseau particulière?

Le problème ici est que l'ensemble d'outils sur la boîte est fixe, et est à peu près un déploiement RHEL en stock, donc les outils supplémentaires ne peuvent pas être utilisés.

Vous cherchez quelque chose de basique et généralement présent comme iostat ici.

18
BeeOnRope

Les données que vous voulez voir apparaissent dans le bon vieux ifconfig.

watch ifconfig eth0

ou pour faire ressortir les choses:

watch -n 1 -d ifconfig eth0
17
Joel K

J'utilise la commande iftop. Il affiche des statistiques en temps réel.

iftop -i eth0

Découvrez quelques captures d'écran ici:

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

16
Awi

Sans installer de nouveaux outils:

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

4
user239558

sur post-2015 ou Linux, cela pourrait être mieux 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

Il existe de nombreux utilitaires:

  1. Nethogs
  2. iptraf
  3. Iptables peut être une bonne solution, mais si vous utilisez un pare-feu, il sera un peu difficile de déplacer correctement les règles
2
dSoultanis

Vous pouvez également utiliser iptables pour faire une telle réflexion:

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

et

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

Ensuite, iptables -L -n -v vous affichera combien de paquets ont traversé l'interface, iptables -Z pour mettre ce nombre à zéro

2
philippe

Jetez un œil à ntop. Il fournit de nombreuses données détaillées.

1
Nicholas