Открыть сервисСервис

SNOOP — протокол мониторинга сети

SNOOP — утилита и одноимённый протокол мониторинга сетевого трафика, входящая в состав операционных систем семейства Solaris, SunOS, а позднее — OpenSolaris и illumos. Программа snoop захватывает пакеты, проходящие через сетевой интерфейс, и выводит их содержимое в человекочитаемом виде или сохраняет в файл для последующего анализа. Инструмент является аналогом tcpdump в системах Linux и BSD и исторически выполнял сходные задачи при отладке сетевых приложений и диагностике проблем связи.

Общие сведения

Утилита snoop появилась в SunOS 4.x и была перенесена в Solaris, где осталась стандартным средством перехвата пакетов. Она работает в режиме «сниффера»: программа переводит указанный интерфейс в promiscuous mode (если это требуется) и копирует все проходящие через него кадры. Захваченные данные выводятся на экран в сжатом виде — с указанием источника, назначения, протокола верхнего уровня и полезной нагрузки, либо записываются в файл в формате, совместимом с tcpdump и другими анализаторами.

Основные возможности:

  • захват пакетов на выбранном интерфейсе;
  • фильтрация по хостам, протоколам и портам;
  • вывод заголовков пакетов или полного содержимого в шестнадцатеричном/ASCII виде;
  • запись трафика в файл и последующее чтение;
  • генерация статистики по сессиям.

Синтаксис и основные опции

Общая форма вызова:

`` snoop [-d interface] [-c count] [-o file] [-i file] [фильтр] ``

Наиболее часто используемые опции:

ОпцияНазначение
-d deviceуказать сетевой интерфейс (например, hme0, bge0, e1000g0)
-c countограничить число захватываемых пакетов
-o fileзаписать захваченный трафик в файл
-i fileпрочитать ранее сохранённый файл вместо захвата «в реальном времени»
-vподробный вывод (разбор всех уровней протоколов)
-Vвывод с заголовками всех протокольных уровней
-a«аудио» режим — вывод пакетов с задержкой, имитирующей поток
-sпоказывать только размер пакета
`-t d\n\r\a`формат времени: дата, время, относительное или абсолютное
-Pне переводить интерфейс в promiscuous mode
-Aвыводить все после первого пакета TCP-сессии

Фильтрация трафика

snoop поддерживает выражения фильтрации в стиле BSD Packet Filter (BPF). Примеры:

`` snoop -v host 192.168.1.10 snoop port 22 and not host 10.0.0.1 snoop ip and tcp ``

Фильтр разбирается библиотекой libpcap (в illumos/OpenSolaris) или собственным парсером в старых версиях SunOS. Поддерживаются операции and, or, not, сравнение по IP-адресам, доменным именам, номерам портов и типам протоколов.

Формат вывода

По умолчанию snoop выводит одну строку на пакет:

`` 12:01:03.291733 host1 -> host2 TCP D=22 S=51234 Ack=392810293 Win=32768 Len=0 ``

Строка содержит время, адреса отправителя и получателя, протокол и ключевые поля транспортного или прикладного уровня. С опцией -v выводится полный разбор: Ethernet-заголовок, IP-заголовок, TCP/UDP-заголовок, данные. Шестнадцатеричный дамп сопровождается ASCII-колонкой.

Запись и воспроизведение трафика

Файлы, созданные через -o, содержат пакеты в формате, который можно анализировать офлайн:

`` snoop -o capture.snoop snoop -i capture.snoop -v host 10.0.0.5 ``

Фильтрация при чтении (-i) выполняется по уже сохранённым данным, что позволяет сократить объём захвата на диске и уточнять условия анализа после сбора. Формат файлов snoop поддерживается рядом сторонних инструментов, включая Wireshark (ранее Ethereal).

Применение

snoop используется системными администраторами и инженерами по поддержке для:

  • диагностики сетевых ошибок (потеря пакетов, неверные маршруты, конфликты адресов);
  • анализа работы протоколов прикладного уровня;
  • проверки корректности настройки брандмауэров и фильтров;
  • отладки клиент-серверных приложений;
  • обучения сетевым технологиям — наглядная демонстрация инкапсуляции и обмена пакетами.

В современных дистрибутивах на базе illumos (OpenIndiana, OmniOS) snoop сохранён как штатная утилита; в коммерческих Solaris 11 она также присутствует. На практике для глубокого анализа трафика файлы snoop часто конвертируются или открываются в Wireshark.

Ограничения

Утилита не шифрует и не расшифровывает данные — при работе с HTTPS, SSH и прочими защищёнными протоколами видна только обвязка заголовков. Захват трафика на загруженных интерфейсах может приводить к пропуску пакетов; для точного учёта рекомендуется использовать аппаратные средства или BPF-фильтры. snoop не поддерживает захват на удалённых хостах — доступ к интерфейсу должен быть локальным.

См. также

Источники

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru