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


17

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, par exemple eth0?

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.


1
Jetez un œil à stackoverflow.com/questions/596590/… . Certaines des suggestions à ce sujet devraient être utiles.
Andy Smith

D'oh, la recherche échoue (et j'ai essayé). Pour être honnête, je pense que c'est une question de défaut de serveur, pas une question SO :)
BeeOnRope

Réponses:


15

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

Merci - ceci en plus du commentaire de @ user239558 était juste. J'accepte votre réponse puisque vous avez été le premier à le mentionner ifconfig.
BeeOnRope

Repérez. C'est quelque chose que je cherchais et bien qu'il y ait beaucoup de questions similaires à cela sur différents forums, c'est la première réponse que j'ai trouvée qui cloue.
Hazok

ifconfig n'est pas dans le chemin par défaut. / sbin / ifconfig peut être requis.
kevinf


4

Sans installer de nouveaux outils:

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


4

sur post-2015 ou Linux, cela pourrait être mieux watch -n1 -d ip -s link show [interface]


2

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

iptraf est exactement ce que je cherchais. Mais sa dernière version semble être dans IPTraf 3.0.0 - 19 septembre 2005. cela peut-il être un problème?
Al-Alamin

2

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


La chaîne de sortie devrait avoir -o comme interface, -i est illégal
drake7707

2
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;

1

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.