J'espère que quelqu'un est toujours intéressé par la solution du problème. ;) Nous avons eu le même problème dans notre entreprise et j'ai commencé à écrire un script pour cela.
J'ai écrit un blog à ce sujet avec le code source et une capture d'écran .
Je l'ai également partagé ci-dessous ...
Et le code: (Assurez-vous de consulter mon site pour les futures mises à jour)
#!/bin/bash
#===================================================================================
#
# FILE: dump.sh
# USAGE: dump.sh [-i interface] [tcpdump-parameters]
# DESCRIPTION: tcpdump on any interface and add the prefix [Interace:xy] in front of the dump data.
# OPTIONS: same as tcpdump
# REQUIREMENTS: tcpdump, sed, ifconfig, kill, awk, grep, posix regex matching
# BUGS: ---
# FIXED: - In 1.0 The parameter -w would not work without -i parameter as multiple tcpdumps are started.
# - In 1.1 VLAN's would not be shown if a single interface was dumped.
# NOTES: ---
# - 1.2 git initial
# AUTHOR: Sebastian Haas
# COMPANY: pharma mall
# VERSION: 1.2
# CREATED: 16.09.2014
# REVISION: 22.09.2014
#
#===================================================================================
# When this exits, exit all background processes:
trap 'kill $(jobs -p) &> /dev/null && sleep 0.2 && echo ' EXIT
# Create one tcpdump output per interface and add an identifier to the beginning of each line:
if [[ $@ =~ -i[[:space:]]?[^[:space:]]+ ]]; then
tcpdump -l $@ | sed 's/^/[Interface:'"${BASH_REMATCH[0]:2}"'] /' &
else
for interface in $(ifconfig | grep '^[a-z0-9]' | awk '{print $1}')
do
tcpdump -l -i $interface -nn $@ | sed 's/^/[Interface:'"$interface"'] /' &
done
fi
# wait .. until CTRL+C
wait
-e
n'imprime qu'une seule adresse MAC sur chaque ligne. Pour les paquets entrants, c'est le MAC source qui n'est pas très utile pour identifier sur quelle interface il est arrivé.Je ne connais pas non plus de réponse à cela. Je ne trouve aucune option pour cela, je ne me souviens pas d'en avoir vu un, et je suis plutôt certain que le format tcpdump n'inclut pas d'identifiant d'interface. Je pense que vous devrez démarrer une instance de tcpdump pour chaque interface et vous connecter aux fichiers respectifs.
la source
Si vous exécutez sur Mac, il existe une
-k
optiontcpdump
si vous utilisez l'interface pktap, qui sauvegarde le nom de l'interface parmi d'autres métadonnées utiles.la source
Pour ajouter au grand script bash de Sebastian Haas. J'ai dû simplifier son script car il a échoué sur cette ligne
tcpdump -l $@ | sed 's/^/[Interface:'"${BASH_REMATCH[0]:2}"'] /' &
.Bien qu'il ne soit pas aussi flexible que le script d'origine, il est plus susceptible de fonctionner dans un système Linux allégé.
Vous pouvez également être intéressé par le ticket de problème github actuel concernant cette omission de fonctionnalité dans https://github.com/the-tcpdump-group/tcpdump/issues/296 .
la source
En supposant que c'est sous Linux, vous pouvez ajouter une règle iptables pour correspondre au paquet que vous recherchez et l'enregistrer. Le journal Iptables comprend, entre autres, les interfaces d'entrée et de sortie.
la source
Ajustez -c au besoin.
la source
en modifiant la ligne de détection d'interface, vous pouvez éliminer les interfaces adresse-alias sous linux. échantillon ci-dessous ..
modifications apportées à
la source