Espero que alguien todavía esté interesado en la solución del problema. ;) Tuvimos el mismo problema en nuestra empresa y comencé a escribir un guión para esto.
Escribí una publicación de blog al respecto con el código fuente y una captura de pantalla .
También lo he compartido a continuación ...
Y el código: (asegúrese de consultar mi sitio para futuras actualizaciones)
#!/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
solo imprime una dirección MAC en cada línea. Para los paquetes entrantes es el MAC de origen que no es muy útil para identificar en qué interfaz llegó.No sé de ninguna respuesta a eso tampoco. No encuentro ninguna opción, no recuerdo haber visto nunca una, y estoy bastante seguro de que el formato tcpdump no incluye un identificador de interfaz. Creo que tendrá que iniciar una instancia de tcpdump para cada interfaz e iniciar sesión en los archivos respectivos.
fuente
Si está ejecutando en Mac, hay una
-k
opcióntcpdump
si está utilizando la interfaz pktap, que descarga el nombre de la interfaz entre otros metadatos útiles.fuente
Para agregar al gran guión de bash de Sebastian Haas. Tuve que simplificar su guión ya que falló en esta línea
tcpdump -l $@ | sed 's/^/[Interface:'"${BASH_REMATCH[0]:2}"'] /' &
.Si bien no es tan flexible como el script original, es más probable que se ejecute en un sistema Linux simplificado.
También puede estar interesado en el boleto actual de emisión de github con respecto a esta omisión de características en https://github.com/the-tcpdump-group/tcpdump/issues/296 .
fuente
Suponiendo que esto está en Linux, puede agregar una regla de iptables para que coincida con el paquete que está buscando y registrarlo. El registro de Iptables incluye interfaces de entrada y salida, entre otras cosas.
fuente
Ajuste -c según sea necesario.
fuente
Al modificar la línea de detección de interfaz, puede eliminar las interfaces de dirección de alias en Linux. muestra a continuación ..
cambios a
fuente