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.
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
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/
Sans installer de nouveaux outils:
while ifconfig eth0 | grep 'RX bytes'; do sleep 10; done
sur post-2015 ou Linux, cela pourrait être mieux watch -n1 -d ip -s link show [interface]
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;
Il existe de nombreux utilitaires:
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
Jetez un œil à ntop
. Il fournit de nombreuses données détaillées.