Как использовать tcpdump в Linux
Операционная система Linux отличается большим набором различных инструментов для системных администраторов и разработчиков. Один из таких инструментов – tcpdump, который вовсе не предназначается для чайников. Эта утилита известна своей сложностью, огромным количеством опций и фильтров. Сегодня я расскажу о том, для чего она вообще нужна и как ей пользоваться, приводя примеры в Linux Ubuntu 19.04.
sudo apt install tcpdump
В том случае, если у меня установлен репозиторий Fedora, Red Hat или CentOS, команда будет выглядеть несколько иначе.
sudo yum install tcpdump
Что за утилита tcpdump
tcpdump – это мощная и популярная консольная утилита, с помощью которой можно проанализировать или перехватить сетевые пакеты в Linux. Вне зависимости от того, входящие они или исходящие, она перехватит любой пакет из определенного интерфейса. Работает она через командную строку «Терминал», и поэтому порой кажется трудной для новичков.Как установить tcpdump
Во многих дистрибутивах операционной системы Linux утилита tcpdump поставляется в комплекте со стандартным набором программ. Если же по каким-либо причинам ее в компьютере нет (ну, не найдена она), тогда можно провести установку с помощью специальной команды. Открываю командную строку «Терминал» нажатием на комбинацию клавиш Ctrl + Alt + T, затем ввожу вот такой запрос:sudo apt install tcpdump
В том случае, если у меня установлен репозиторий Fedora, Red Hat или CentOS, команда будет выглядеть несколько иначе.
sudo yum install tcpdump
Вот тут прям черным по белому… Нет, белым по черному (не совсем это и черный) написано, что утилита «уже установлена».
Если же утилита все же установлена, тогда после ввода команды «Терминал» выдаст уведомление о том, что все компоненты уже есть. Теперь можно приступать к изучению опций и началу работы с утилитой.
tcpdump {опция} -i {интерфейс} {фильтры}
Интерфейс указывать обязательно, так как именно через него и будет проводиться отслеживание проводимой процедуры. Если этого не сделать, тогда утилита включит первый интерфейс из списка.
sudo tcpdump -D
Если же утилита все же установлена, тогда после ввода команды «Терминал» выдаст уведомление о том, что все компоненты уже есть. Теперь можно приступать к изучению опций и началу работы с утилитой.
Синтаксис команды
Перед тем как приступать к работе с утилитой tcpdump, необходимо изучить ее синтаксис и основные опции, необходимые для нормальной работы. С помощью опций можно настроить отображение и основные возможности, фильтры же отсеют ненужные пакеты. Синтаксис данного инструмента выглядит следующим образом:tcpdump {опция} -i {интерфейс} {фильтры}
Интерфейс указывать обязательно, так как именно через него и будет проводиться отслеживание проводимой процедуры. Если этого не сделать, тогда утилита включит первый интерфейс из списка.
Основные опции
Использовать все опции необязательно, но их знание значительно может облегчить работу с инструментом. Далее в форме списка я перечислю некоторые из них, наиболее востребованные:- -A – сортирует все пакеты формата ASCII.
- -c – завершает процедуру отслеживания после перехвата определенного установленного количества пакетов.
- -C – создает новый файл в процессе записи пакета в том случае, если его размер больше заданного показателя.
- -D – выводит список доступных сетевых интерфейсов.
- -e – предоставляет информацию по уровню соединения для каждого пакета данных. Это особенно полезно во время отображения MAC адреса.
- -f – отображает доменное имя для IP-адресов.
- -F — считывает пакеты из указанного файла, а не сетевого интерфейса.
- -G – создает новый файл лога спустя установленный промежуток времени.
- -H – обнаруживает заголовки 802.11s.
- -i – представляет наименование интерфейса, используемого для перехвата пакетов. Можно, конечно, использовать для этого все возможные интерфейсы, но для этого стоит указать any.
- -I – переключает интерфейс в режим монитора для захвата всех обрабатываемых пакетов.
- -j – устанавливает формат Timestamp для отслеживания пакетов.
- -J – предоставляет доступные варианты формата Timestamp.
- -K – отключает проверку контрольных сумм пакетов.
- -l (маленькая L) – добавляет поддержку прокрутки к выводу.
- -L – воспроизводит на экране поддерживаемые протоколы подключения для указанного интерфейса.
- -n – отключает отображение доменных имен.
- -r – считывает пакеты из файла, созданного с помощью опции -w.
- -v, -vv, -vvv – производит более подробный вывод по проведенной операции.
- -q – предоставляет минимум информации по сканированию.
- -w – записывает вывод по проведенной операции в файл.
- -Z – указывает на пользователя, от имени которого создаются файлы.
Фильтры
Утилита tcpdump отличается возможностью использования различного вида фильтров. Их можно комбинировать между собой, чтобы в результате на экране отображалась только самая необходимая информация. Вот некоторые наиболее популярные:- host – указывает наименование хоста.
- net – выводит IP-адрес подсети и сети.
- ip – выводит адреса протокола.
- src – предоставляет список пакетов, отправленных с указанного адреса.
- dst – отображает пакеты, которые были получены указанным адресом.
- arp, udp, tcp – фильтруют по одному из протоколов.
- port – выводят информацию, относящуюся к определенному порту.
- and, or – объединяют нескольких фильтров в команде.
- less, greater — выводят меньше или больше пакетов от указанного ранее размера.
Как пользоваться утилитой
Для более детального понимания того, как же пользоваться утилитой tcpdump в операционной системе Linux необходимо изучить некоторые примеры. Покажу команды, которые помогут даже новичку понять структуру и принцип действия инструмента.Просмотр списка доступных интерфейсов
Прежде чем приступать к работе с инструментом tcpdump, для начала необходимо посмотреть список всех доступных на данный момент сетевых интерфейсов. Судя по указанной выше инструкции, для этого мне понадобится использовать опцию -D. Открываю командную строку «Терминал» и даю вот такую команду:sudo tcpdump -D
Вот так в моем случае выглядит список доступных интерфейсов после выдачи соответствующей команды с утилитой tcpdump.
В моем случае выходит 6 доступных интерфейсов, но не факт, что у всех они выйдут – у кого-то их может быть и побольше. Для примера возьму enp0s3.
sudo tcpdump -i enp0s3
После нажатия на кнопку Enter и принятия введенной команды «Терминал» начнет непрерывно отображать перехваченные интернет-пакеты. Для остановки потока мне потребуется просто нажать на комбинацию Ctrl + C.
В моем случае выходит 6 доступных интерфейсов, но не факт, что у всех они выйдут – у кого-то их может быть и побольше. Для примера возьму enp0s3.
Захват трафика
Для отслеживания одного сетевого интерфейса необходимо использовать опцию -i. Самое главное, после нее указать наименование интерфейса, который необходимо отследить. В моем примере команда выглядит вот так:sudo tcpdump -i enp0s3
После нажатия на кнопку Enter и принятия введенной команды «Терминал» начнет непрерывно отображать перехваченные интернет-пакеты. Для остановки потока мне потребуется просто нажать на комбинацию Ctrl + C.
Ввожу команду для начала отслеживания, после чего в «Терминале» начнут отображаться пакеты и подробные данные об их использовании.
В данном случае поочередно выводятся {время получения пакета} {версия протокола} {адрес отправителя} {адрес получателя} {дополнительная информация} {размер пакета в байтах}.
sudo tcpdump -v -i enp0s3
В данном случае поочередно выводятся {время получения пакета} {версия протокола} {адрес отправителя} {адрес получателя} {дополнительная информация} {размер пакета в байтах}.
Захват трафика с подробным выводом информации
В том случае, если понадобится выводить больше информации об интернет пакетах, я введу запрос следующего вида:sudo tcpdump -v -i enp0s3
В данном случае информация отображается уже более подробно.
Если обратить внимание, можно заметить, что в каждой строчке стало куда больше информации. Так вдобавок к стандартной вышеуказанной форме добавляется еще несколько данных: {версия протокола} {продолжительность действия протокола} {длина заголовка поля} {версия пакета} {размер пакета}.
А если вписать в строку двойную или тройную v, тогда в окне отобразится еще больше информации.
sudo tcpdump -i enp0s3-w file.pcap
Обязательно при этом указываем будущее наименование файла и определяем его расширение как «.pcap». А вот команда для открытия файла выглядит немного иначе:
sudo tcpdump -r file.pcap
Если обратить внимание, можно заметить, что в каждой строчке стало куда больше информации. Так вдобавок к стандартной вышеуказанной форме добавляется еще несколько данных: {версия протокола} {продолжительность действия протокола} {длина заголовка поля} {версия пакета} {размер пакета}.
А если вписать в строку двойную или тройную v, тогда в окне отобразится еще больше информации.
Сохранение данных в отдельный файл
Чтобы сохранить данные об отслеживаемом трафике в отдельный файл, можно использовать опции -w и -r. Отличный вариант, когда пользователю необходимо сохранить большой объем текста для возможности его дальнейшего разбора. Причем первая именно записывает информацию, а вторая позволяет посмотреть сохраненный файл. В первом случае команда выглядит следующим образом:sudo tcpdump -i enp0s3-w file.pcap
Обязательно при этом указываем будущее наименование файла и определяем его расширение как «.pcap». А вот команда для открытия файла выглядит немного иначе:
sudo tcpdump -r file.pcap
Заключение
Если знать, для чего нужны те или иные опции или фильтры, работать с утилитой tcpdump будет не так трудно. И всегда стоит помнить о необходимости упоминания интерфейса, с которым пользователь планирует работать, и правильности постановки определенных элементов. В ином случае либо команда не сработает, либо на экран выведется не та информация.httрs://tеhnichка.рro/use-tcpdump-linux/
Другие статьи
Исправляем ошибку установки обновлений Windows 10
Windows 10 — это уже не самая новая операционная система от Microsoft, но иногда пользователи
Сброс сетевых настроек Windows - командная строка
Сетевые проблемы могут быть очень раздражающими и влиять на нашу работу и повседневную жизнь. В