118 votes

Comment puis-je capturer le trafic réseau d'un seul processus ?

J'aimerais examiner le trafic réseau géré par un seul processus, mais les simples captures de réseau ne fonctionneront pas car j'ai affaire à un système très actif (beaucoup d'autres trafics se produisent en même temps). Existe-t-il un moyen d'isoler un tcpdump o wireshark au trafic réseau d'un seul processus spécifique ? (En utilisant netstat est insuffisante).

3voto

John Nolan Points 16633

Construire sur la réponse de ioerror Je pense que vous pouvez utiliser iptables --uid-owner pour définir un marqueur sur le trafic, et ensuite vous pouvez demander à wireshark de capturer uniquement le trafic avec ce marqueur. Vous pouvez utiliser un marqueur DSCP (differential services marker), un identifiant de flux ou un marqueur qos.

Ou bien, vous pouvez utiliser cette méthode pour envoyer ces paquets sur une interface différente, puis capturer uniquement sur cette interface.

2voto

JamesThomasMoon Points 219

bogue wireshark #1184 est cette fonctionnalité. Elle a été signalée en 2006 et n'est pas mise en œuvre depuis 2019.

0voto

imlk Points 1

En complément de La réponse de @felahdab J'ai écrit un outil Shell Shell appelé runnet qui peut facilement créer un espace de nom de réseau pour exécuter des programmes spécifiques. Vous pouvez le trouver ici : https://github.com/KB5201314/runnet .

juste courir

sudo runnet --internet <your cmd>

cela créera un espace de nom de réseau séparé.

Ensuite, vous pouvez voir une interface comme runnetxxxxx_vo sur votre wireshark. Vous pouvez commencer à l'écouter.

capture d'écran de la liste des interfaces de wireshark

Vous pouvez même utiliser le --internet pour contrôler si le trafic doit être transféré vers le réseau externe. Vous pouvez également contrôler les ports qui sont mappés à l'hôte, ceci grâce à la puissance de l'option socat .

-1voto

Peut-être que iptables et ulog peuvent fonctionner ? Non pas que j'aie une recette exacte, mais je pensez à iptables peut faire correspondre les processus, une fois qu'ils ont été mis en correspondance, vous pouvez utiliser ulog.

-2voto

Liudvikas Bukys Points 3578

Je pense que vous pouvez créer un Shell Shell pour boucler l'exécution de netstat et l'enregistrer dans un fichier texte. Quelque chose comme (étapes très grossières) :

echo "press q to quit"
while [ <q is not pressed>]
do
    `netstat -taucp | grep <pid or process name> 1>>logfile.txt`
done

Je ne suis pas un programmeur, donc je ne peux pas affiner cela. Mais quelqu'un ici peut partir de là où je me suis arrêté et créer un script fonctionnel pour vous.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X