Назад | Перейти на главную страницу

Как я могу захватить трафик с помощью tcpdump и скользящего окна или своего рода «logrotate»?

Я хочу захватить некоторый трафик с помощью tcpdump для устранения неполадок. Проблема в том, что ошибка не воспроизводится. Чтобы не заполнять дырочные диски захватами, я бы хотел захватить трафик каким-то скользящим окном.

Допустим, я записываю захват в файл, и когда файл достигает размера 1 ГБ, он отбрасывает самые старые пакеты и записывает новые. Таким образом, я получу трафик только на несколько часов, но, надеюсь, достаточно, чтобы получить нужные пакеты, когда пользователь звонит.

Я не мог найти вариант для tcpdump. Есть у кого-нибудь идеи, как это решить?

В этом вам может помочь параметр -c:

   -c     Exit after receiving count packets.

Таким образом, вы получите круговой файл traffic.dmp:

while :
do
 tcpdump -i eth0 -c 50000 -C 1 -w traffic.dmp
done

Если вы поместите его в цикл for, вы можете получить серию файлов:

for file in 1 2 3 4 5
do
 tcpdump -i eth0 -c 50000 -C 1 -w traffic${file}.dmp
done

. Просто измените числа после того, как вы определите какое-то число, которое не слишком велико для вашего диска, чтобы захватывать несколько часов пакетов.

-C тоже интересно смотрится:

   -C     Before writing a raw packet to a  savefile,  check  whether  the
          file  is  currently  larger than file_size and, if so, close the
          current savefile and open a new one.  Savefiles after the  first
          savefile  will  have the name specified with the -w flag, with a
          number after it, starting at 1 and continuing upward.  The units
          of  file_size  are  millions  of  bytes  (1,000,000  bytes,  not
          1,048,576 bytes).

Если вы настаиваете на использовании tcpdump, ответ Дэви правильный. Однако есть и другие пакеты захвата, создающие файлы pcap, с дополнительными возможностями для такого рода работы. Отметим:

  • tshark, часть Wireshark программа. это -a («Прекратить запись в файл захвата после того, как он достигнет размера в килобайтах») и -b («Когда заполнится первый файл захвата, TShark переключит запись в следующий файл и так далее») параметры кажутся особенно интересными

  • pcapdump, часть pcaputils пакет. См. Параметры конфигурации interval= (перейти к следующему файлу через N секунд захвата) и filefmt= (шаблон для создания имени файлов захвата).