web-dev-qa-db-fra.com

Tcpdump sur plusieurs interfaces

J'ai besoin de capturer le trafic sur un serveur CentOS 5 qui agit comme un proxy Web avec 2 interfaces WAN et 1 LAN. Afin de résoudre un problème de proxy étrange, je voudrais avoir une capture d'une conversation complète. Étant donné que les connexions externes sont équilibrées entre les deux WAN interfaces, je me demande s'il est possible de capturer simultanément sur toutes les interfaces.

J'ai déjà utilisé tcpdump mais il n'admet qu'une seule interface à la fois. Je peux lancer 3 processus parallèles pour capturer sur toutes les interfaces mais je me retrouve avec 3 fichiers de capture différents.

Quelle est la bonne façon de procéder?

17
Nahidul islam

Selon la page de manuel tcpdump:

Sur les systèmes Linux avec les noyaux 2.2 ou ultérieurs, un argument d’interface ‘‘ any ’’ peut être utilisé pour capturer les paquets de toutes les interfaces. Notez que les captures sur le périphérique "n’importe quel" ne se feront pas en mode promiscuous.

Vous devriez donc pouvoir exécuter: tcpdump -i any afin de capturer des données sur toutes les interfaces en même temps dans un seul fichier de capture.

27
Adam Rushad

La façon dont j'aborderais cela est de vider sur chaque interface dans un fichier séparé puis de les fusionner. L'interface any inclut également le trafic lo qui peut polluer la capture.

Cela permet également d'analyser les flux de paquets par interface sans filtrage complexe.

Je capturerais dans 3 terminaux ou en arrière-plan de la commande avec &

-Nn désactive la résolution DNS pour la vitesse, -s 0 enregistre le paquet complet et -w écrit dans un fichier.

tcpdump -i wan0 -nn -s 0 -w wan0.dump
tcpdump -i wan1 -nn -s 0 -w wan1.dump
tcpdump -i lan0 -nn -s 0 -w lan0.dump

Je fusionnerais ensuite les fichiers avec la commande mergecap de Wireshark:

mergecap -w merged.dump wan0.dump wan1.dump lan0.dump
10
Tim Fletcher

Pour capturer un tcpdump sur toutes les interfaces, utilisez

tcpdump -i any
2
Vijay S B