Я надеюсь, что кто-то все еще заинтересован в решении проблемы. ;) У нас была такая же проблема в нашей компании, и я начал писать сценарий для этого.
Об этом я написал в блоге с исходным кодом и скриншотом .
Я также поделился этим ниже ...
И код: (Не забудьте проверить мой сайт для будущих обновлений)
#!/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
печатает только один MAC-адрес в каждой строке. Для входящих пакетов это исходный MAC, который не очень полезен для определения, на какой интерфейс он поступил.Я не знаю ни одного ответа на этот вопрос. Я не нахожу никакой возможности для этого, не могу вспомнить, чтобы когда-либо видел, и скорее уверен, что формат tcpdump не включает идентификатор интерфейса. Я думаю, вам придется запустить один экземпляр tcpdump для каждого интерфейса и войти в соответствующие файлы.
источник
Если вы работаете на Mac, есть
-k
опция,tcpdump
если вы используете интерфейс pktap, который сбрасывает имя интерфейса среди других полезных метаданных.источник
Чтобы добавить к великому сценарию bash Себастьяна Хааса. Я должен был упростить его сценарий, так как он потерпел неудачу в этой строке
tcpdump -l $@ | sed 's/^/[Interface:'"${BASH_REMATCH[0]:2}"'] /' &
.Хотя он не такой гибкий, как оригинальный сценарий, он с большей вероятностью будет работать в урезанной Linux-системе.
Вас также может заинтересовать текущая заявка на выпуск github, касающаяся упущения этой функции, по адресу https://github.com/the-tcpdump-group/tcpdump/issues/296 .
источник
Предполагая, что это в Linux, вы можете добавить правило iptables, соответствующее искомому пакету, и зарегистрировать его. Журнал Iptables включает в себя входящие и исходящие интерфейсы, между прочим.
источник
Отрегулируйте -c по мере необходимости.
источник
изменив строку обнаружения интерфейса, вы можете исключить псевдоним-адреса интерфейсов в linux. образец ниже ..
изменения в
источник