web-dev-qa-db-fra.com

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

Je veux retracer l'activité de mise en réseau d'une commande, j'ai essayé tcpdump et strace sans succès.

Par exemple, si j'installe un package ou que j'utilise une commande qui tente d'atteindre un site, je souhaite afficher cette activité de mise en réseau (le site qu'il tente d'atteindre).

Je suppose que nous pouvons le faire en utilisant tcpdump. J'ai essayé mais il suit toute l'activité de mise en réseau de mon système. Supposons que si j'exécute plusieurs commandes liées à la mise en réseau et que je souhaite suivre uniquement une activité de mise en réseau de commandes particulière, il est difficile de trouver la solution exacte.

Y-a-t-il un moyen de faire ça?

MISE À JOUR:

Je ne veux pas suivre tout ce qui se passe sur mon interface réseau. Je veux juste suivre l'activité de mise en réseau de la commande (pour un exemple #yum install -y vim). Tels que le site qu'il essaie d'atteindre.

14
Buvanesh Kumar

netstat pour plus de 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 pouvez 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: Affiche uniquement les sockets de protocole raw, udp et tcp.

lutte pour la verbosité

Vous avez dit que vous avez essayé l'outil strace, mais avez-vous essayé l'option trace=network? Notez que la sortie peut être assez verbeuse, vous pourriez donc avoir besoin de quelques salutations. Vous pouvez commencer par saluer "sin_addr".

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

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

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

sysdig vous permet de surveiller toute l'activité du noyau ou de plusieurs commandes en cours d'exécution dans votre système à la 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 basiques est assez compréhensible.

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

De Exemples Sysdig

La mise en réseau

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

sysdig -c topprocs_net 

Afficher les données réseau échangées avec l'hôte 192.168.0.1

Comme binaire:

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

En ASCII:

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

Voir les principaux ports du serveur local:

En termes de connexions établies:

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

En termes d'octets totaux:

sysdig -c fdbytes_by fd.sport 

Voir les meilleures adresses IP des clients

En termes de connexions établies

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

En termes d'octets totaux

sysdig -c fdbytes_by fd.cip 

Répertoriez toutes les connexions entrantes qui ne sont pas desservies par Apache.

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

Je créerais un nouveau espace de noms résea , le ponterais sur le réseau réel, puis surveillerais le pont avec tcpdump.

5
Simon Richter

Vous pouvez utiliser WireShark pour flairer tout le trafic d'entrée et de sortie d'une interface réseau. Si vous avez besoin d'une option sans interface graphique, vous pouvez utiliser tshark.

Avec les deux options, vous pouvez voir tout le trafic réseau et l'enregistrer pour analyser plus tard toutes les connexions établies.

1
Ricard Molins