Прямой ответ
Захват пакетов фиксирует фактический обмен по сети, поэтому расхождение между ожидаемым и фактическим поведением определяется по дампу, а не по предположению.
# Захват обмена с узлом на порту сервиса
tcpdump -i eth0 -w dump.pcap 'host 10.0.0.5 and port 5432'
# Ограничение объёма: 4 файла по 100 МБ, циклически
tcpdump -i eth0 -C 100 -W 4 -w dump.pcap 'port 443'
# Чтение дампа с фильтрацией
tcpdump -r dump.pcap 'tcp[tcpflags] & tcp-syn != 0'
| Параметр | Назначение |
|---|---|
| Фильтр захвата | Ограничение объёма фиксируемых пакетов |
| Ограничение размера файла | Предотвращение исчерпания диска |
| Циклическая запись | Удержание последних данных при длительном захвате |
Фильтр задаётся до начала захвата, поэтому пакеты вне условия не фиксируются и не занимают место. О базовой диагностике — в статье про сетевую диагностику.
Анализ обмена и признаки проблем
Дамп показывает последовательность пакетов, поэтому признак проблемы определяется по структуре обмена.
Повторная передача. Один и тот же сегмент передаётся несколько раз, поэтому получатель не подтверждает получение. Признак указывает на потерю пакетов в пути.
Отсутствие подтверждения. Сегмент передан, но подтверждение не получено в течение времени ожидания, поэтому отправитель повторяет передачу.
Сброс соединения. Пакет сброса прерывает соединение, поэтому обмен прекращается без штатного закрытия.
Практическое следствие: признак проблемы определяется по последовательности пакетов, а не по сообщению об ошибке в приложении.
Отдельный аспект — объём захвата. Захват без фильтра фиксирует весь трафик интерфейса, поэтому файл растёт быстро и диск исчерпывается. Ограничение размера файла и циклическая запись предотвращают исчерпание.
Три признака некорректного захвата.
Отсутствие фильтра. Фиксируется весь трафик интерфейса, поэтому нужный обмен трудно найти, а объём растёт быстро.
Захват не на том интерфейсе. Пакеты проходят через другой интерфейс, поэтому обмен не фиксируется.
Отсутствие ограничения размера файла. Диск исчерпывается, поэтому захват прерывается и система испытывает нехватку места.
О работе с утилитами захвата — в статье про tcpdump и ss; о распределении задержек — в статье про диагностику задержек.
Хранение дампа и доступ к нему
Дамп содержит фактическое содержимое обмена, поэтому доступ к файлу ограничивается.
Чувствительные данные. Захват фиксирует содержимое пакетов, поэтому учетные данные и персональные данные могут попасть в файл. Доступ к дампу ограничивается кругом участников разбора.
Срок хранения. Дамп хранится в течение времени, необходимого для разбора, поэтому длительное хранение увеличивает риск доступа к чувствительным данным.
Передача дампа. Файл передаётся для анализа в защищённом канале, поскольку содержимое не предназначено для распространения.
Практическое следствие: захват выполняется на минимально необходимый период с фильтром, ограничивающим объём фиксируемых данных, поэтому доля чувствительных сведений в файле сокращается.
Отдельный аспект — воспроизведение захвата. Условие фильтра и интерфейс фиксируются, поэтому захват воспроизводится при повторном возникновении проблемы.
Время в дампе и порядок пакетов
Дамп содержит отметки времени для каждого пакета, поэтому задержки между этапами обмена измеряются.
Отметка времени пакета. Каждый пакет фиксируется с отметкой, поэтому интервал между передачей и подтверждением определяется по дампу.
Порядок фиксации. Пакеты фиксируются в порядке поступления на интерфейс, поэтому последовательность обмена отражается в дампе без восстановления.
Практическое следствие: интервалы между пакетами показывают, на каком этапе возникает ожидание, поэтому задержка локализуется без дополнительного измерения.
Практика: захват и анализ дампа
1. Задайте фильтр до начала захвата. Пакеты вне условия не фиксируются, поэтому объём ограничен нужным обменом.
2. Ограничьте размер файла и включите циклическую запись. Диск не исчерпывается, при этом удерживаются последние данные.
3. Проверяйте интерфейс захвата. Пакеты проходят через определённый интерфейс, поэтому захват выполняется на правильном.
4. Анализируйте последовательность пакетов. Повторные передачи и отсутствие подтверждений указывают на потерю пакетов.
5. Сохраняйте дамп для разбора. Файл передаётся для анализа, поэтому разбор выполняется без повторного захвата.
6. Исключайте чувствительные данные из дампа. Захват фиксирует содержимое пакетов, поэтому доступ к файлу ограничивается.
7. Проверяйте время в дампе. Задержки между пакетами показывают, где возникает ожидание.
Рекомендации:
- Различайте захват и анализ. Захват фиксирует обмен, анализ выполняется по сохранённому файлу, поэтому повторный захват не требуется.
- Учитывайте объём трафика. Захват без фильтра на загруженном интерфейсе исчерпывает диск быстро.
- Проверяйте наличие признака в дампе. Повторная передача либо сброс соединения подтверждает проблему, а не предполагает её.
- Фиксируйте условие захвата в записи. Условие фильтра требуется для воспроизведения захвата.
- Пересматривайте фильтр при изменении топологии. Изменение адреса либо порта делает прежний фильтр непригодным.
Практический сценарий: запросы завершались по таймауту без явной причины
Контекст: часть запросов к сервису завершалась по таймауту, при этом журнал приложения не содержал признака ошибки соединения.
- Диагностика. Захват на интерфейсе показал повторные передачи сегментов без подтверждения получения. Отправитель повторял передачу, после исчерпания числа повторов соединение закрывалось.
- Причина. Пакеты терялись на участке пути между узлами, поэтому подтверждение не поступало. Приложение ожидало ответа до таймаута, при этом признак потери в журнале отсутствовал.
- Действия. (а) Выполнили захват с фильтром по адресу и порту сервиса, чтобы ограничить объём; (б) проанализировали последовательность пакетов и определили долю повторных передач; (в) локализовали участок потери по адресу, на котором прекращались подтверждения; (г) сократили таймаут и добавили повтор запроса, чтобы единичная потеря не приводила к ошибке; (д) сохранили дамп для передачи сетевой команде.
- Результат. Причина таймаутов определена по дампу, а повтор запроса компенсирует единичные потери.
Вывод: журнал приложения не содержит признака потери пакетов, поэтому причина таймаута определяется по дампу. Повторные передачи без подтверждений указывают на потерю в пути.
FAQ
Зачем нужен фильтр при захвате? Ограничивает объём фиксируемых пакетов, поэтому файл не растёт быстро и нужный обмен легко найти. Пакеты вне условия не фиксируются.
Что указывает на потерю пакетов? Повторная передача одного сегмента и отсутствие подтверждения получения. Отправитель повторяет передачу после истечения времени ожидания.
Как предотвратить исчерпание диска при захвате? Ограничением размера файла и циклической записью, поэтому удерживаются последние данные, а объём ограничен.
Можно ли анализировать дамп позже? Да, захват сохраняется в файл, поэтому анализ выполняется без повторного захвата. Условие фильтра фиксируется для воспроизведения.
Источники: tcpdump man page, tshark, pcap-filter — ссылки в шапке.