Облачное хранилище

Команды и примеры использования tcpdump

Tcpdump полезное и необходимое приложения для Linux/UNIX систем. С помощью tcpdump легко снять трафик с вашего сетевого интерфейса, для дальнейшего разбора. Без tcpdump сложно разобрать ошибки, которые возникают при работе с сетью и IP телефонией в целом.
В данной статье мы рассмотрим, как установить приложение tcpdump на ваш сервер и научим как правильно им пользоваться.

Установка приложения tcpdump

В Debian/Ubuntu/Linux Mint системах необходимо сделать следующее:

sudo apt-get install tcpdump

В системе RedHat/CentOS/Fedora необходимо сделать следующее:

sudo yum install tcpdump

Описание ключей приложения tcpdump

Ниже приведены несколько примеров, которые помогут вам проще понять и упростить работу с приложением tcpdump.

Tcpdump, по умолчанию, принимает только первые 68 96 байт данных из пакета. Если вы хотите, посмотреть более подробные пакеты, то добавьте опцию -s <число>, где число обозначает количество байтов, которые вы хотите захватить. Если установить -s 0 (ноль)- это означает захватывать все пакеты. Вот краткий список опций, которые используются больше всего:

  • -i any – прослушивать трафик со всех имеющихся интерфейсов
  • -n – отображать IP адреса вместо имени хостов
  • -nn – отображать IP адреса и номера портов вместо имени хостов и названия протоколов
  • -X – показывать пакет в hex и ASCII формате
  • -XX – показывать пакет в hex и ASCII формате и выводить заголовок ethernet
  • -v, -vv, -vvv – уровни отображаемой информации о пакете, которую вы получаете
  • -c – получение определенного N количества пакетов, далее запись останавливается
  • -s – количество байтов в пакете, которые обрабатывает tcpdump
  • -S – позволяет не обрабатывать абсолютные порядковые номера в относительные
  • -e – получение ethernet заголовка
  • -q – показывает минимальное количество информации о пакете
  • -E – расшифровать трафик IPSec, предоставляя ключ шифрования
  • -r – позволяет приложению tcpdump прочитать данные из файла
  • -t – не отображать метку времени в каждой строке
  • -tt – отображать неформатированную метку времени в каждой строке
  • -ttt – показывать дату и время
  • -w – записывать данные в файл

Примеры использования приложения tcpdump

Различные выражения позволяют вам легко найти необходимый трафик. Tcpdump позволяет гибко настроить фильтры. В приложении tcpdump есть три типа выражений: type, dir и proto.

Под выражениями type понимается следующее host, net и port. Выражения типа dir – это src, dst, src или dst и src и dst. Ниже представлены примеры использования различных выражений:

host – просматривает трафик на основе IP адреса или имени хоста, если вы не используете ключ -n

tcpdump host 192.168.3.114

srcdst – ищет от определенного источника или по определенному назначению (выбирает трафик только с одной стороны)

tcpdump src 192.168.4.115 <br>tcpdump dst 192.168.5.116

net – захватывает весь трафик в сети, необходимо установить маску подсети

tcpdump net 192.168.3.0/24

proto – работает с протоколами tcp, udp и icmp. (Не надо писать proto)

tcpdump icmp

port – захватывает трафик по определенному порту

tcpdump port 5060

srcdst port – захватывает трафик по определенному порту от источника или к IP адресу назанчения

tcpdump src port 5060<br>tcpdump dst port 5060

src/dst, port, protocol – сочетание всех трех выражений

tcpdump src port 5060 and tcp <br>tcpdump udp and src port 5060

Также есть возможность фильтрации по диапазону портов.

portrange – захват трафика по диапазону портов

tcpdump portrange 5060-5062

lessgreater – захват трафика определенного размера в байтах

tcpdump less 32 
tcpdump greater 128

Так же в этом случае вы можете использовать символы (>, <, <=, >=)

tcpdump > 32 
tcpdump <= 128

Запись в файл

Tcpdump позволяет сохранять захваченный трафик в файл. Для этого необходимо использовать ключ -w. Если вы хотите считать трафик из файла, то необходимо использовать ключ -r.

При сохранении файла желательно использовать расширение файла *.cap или *.pcap. В дальнейшем, полученный файл, можно будет открыть в WireShark.

Запись всего трафика по порту 5060 в файл.

tcpdump -s1514 port 5060 -w voipnotes.cap

При необходимости файл можно загрузить заново в tcpdump.

tcpdump -r voipnotes.cap

Использование выражений И, ИЛИ и ИЛИ НЕ

Tcpdump позволяет комбинировать выражения при помощи логических выражений

И

and или &&

ИЛИ

or или ||

ИЛИ НЕ

not или !

Примеры:

TCP трафик от 192.168.2.113 и порт назначения 5060

tcpdump -nnvvS src 192.168.2.113 and dst port 5060

Трафик из сети 192.168.0.0 в сети 10.0.0.0 или 172.16.0.0

tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16

Исключение ICMP пакетов, пункт назначения 192.168.0.2, источник подсеть 172.16.0.0

tcpdump -nvvXSs 1514 dst 192.168.0.2 and src net and not icmp

Трафик от хоста office и не по порту SSH

tcpdump -vv src office and not dst port 22

Группировка фильтров

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

Трафик от 192.168.2.114 и порты назначения 5060 или 22

tcpdump ‘src 192.168.2.114 and (dst port 5060 or 22)’

Расширенные настройки фильтра

Можно отфильтровать трафик на основе конкретных частей пакета. Бывает полезно при поиске отображать пакеты, которые содержат  ACK или SYN.

Показывать пакеты URGENT (URG)

tcpdump ‘tcp[13] & 32!=0‘

Показывать пакеты ACKNOWLEDGE (ACK)

tcpdump ‘tcp[13] & 16!=0‘

Показывать пакеты PUSH (PSH)

tcpdump ‘tcp[13] & 8!=0‘

Показывать пакеты RESET (RST)

tcpdump ‘tcp[13] & 4!=0‘

Показывать пакеты SYNCHRONIZE (SYN)

tcpdump ‘tcp[13] & 4!=0‘

Показывать пакеты FINISH (FIN)

tcpdump ‘tcp[13] & 4!=0‘

Показывать пакеты SYNCHRONIZE/ACKNOWLEDGE (SYNACK)

tcpdump ‘tcp[13]=18‘

Примеры использования tcpdump 

Здесь мы покажем фильтры, которые мы сами используем для захвата SIP трафика.

– Захват всего трафика по порту 5060 и сохранение в файл

tcpdump -iany -nnv -s1514 port 5060 -w ~/Test.cap

– Захват трафика по порту 5060 с определенного IP адреса и сохранение в файл

tcpdump -iany -nnv -s1514 port 5060 src 192.168.1.150 -w ~/Test.cap

– Захват трафика по порту 5060 на определенный IP адрес и сохранение в файл

tcpdump -iany -nnv -s1514 port 5060 dst 192.168.1.150 -w ~/Test.cap

– Захват трафика по порту 5060 на определенный IP адрес и сохранение в файл, с указанием каталога

tcpdump -iany -nnv -s1514 port 5060 dst 192.168.1.150 -w ~/usr/temp/Test.cap

– Захват трафика со всех интерфейсов, по хосту 10.81.25.201 и записывать в файл(в файл включается название хоста машины и дата, очень удобно для дальнейшего хранения)

tcpdump -iany -nnv -s1514 –C 100 host 10.81.25.201  -w ~/sipvoipnotesru__${HOSTNAME}_$(date +%Y-%m-%d).cap

Ну а для анализа пользуемся WireShark ?

За материалы спасибо voipnotes.ru