Перенаправление вывода Tshark в инструменты

WiresharkWiresharkBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы научитесь захватывать и анализировать сетевой трафик с использованием инструментов командной строки, перенаправляя вывод Tshark в другие утилиты. Вы будете практиковать захват пакетов на интерфейсе eth1 с помощью tcpdump, фильтрацию ошибочных сообщений с использованием grep и подсчет совпадений с помощью wc -l.

В лабораторном занятии акцент делается на практические методы решения проблем в сети, включая сохранение захваченных данных в формате pcap для последующего анализа. Вы научитесь проверять интерфейсы, применять фильтры и оптимизировать рабочие процессы анализа пакетов с помощью Unix-пайпов и операций с файлами.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") subgraph Lab Skills wireshark/packet_capture -.-> lab-548935{{"Перенаправление вывода Tshark в инструменты"}} wireshark/export_packets -.-> lab-548935{{"Перенаправление вывода Tshark в инструменты"}} wireshark/packet_analysis -.-> lab-548935{{"Перенаправление вывода Tshark в инструменты"}} end

Захват трафика с использованием -i eth1

На этом этапе вы научитесь захватывать сетевой трафик на интерфейсе eth1 с помощью базовых команд Linux. Интерфейс eth1 обычно является основным сетевым интерфейсом в системах Linux и представляет собой первое Ethernet-соединение на вашем компьютере.

Перед захватом трафика важно убедиться, что интерфейс существует и активен. Сетевые интерфейсы могут быть физическими (например, Ethernet-порты) или виртуальными (например, VPN-соединения). Выполните следующую команду, чтобы проверить статус интерфейса eth1:

ip link show eth1

Вы должны увидеть вывод, похожий на следующий:

2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:16:3e:5e:6c:00 brd ff:ff:ff:ff:ff:ff

Статус UP указывает, что интерфейс активен. Теперь мы будем использовать tcpdump, основной инструмент для сетевого анализа, который позволяет видеть трафик в реальном времени. Эта базовая команда захвата поможет вам понять, что происходит в вашей сети:

sudo tcpdump -i eth1 -c 5

Разберем, что делает эта команда:

  • -i eth1: Указывает, какой сетевой интерфейс нужно отслеживать (в данном случае eth1)
  • -c 5: Ограничивает захват до 5 пакетов, что достаточно для демонстрации без переполнения вашего терминала

Вывод будет показывать детали пакетов, включая временные метки, IP-адреса источника и назначения, а также информацию о протоколе:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
12:34:56.789012 IP 192.168.1.100.22 > 192.168.1.1.12345: Flags [P.], seq 1:21, ack 1, win 501, length 20
12:34:56.789123 IP 192.168.1.1.12345 > 192.168.1.100.22: Flags [.], ack 21, win 1024, length 0
...
5 packets captured
5 packets received by filter
0 packets dropped by kernel

Для более детального анализа вы захотите сохранить пакеты в файл. Файлы в формате PCAP сохраняют все данные пакетов и могут быть открыты в графических инструментах, таких как Wireshark. Эта команда создает файл с захваченными данными:

sudo tcpdump -i eth1 -c 5 -w ~/project/eth1_capture.pcap

Флаг -w записывает пакеты в файл eth1_capture.pcap в вашей проектной директории. Этот бинарный формат сохраняет все исходные данные пакетов именно в том виде, в котором они были захвачены.

Фильтрация ошибок с использованием | grep "ERROR"

На этом этапе вы научитесь фильтровать сетевой трафик на наличие ошибочных сообщений с помощью команды grep. Это особенно полезно при анализе больших объемов захваченных пакетов, когда вам нужно видеть только пакеты, содержащие ошибки. Оператор пайпа (|) в Linux позволяет использовать вывод одной команды в качестве входных данных для другой команды, создавая мощные рабочие процессы анализа.

Сначала рассмотрим файл с захваченными данными, который мы создали на предыдущем этапе. Выполните следующую команду, чтобы просмотреть содержимое файла в формате pcap в текстовом виде. Это преобразует бинарные данные пакетов в человекочитаемый формат:

tcpdump -r ~/project/eth1_capture.pcap

Теперь создадим примерный файл журнала, содержащий как обычные, так и ошибочные сообщения для демонстрации. Это поможет нам понять, как работает grep, прежде чем применять его к реальному сетевому трафику:

echo -e "INFO: Connection established\nERROR: Authentication failed\nINFO: Data transfer complete\nERROR: Connection timeout" > ~/project/network.log

Для фильтрации только ошибочных сообщений из этого файла журнала мы будем использовать grep с шаблоном "ERROR". grep просматривает текст построчно и выводит только те строки, которые соответствуют шаблону:

grep "ERROR" ~/project/network.log

Вы должны увидеть вывод, содержащий только строки с ошибками:

ERROR: Authentication failed
ERROR: Connection timeout

Теперь применим это к нашему фактическому захвату пакетов. Сначала нам нужно преобразовать файл pcap в текстовый формат, так как grep работает с текстовыми файлами. Это создаст текстовую версию нашего захвата пакетов:

