Ich hoffe, jemand ist immer noch an der Lösung des Problems interessiert. ;) Wir hatten das gleiche Problem in unserer Firma und ich fing an, ein Skript dafür zu schreiben.
Ich habe einen Blog-Post darüber mit dem Quellcode und einem Screenshot geschrieben .
Ich habe es auch unten geteilt ...
Und der Code: (Achten Sie darauf, meine Website auf zukünftige Updates zu überprüfen)
#!/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
nur einer MAC-Adresse wird in jeder Zeile gedruckt. Bei eingehenden Paketen ist es der Quell-MAC, der nicht sehr nützlich ist, um zu identifizieren, auf welcher Schnittstelle er angekommen ist.Ich kenne auch keine Antwort darauf. Ich finde keine Option dafür, kann mich nicht erinnern, jemals eine gesehen zu haben, und bin mir ziemlich sicher, dass das tcpdump-Format keine Schnittstellen-ID enthält. Ich denke, Sie müssen eine tcpdump-Instanz für jede Schnittstelle starten und in entsprechenden Dateien protokollieren.
quelle
Wenn Sie auf einem Mac ausgeführt werden, gibt es eine
-k
Option fürtcpdump
die Verwendung der pktap-Schnittstelle, die den Schnittstellennamen unter anderen nützlichen Metadaten ausgibt.quelle
Hinzufügen zu Sebastian Haas 'großartigem Bash-Skript. Ich musste sein Skript vereinfachen, da es in dieser Zeile fehlschlug
tcpdump -l $@ | sed 's/^/[Interface:'"${BASH_REMATCH[0]:2}"'] /' &
.Obwohl es nicht so flexibel ist wie das ursprüngliche Skript, ist es wahrscheinlicher, dass es in einem abgespeckten Linux-System ausgeführt wird.
Möglicherweise interessiert Sie auch das aktuelle Ticket für die Ausgabe des Githubs in Bezug auf dieses Feature in https://github.com/the-tcpdump-group/tcpdump/issues/296 .
quelle
Unter Linux können Sie eine iptables-Regel hinzufügen, die dem gesuchten Paket entspricht, und es protokollieren. Das Iptables-Protokoll enthält unter anderem Eingangs- und Ausgangsschnittstellen.
quelle
Passen Sie -c nach Bedarf an.
quelle
Durch Ändern der Interface-Erkennungslinie können Sie die Alias-Adress-Interfaces unter Linux entfernen. Probe unten ..
ändert sich zu
quelle