Espero que alguém ainda esteja interessado na solução do problema. ;) Tivemos o mesmo problema em nossa empresa e comecei a escrever um script para isso.
Eu escrevi um post sobre isso com o código fonte e uma captura de tela .
Eu também compartilhei abaixo ...
E o código: (Não deixe de conferir meu site para futuras atualizações)
#!/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
apenas imprime um endereço MAC em cada linha. Para pacotes recebidos, o MAC de origem não é muito útil para identificar em qual interface ele chegou.Também não sei resposta para isso. Não encontro nenhuma opção, não lembro de ter visto uma e tenho certeza de que o formato tcpdump não inclui um identificador de interface. Eu acho que você terá que iniciar uma instância tcpdump para cada interface e fazer logon nos respectivos arquivos.
fonte
Se você estiver executando no Mac, existe a
-k
opção detcpdump
usar a interface pktap, que despeja o nome da interface entre outros metadados úteis.fonte
Para adicionar ao ótimo roteiro do bash de Sebastian Haas. Eu tive que simplificar o script dele, pois falhou nessa linha
tcpdump -l $@ | sed 's/^/[Interface:'"${BASH_REMATCH[0]:2}"'] /' &
.Embora não seja tão flexível quanto o script original, é mais provável que seja executado em um sistema Linux despojado.
Você também pode estar interessado no ticket de edição do github atual referente à omissão deste recurso em https://github.com/the-tcpdump-group/tcpdump/issues/296 .
fonte
Supondo que isso esteja no Linux, você pode adicionar uma regra de iptables para corresponder ao pacote que está procurando e registrá-lo. O log do Iptables inclui interfaces de entrada e saída, entre outras coisas.
fonte
Ajuste -c conforme necessário.
fonte
modificando a linha de detecção de interface, você pode eliminar as interfaces de alias-address no linux. amostra abaixo ..
muda para
fonte