tcpdump -r ~/project/eth1_capture.pcap > ~/project/packets.txt

Затем отфильтруем любые ошибочные сообщения в преобразованных данных пакетов. Мы используем флаг -i, чтобы сделать поиск регистронезависимым, то есть он будет совпадать с "error", "ERROR" или любой другой вариацией регистров букв:

grep -i "error" ~/project/packets.txt

Флаг -i делает поиск регистронезависимым. Если есть какие-либо пакеты, содержащие "error" (в любом регистре), они будут отображены. Это помогает убедиться, что мы не пропустим никаких ошибочных сообщений из-за разного написания в сетевых протоколах.

Подсчет совпадений с использованием | wc -l

На этом этапе мы научимся количественно оценивать сетевые ошибки, подсчитывая совпадающие строки с помощью команды wc -l. Эта техника помогает сетевым администраторам понять частоту возникновения ошибок в захваченном трафике.

Перед подсчетом давайте сначала перепроверим ошибочные сообщения, которые мы нашли ранее. Следующая команда отображает все строки, содержащие "error" (без учета регистра) из нашего файла с захваченными пакетами:

grep -i "error" ~/project/packets.txt

Для подсчета количества таких ошибок вместо их отображения мы будем использовать оператор пайпа (|), чтобы передать вывод команды grep в команду wc -l. Команда wc подсчитывает слова, строки или символы, а опция -l в частности подсчитывает строки:

grep -i "error" ~/project/packets.txt | wc -l

Эта команда выводит простое число, представляющее количество найденных ошибочных сообщений:

2

Для наглядности давайте также подсчитаем общее количество пакетов в нашем файле с захваченными данными. Это поможет нам понять, какую долю трафика составляют ошибки:

wc -l ~/project/packets.txt

Вывод показывает как количество, так и имя файла:

50 packets.txt

Для расчета процентного соотношения ошибок мы будем использовать простую арифметику в оболочке. Сначала мы сохраним количество ошибок и общее количество пакетов в переменных, а затем выполним расчет с помощью программы bc (базовый калькулятор):

errors=$(grep -i "error" ~/project/packets.txt | wc -l)
total=$(wc -l < ~/project/packets.txt)
echo "scale=2; ($errors/$total)*100" | bc

Настройка scale=2 сообщает bc отображать два знака после запятой в результате:

4.00

Сохранение в файл с использованием > output.txt

На этом этапе мы узнаем, как сохранять результаты сетевого анализа в файлы для документирования и дальнейшего исследования. При работе с выводом Tshark часто бывает полезно сохранять отфильтрованные данные отдельно, а не просто просматривать их в терминале.

Сначала вспомним команду, которую мы использовали ранее для подсчета количества ошибок в нашем захвате пакетов:

grep -i "error" ~/project/packets.txt | wc -l

Оператор > в Linux позволяет перенаправить вывод команды в файл вместо отображения его на экране. Чтобы сохранить только числовой подсчет ошибок в новый файл с именем error_count.txt, мы модифицируем нашу команду следующим образом:

grep -i "error" ~/project/packets.txt | wc -l > ~/project/error_count.txt

После выполнения этой команды вы можете проверить, что файл содержит именно то, что мы ожидаем - только число ошибок:

cat ~/project/error_count.txt

Иногда нам нужно не только подсчитывать ошибки, но и иметь доступ к самим ошибочным сообщениям для анализа. Чтобы сохранить все совпадающие строки с ошибками в файл, мы убираем часть, отвечающую за подсчет слов:

grep -i "error" ~/project/packets.txt > ~/project/error_messages.txt

Проверьте содержимое файла, чтобы убедиться, что все ошибочные сообщения были сохранены:

cat ~/project/error_messages.txt

Для постоянного мониторинга мы можем захотеть добавлять данные в существующие файлы, а не перезаписывать их. Оператор >> добавляет данные в конец файла. Вот как создать отчет об ошибках с отметкой времени:

echo "Error count at $(date):" >> ~/project/error_report.txt
grep -i "error" ~/project/packets.txt | wc -l >> ~/project/error_report.txt

Просмотрите файл с нарастающим отчетом, чтобы увидеть накопленные данные:

cat ~/project/error_report.txt

Резюме

В этом практическом занятии (лабораторной работе) вы научились использовать практические методы захвата и анализа сетевого трафика с помощью инструментов командной строки. В рамках упражнений были рассмотрены такие аспекты, как захват пакетов с использованием tcpdump, проверка интерфейсов с помощью ip link show и создание файлов в формате PCAP для оффлайн-анализа.

Вы также изучили эффективные методы обработки данных с использованием операций пайплайна (канала), включая фильтрацию ошибок с помощью grep, подсчет совпадений с помощью wc -l и перенаправление вывода в текстовые файлы. Эти навыки позволяют целенаправленно извлекать сетевую информацию для эффективного устранения неполадок.