Главная
Новости
Строительство
Ремонт
Дизайн и интерьер




21.09.2022


14.09.2022


12.09.2022


27.01.2021


27.01.2021





Яндекс.Метрика





tcpdump

30.08.2022

tcpdump (от TCP и англ. dump — свалка, сбрасывать) — утилита UNIX (есть клон для Windows), позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа.

Для выполнения программы требуется наличие прав суперпользователя и прямой доступ к устройству (так, например, запуск из Jail во FreeBSD невозможен).

Основные назначения tcpdump:

  • Отладка сетевых приложений.
  • Отладка сети и сетевой конфигурации в целом.

Описание:

Ключи

Примеры

Если tcpdump запустить без параметров, он будет выводить информацию обо всех сетевых пакетах. С помощью параметра -i можно указать сетевой интерфейс, с которого следует принимать данные:

# tcpdump -i eth2

Чтобы узнать получаемые или отправляемые пакеты от определенного хоста, необходимо его имя или IP-адрес указать после ключевого слова host:

# tcpdump host nameofserver

Следующим образом можно узнать о пакетах которыми обмениваются nameofserverA и nameofserverB:

# tcpdump host nameofserverA and nameofserverB

Для отслеживания только исходящих пакетов от какого-либо узла нужно указать следующее:

# tcpdump src host nameofserver

Только входящие пакеты:

# tcpdump dst host nameofserver

Порт отправителя и порт получателя соответственно:

# tcpdump dst port 80 # tcpdump src port 22

Чтобы отслеживать один из протоколов TCP, UDP, ICMP, его название следует указать в команде. Использование операторов and (&&), or (||) и not (!) позволяет задавать фильтры любой сложности. Приоритет операторв: инверсия, затем and, после — or.

Пример фильтра, отслеживающего только UDP-пакеты, приходящие из внешней сети:

# tcpdump udp and not src net localnet

Программная реализация

Программа состоит из двух основных частей: части захвата пакетов (обращение к библиотеке, libpcap (Unix) или pcap (Windows)) и части отображения захваченных пакетов (которая на уровне исходного кода является модульной и для поддержки нового протокола достаточно добавить новый модуль).

Часть захвата пакетов (при запуске) передаёт «выражение выбора пакетов» (идущее после всех параметров командной строки) напрямую библиотеке захвата пакетов, которая проверяет выражение на синтаксис, компилирует его (во внутренний формат данных), а затем копирует во внутренний буфер программы сетевые пакеты, проходящие через выбранный интерфейс и удовлетворяющие условиям в выражении.

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

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

Кроссплатформенность

Изначально программа tcpdump была разработана для UNIX-подобных систем, позже — портирована на другие системы.

Для Windows в настоящее время известны:

  • tcpdump для Windows — коммерческая реализация, в виде одного файла tcpdump.exe
  • WinDump — реализация с открытым кодом, требующая установки библиотеки WinPcap (свободное ПО).