Набор инструментов для захвата сети, в котором хранится буфер и сохраняется по триггеру - PullRequest
0 голосов
/ 18 октября 2019

Есть ли простой инструмент или утилита, которую я могу использовать для буферизации захвата сети, скажем, в течение последних 3 минут, и если событие происходит, возможно, с помощью триггера GPIO или сообщения UDP, я записываю последние 3 минуты и следующие 1 минуту на диск? У нас происходит зависание сети, которое происходит между 40 минутами и 14 часами, и я хотел бы захватить сетевой трафик во время обнаруженного события, чтобы лучше понять ситуацию. В прошлом я уже использовал tcpdump и wireshark, но всегда вручную запускал и останавливал захваты, и мне нужно, чтобы время остановки было автоматизировано, и я хочу избежать записи ненужных данных. Большинство наших сред разработки используют Ubuntu 18.04, если это имеет значение.

На данный момент мы не ограничены каким-либо языком или созданием инструмента с нуля, если это необходимо.

1 Ответ

3 голосов
/ 18 октября 2019

Вы можете попробовать запустить скрипт, который запускает 2 экземпляра dumpcap, один для захвата всего трафика в кольцевой буфер ограниченной продолжительности и файлов, а другой - просто для ожидания события захватаобсуждаемый. Как только происходит событие захвата, 2-й экземпляр dumpcap может завершиться, спать в течение 1 минуты, а затем оставшийся экземпляр dumpcap может быть уничтожен. Например:

#!/bin/sh
echo "Starting capture instance ..."
dumpcap -i eth0 -f "TBD Capture Filter" -b duration:180 -b files:2 -w file.pcapng &
echo "Starting event instance ..."
dumpcap -i eth0 -f "TBD Event Capture Filter" -c 1
echo "Got event; sleeping for 60 seconds ..."
sleep 60
echo "Killing all dumpcap instances ..."
killall dumpcap
echo "Done."

После завершения захвата у вас должно быть до 2 файлов, содержащих данные за последние 6 минут (максимум). Вы даже можете добавить команду mergecap к сценарию, чтобы объединить 2 файла, если хотите: mergecap -F pcapng file.pcapng file_*.pcapng.

И в случае, если 2-й экземпляр dumpcap оставит позадивременный файл захвата, вы также можете очистить его, если хотите, например, rm -f /tmp/wireshark*

...