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.
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.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
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.
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"
Je créerais un nouveau espace de noms résea , le ponterais sur le réseau réel, puis surveillerais le pont avec tcpdump
.
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.