Tshark на Linux: Полный гайд по захвату и анализу трафика в терминале

Содержание
- Введение
- Установка Tshark на Linux
- Базовое использование Tshark
- Получение списка интерфейсов
- Захват трафика с интерфейса
- Фильтрация пакетов в Tshark
- Пример фильтра Tcpdump-совместимого (не рекомендуется):
- Пример Wireshark Display Filter (рекомендуется):
- Полезные фильтры для анализа трафика
- Условия в фильтрах Tshark (логика и примеры)
- Поддерживаемые логические операторы
- Примеры сложных фильтров
- Советы
- Сохранение трафика в файл
- Чтение сохранённых файлов
- Форматы вывода
- JSON
- CSV / поля
- Советы по использованию
- Заключение
Введение
Нужно быстро проанализировать сетевой трафик без графического интерфейса? Или автоматизировать захват и фильтрацию пакетов в скриптах и CI/CD? Тогда тебе пригодится Tshark — консольный аналог популярного инструмента Wireshark. Этот инструмент позволяет проводить захват пакетов, сетевой анализ и диагностику прямо из терминала на Linux-системах.
Tshark подходит как для новичков, так и для опытных специалистов в области сетевого администрирования, DevOps, пентестинга и информационной безопасности.
Установка Tshark на Linux
Ubuntu / Debian
sudo apt update && sudo apt install -y tshark
CentOS / RedOS
sudo dnf update && sudo dnf install -y wireshark-cli
ALT Linux
sudo apt-get update && sudo apt-get install -y tshark
Проверка установки
tshark -v
Базовое использование Tshark
Получение списка интерфейсов
Для захвата трафика нам сначала нужно выбрать интерфейс. Посмотреть список интерфейсов можно командой:
sudo tshark -D
Захват трафика с интерфейса
Пример простой команды для захвата всего трафика с интерфейса:
sudo tshark -i eth0
По умолчанию вывод будет текстовый в реальном времени — идеально для быстрой диагностики и изучения сетевого взаимодействия.
Фильтрация пакетов в Tshark
В Tshark можно использовать два типа фильтров:
-f
— фильтры захвата (как в tcpdump)-Y
— display filters (как в Wireshark) — рекомендуется
Пример фильтра Tcpdump-совместимого (не рекомендуется):
sudo tshark -i eth0 -f "src 192.168.1.196"
Пример Wireshark Display Filter (рекомендуется):
sudo tshark -i eth0 -Y "ip.src == 192.168.1.196"
Полезные фильтры для анализа трафика
Фильтр | Описание |
---|---|
ip.src == 192.168.1.196 |
Исходящий трафик с IP-адреса |
ip.dst == 192.168.1.196 |
Входящий трафик на IP-адрес |
tcp.port == 443 |
Трафик по TCP-порту 443 (HTTPS) |
udp.port == 53 |
DNS-запросы по UDP |
dns |
Только DNS-запросы и ответы |
http |
HTTP-запросы и ответы |
tls.handshake.version |
Показывает TLS handshakes |
icmp |
Трафик ICMP (ping и ошибки сети) |
frame.len > 1000 |
Пакеты размером более 1000 байт |
tcp.flags.syn == 1 && tcp.flags.ack == 0 |
Начало TCP-соединений (SYN без ACK) |
eth.addr == aa:bb:cc:dd:ee:ff |
Трафик с/на MAC-адрес |
Условия в фильтрах Tshark (логика и примеры)
Чтобы точнее фильтровать сетевые пакеты, используйте логические операторы. Это позволяет комбинировать условия, исключать ненужное и строить сложные правила фильтрации прямо в терминале.
Поддерживаемые логические операторы
Оператор | Альтернативный вариант | Что делает | Пример |
---|---|---|---|
&& |
and |
Логическое И — все условия должны быть true | ip.src == 192.168.1.1 && tcp.port == 80 |
|| |
or |
Логическое ИЛИ — одно из условий должно быть true | ip.src == 192.168.1.1 || ip.src == 192.168.1.2 |
! |
not |
Логическое НЕ — исключение из фильтра | !dns — показывает всё, кроме DNS-запросов |
() |
— | Группировка условий | (ip.src == 192.168.1.1 && tcp.port == 80) && not dns |
Примеры сложных фильтров
HTTP и HTTPS с конкретным IP
sudo tshark -i eth0 -Y "(ip.src == 192.168.1.100 || ip.dst == 192.168.1.100) && (tcp.port == 80 || tcp.port == 443)"
Исключить DNS и ICMP
sudo tshark -i eth0 -Y "!(dns || icmp)"
Все TCP-пакеты больше 1000 байт
sudo tshark -i eth0 -Y "tcp && frame.len > 1000"
Советы
- Используй скобки при комбинировании условий — это избавит от логических ошибок.
- Для отладки фильтров сначала используй Wireshark с теми же условиями — так проще проверить корректность.
- Если фильтр не работает — проверь пробелы, кавычки и порядок операторов.
Сохранение трафика в файл
Записать захваченный трафик в .pcap
-файл:
sudo tshark -i eth0 -w capture.pcap
Этот файл можно потом открыть в Wireshark или передать на анализ в SIEM, скрипты и т.д.
Чтение сохранённых файлов
sudo tshark -r capture.pcap
Можно использовать фильтры -Y и -T, чтобы извлечь только нужные поля.
Форматы вывода
JSON
Удобно для парсинга в Python, логировании, отправке в API:
sudo tshark -i eth0 -T json
CSV / поля
Полезно для логирования и отчётов:
sudo tshark -i eth0 -T fields -e frame.number -e ip.src -e ip.dst
Пример вывода:
1 192.168.1.178 192.168.1.196
2 192.168.1.196 192.168.1.178
Можно добавлять больше полей: -e tcp.port -e udp.port -e dns.qry.name
Советы по использованию
- Используйте
-c
чтобы ограничить количество пакетов:sudo tshark -i eth0 -c 100
- Уточняйте интерфейс при нескольких сетевых адаптерах.
- Запускайте от
sudo
для полного доступа к сетевому стеку. - Для фонового анализа добавьте
nohup
илиscreen
.
Заключение
Tshark — это мощный инструмент для захвата и анализа сетевого трафика в терминале. Он особенно полезен:
- На серверах без GUI.
- Для автоматизации.
- При написании скриптов для DevOps/NetOps.
- В пентестах и аудитах.
Освоив Tshark, ты получишь инструмент, способный заменить графический Wireshark во многих ситуациях — быстро, эффективно и удобно.