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
src, dst — ищет от определенного источника или по определенному назначению (выбирает трафик только с одной стороны)
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
src, dst 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
less, greater — захват трафика определенного размера в байтах
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