Вопрос или проблема
Как я могу видеть трафик, пока его захватываю с помощью tcpdump.
Когда я использую -w, пакеты не отображаются во время захвата.
sudo tcpdump -i enp2s0 -w test.pcap
tcpdump: прослушивание enp2s0, тип канала EN10MB (Ethernet), размер захвата 262144 байт
^CЗахвачено 6 пакетов
Получено 7 пакетов по фильтру
0 пакетов отфильтровано ядром
Итак, после немного экспериментов, ответ следующий :
sudo tcpdump -i enp2s0 -U -w - | tee test.pcap | tcpdump -r -
-w -
: записывать в стандартный вывод.
-U
: записывать пакеты по мере их поступления. Не ждать, пока буфер заполнится.
Tee
будет записывать в файл, а tcpdump -r -
будет читать пакеты из стандартного ввода.
-w
опция предназначена для записи вывода tcpdump в файл. Вы можете убрать эту опцию, если хотите печатать в вашем терминале.
Поскольку вы используете опцию -w, пакеты сохраняются в файл и не отображаются на стандартном выводе. Вот из справки tcpdump:
https://www.tcpdump.org/manpages/tcpdump.1.html
-w file
Записывать сырые пакеты в файл, а не разбирать и выводить их. Позже их можно распечатать с помощью опции -r. Стандартный вывод используется, если файл равен ``-''.
Этот вывод будет буферизоваться, если записывать в файл или в канал, поэтому программа, читающая из файла или канала, может не видеть пакеты в произвольное время после их получения. Используйте флаг -U, чтобы пакеты записывались сразу после получения.
Тип MIME application/vnd.tcpdump.pcap зарегистрирован в IANA для pcap файлов. Расширение имени файла .pcap кажется наиболее распространенным наряду с .cap и .dmp. Сам tcpdump не проверяет расширение при чтении файлов захвата и не добавляет расширение при их записи (вместо этого он использует магические числа в заголовке файла). Однако многие операционные системы и приложения будут использовать расширение, если оно присутствует, и рекомендуется добавлять одно (например, .pcap).
См. pcap-savefile(5) для описания формата файла.
Если вы хотите сделать и то, и другое одновременно, вот способ это осуществить:
Как я могу заставить tcpdump записывать в файл и стандартный вывод соответствующие данные?
Чтобы подключить новый процесс кongoing dump, попробуйте:
tail -F -n+0 $dumpfile | tcpdump -r -
–print
Печать извлеченного вывода пакетов, даже если сырые пакеты сохраняются в файл с флагом -w.
Ответ или решение
Когда вы используете инструмент tcpdump для захвата сетевого трафика, вы можете столкнуться с проблемой — выходные данные не отображаются на экране, когда вы используете опцию -w
для записи пакетов в файл. Это связано с тем, что при использовании этой опции tcpdump сохраняет «сырой» трафик в файл, а не выводит его на стандартный вывод. В этом ответе мы рассмотрим, как решить эту проблему, чтобы вы могли одновременно видеть захватываемые пакеты и записывать их в файл.
Решение проблемы отображения пакетов во время захвата
Для того чтобы наблюдать захватываемый трафик в реальном времени, одновременно записывая его в файл, можно воспользоваться следующей командой:
sudo tcpdump -i enp2s0 -U -w - | tee test.pcap | tcpdump -r -
Давайте разберём этот команду по частям:
-
sudo tcpdump -i enp2s0 -U -w -
:-i enp2s0
: указывает интерфейс, на котором вы хотите захватывать трафик (в вашем случае этоenp2s0
).-U
: дает команду tcpdump записывать пакеты по мере их поступления, без ожидания заполнения буфера.-w -
: сообщает tcpdump записывать захваченные пакеты в стандартный вывод вместо файла.
-
| tee test.pcap
:- Оператор
|
(пайп) передает вывод первой команды во вторую команду. - Команда
tee
дублирует входные данные: она записывает пакеты в файлtest.pcap
и одновременно передает их дальше по конвейеру.
- Оператор
-
| tcpdump -r -
:- В этом случае tcpdump читает пакеты из стандартного ввода (входящих данных) и выводит их на экран. Знак
-
указывает на то, что он должен читать их из стандартного ввода.
- В этом случае tcpdump читает пакеты из стандартного ввода (входящих данных) и выводит их на экран. Знак
Другие варианты
Если вы хотите видеть пакеты на экране без записи их в файл, просто уберите опцию -w
. Это приведет к следующему:
sudo tcpdump -i enp2s0
Дополнительные опции для анализа
- Опция
--print
позволяет выводить разобранные пакеты, даже если вы используете флаг-w
. Это может быть полезно, если вы хотите просмотреть определенные детали пакетов, сохраняя при этом их полное содержимое для последующего анализа.
Заключение
Используя комбинацию инструментов tcpdump и применяя соответствующие опции, вы можете эффективно мониторить сетевой трафик в реальном времени и одновременно сохранять его для последующего анализа. Выбор правильной команды позволяет вам не только видеть данные, но и обеспечивать их сохранность, что особенно важно в средах, где анализ сетевого трафика играет критически важную роль.