GNU/Linux >> Tutoriels Linux >  >> Linux

Comment tracer l'activité réseau d'une commande ?

netstat pour la simplicité

Utilisation de netstat et grepping sur le PID ou le nom du processus :

# netstat -np --inet | grep "thunderbird"
tcp        0      0 192.168.134.142:45348   192.168.138.30:143      ESTABLISHED 16875/thunderbird
tcp        0      0 192.168.134.142:58470   192.168.138.30:443      ESTABLISHED 16875/thunderbird

Et vous pourriez utiliser watch pour les mises à jour dynamiques :

watch 'netstat -np --inet | grep "thunderbird"'

Avec :

  • -n  :Afficher les adresses numériques au lieu d'essayer de déterminer les noms symboliques d'hôte, de port ou d'utilisateur
  • -p :Affiche le PID et le nom du programme auquel appartient chaque socket.
  • --inet  :Afficher uniquement les sockets de protocole raw, udp et tcp.

tracer la verbosité

Vous avez dit avoir essayé le strace outil, mais avez-vous essayé l'option trace=network ?Notez que la sortie peut être assez détaillée, vous aurez donc peut-être besoin de grappin. Vous pouvez commencer par grepper sur "sin_addr".

 strace -f -e trace=network <your command> 2>&1 | grep sin_addr

Ou, pour un processus déjà en cours d'exécution, utilisez le PID :

 strace -f -e trace=network -p <PID> 2>&1 | grep sin_addr

sysdig vous permet de surveiller toute l'activité du noyau ou de plusieurs commandes exécutées sur votre système en une seule fois, y compris et sans s'y limiter, l'activité du réseau.

Comme la sortie peut être volumineuse, vous devez créer des filtres, la page par défaut pour les filtres les plus élémentaires est assez compréhensible.

Il a également l'avantage de ne pas être utilisé comme wrapper d'application comme dans strace , et cela peut être assez puissant.

À partir d'exemples Sysdig

Réseautage

Voir les principaux processus en termes d'utilisation de la bande passante du réseau

sysdig -c topprocs_net 

Afficher les données réseau échangées avec l'hôte192.168.0.1

En binaire :

sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1   

Au format ASCII :

sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1 

Voir les principaux ports de serveur local :

En termes de connexions établies :

sysdig -c fdcount_by fd.sport "evt.type=accept"   

En termes de nombre total d'octets :

sysdig -c fdbytes_by fd.sport 

Voir les meilleures IP clientes

En termes de connexions établies

sysdig -c fdcount_by fd.cip "evt.type=accept"   

En termes de nombre total d'octets

sysdig -c fdbytes_by fd.cip 

Liste toutes les connexions entrantes qui ne sont pas desservies par apache.

sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

Je créerais un nouvel espace de noms de réseau, le relierais au réseau réel, puis surveillerais le pont avec tcpdump .


Linux
  1. Comment renommer des fichiers sous Linux

  2. Comment utiliser la commande Su sous Linux

  3. Comment utiliser l'outil de ligne de commande sipcalc Linux

  4. Comment programmer une commande Rsync ?

  5. Comment quitter si une commande a échoué ?

Comment utiliser du Command sous Linux

Comment configurer la mise en réseau dans Vagrant

Comment utiliser la commande PS

Comment utiliser la commande TOP

Comment installer Sysdig pour surveiller votre système Linux

Comment tracer un programme Java ?