// DevOps

Сетевой траблшутинг для новичков: Часть 5 — tcpdump, sngrep и Wireshark

Опубликовано 22.09.2026

Иногда все проверки проходят: ping отвечает, DNS работает, порты открыты, mtr не показывает потерь, а приложение всё равно получает ошибки вроде connection reset by peer или TLS handshake failed. В таких случаях остаётся посмотреть на сами пакеты — перехватить трафик и разобрать, что происходит в соединении. В этой части — три инструмента: tcpdump для захвата, sngrep для SIP и Wireshark для разбора.

tcpdump: захват пакетов

tcpdump есть почти в любом дистрибутиве Linux. Он показывает пакеты в консоли и умеет сохранять их в файл формата pcap для последующего анализа.

Список интерфейсов, на которых можно захватывать трафик:

bash
sudo tcpdump -D

Трафик с конкретным узлом:

bash
sudo tcpdump -ni eth0 host 203.0.113.10

Флаг -n отключает преобразование адресов и портов в имена: вывод становится быстрее, и в нём не появляются DNS-запросы самого tcpdump.

Только HTTPS:

bash
sudo tcpdump -ni eth0 tcp port 443

Только DNS-запросы и ответы:

bash
sudo tcpdump -ni eth0 port 53

Сохранить трафик в файл для Wireshark:

bash
sudo tcpdump -ni eth0 -w /tmp/capture.pcap

Ограничить объём, чтобы не заполнить диск:

bash
# остановиться после 1000 пакетов
sudo tcpdump -ni eth0 -c 1000 -w /tmp/capture.pcap

# начинать новый файл каждые 60 секунд; имя файла задаётся по шаблону strftime
sudo tcpdump -ni eth0 -G 60 -w '/tmp/capture-%Y-%m-%d_%H-%M-%S.pcap'

Длина захватываемой части пакета по умолчанию — 262 144 байта, то есть пакеты сохраняются целиком. Параметр -s 0 в старых инструкциях нужен был для версий с маленьким значением по умолчанию; в современных версиях он означает то же значение по умолчанию.

Фильтры tcpdump (host, port, tcp, udp и их сочетания через and, or, not) — это фильтры захвата: пакеты, которые им не соответствуют, в файл не попадают вовсе.

sngrep: SIP-диалоги в терминале

sngrep создан для отладки телефонии: он собирает SIP-пакеты в звонки и показывает их как диалог — REGISTER, INVITE, ответы 100 Trying, 180 Ringing, 200 OK и так далее. Это удобнее, чем разбирать SIP в выводе tcpdump.

bash
sudo apt install sngrep
sudo sngrep                 # захват в реальном времени
sudo sngrep port 5060       # только SIP на стандартном порту
sngrep -I /tmp/capture.pcap # открыть сохранённый файл

В интерфейсе стрелками выбирают звонок, Enter открывает схему обмена сообщениями.

Wireshark: разбор записи

Wireshark — графический анализатор пакетов. Удобная схема работы с сервером: захватить трафик tcpdump на сервере, скачать файл и открыть его в Wireshark на своём компьютере.

bash
scp user@server:/tmp/capture.pcap .
wireshark capture.pcap

Фильтры отображения задаются в строке фильтра над списком пакетов:

  • http.request — только HTTP-запросы;
  • tls.handshake — сообщения TLS-рукопожатия;
  • dns — DNS-запросы и ответы;
  • tcp.flags.reset == 1 — пакеты со сбросом соединения;
  • ip.addr == 203.0.113.10 — трафик с конкретным адресом.

Команда Follow → TCP Stream в контекстном меню собирает пакеты одного соединения в последовательный диалог.

Не путайте два вида фильтров: фильтры захвата (синтаксис BPF, как в tcpdump: port 443) определяют, что попадёт в файл, а фильтры отображения Wireshark (tls.handshake) только скрывают лишнее в уже записанных данных. Синтаксис у них разный.

Когда какой инструмент

ИнструментДля чегоГде
tcpdumpзахват трафика, быстрый просмотр, запись в файлсервер без графического интерфейса
sngrepSIP-звонки и регистрациисерверы телефонии
Wiresharkподробный разбор записи, протоколы, потокирабочий компьютер

Типичные ошибки

  1. Запуск без прав root — захват с интерфейса требует sudo или соответствующих прав.
  2. Захват на не том интерфейсе — на сервере с несколькими интерфейсами, VPN или Docker трафик может идти не через eth0. Список — tcpdump -D, все интерфейсы сразу — -i any.
  3. Запись без ограничений — без -c или -G файл на загруженном сервере растёт очень быстро.
  4. Путаница фильтров захвата и отображения — у них разный синтаксис.
  5. Ожидание увидеть содержимое HTTPS — в зашифрованном трафике видны адреса, порты, рукопожатие и имя сайта в SNI, но не содержимое запросов.
  6. Перехват чужого трафика — захватывайте только трафик своих систем или с разрешения владельца.

Итог

Анализ пакетов — последний шаг диагностики, когда остальные утилиты не дают ответа. Он показывает, что происходит в соединении на самом деле: кто разрывает соединение, на каком этапе падает TLS-рукопожатие, доходят ли ответы. Для отработки навыка полезно записать и разобрать обычный запрос к сайту: DNS-запрос, установку TCP-соединения, TLS-рукопожатие.

Для проверки отдельных соединений вручную пригодится netcat.

Ресурсы

// Contact

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Написать в Telegram

Отвечаю в течение рабочего дня (03:00–13:00 GMT)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