Вы пытаетесь захватить пакеты данных, чтобы проанализировать трафик в вашей сети? Возможно, вы администратор сервера, который столкнулся с проблемой и хочет отслеживать передаваемые данные в сети. В любой ситуации утилита tcpdump Linux - это то, что вам нужно.
В этой статье мы подробно обсудим команду tcpdump, а также некоторые руководства по установке и использованию tcpdump в вашей системе Linux.
Что такое команда tcpdump?
Tcpdump это мощный инструмент мониторинга сети, который позволяет пользователю эффективно фильтровать пакеты и трафик в сети. Вы можете получить подробную информацию о TCP / IP и пакетах, передаваемых в вашей сети. Tcpdump - это утилита командной строки, что означает, что вы можете запускать ее на серверах Linux без дисплея.
Системные администраторы также могут интегрировать утилиту tcpdump с cron для автоматизации различных задач, таких как ведение журнала. Поскольку его многочисленные функции делают его достаточно универсальным, tcpdump работает как средство устранения неполадок и безопасности.
Как установить tcpdump в Linux
Хотя в большинстве случаев tcpdump предустановлен в вашей системе, некоторые дистрибутивы Linux не поставляются с пакетом. Поэтому вам, возможно, придется вручную установить утилиту в вашей системе.
Вы можете проверить, установлен ли tcpdump в вашей системе, используя который команда.
какой tcpdump
Если вывод отображает путь к каталогу (/usr/bin/tcpdump), то в вашей системе установлен пакет. Однако, если нет, вы можете легко сделать это с помощью диспетчера пакетов по умолчанию в вашей системе.
Чтобы установить tcpdump в дистрибутивах на основе Debian, таких как Ubuntu:
sudo apt-get install tcpdump
Установить tcpdump на CentOS тоже просто.
sudo yum установить tcpdump
В дистрибутивах на основе Arch:
sudo pacman -S tcpdump
Для установки в Fedora:
sudo dnf установить tcpdump
Обратите внимание, что для пакета tcpdump требуется libcap как зависимость, поэтому убедитесь, что вы также установили его в своей системе.
Примеры tcpdump для захвата сетевых пакетов в Linux
Теперь, когда вы успешно установили tcpdump на свой Linux-компьютер, пришло время отслеживать некоторые пакеты. Поскольку tcpdump требует прав суперпользователя для выполнения большинства операций, вам нужно будет добавить судо к вашим командам.
1. Список всех сетевых интерфейсов
Чтобы проверить, какие сетевые интерфейсы доступны для захвата, используйте -D флаг с помощью команды tcpdump.
tcpdump -D
Прохождение --list-interfaces flag в качестве аргумента вернет тот же результат.
tcpdump --list-интерфейсы
Результатом будет список всех сетевых интерфейсов, имеющихся в вашей системе.
После получения списка сетевых интерфейсов пришло время контролировать вашу сеть путем захвата пакетов в вашей системе. Хотя вы можете указать, какой интерфейс вы хотите использовать, любой аргумент команды tcpdump для захвата сетевых пакетов с использованием любого активного интерфейса.
tcpdump - интерфейс любой
Система отобразит следующий вывод.
Связанный: Что такое модель взаимодействия открытых систем?
2. Формат вывода tcpdump
Начиная с третьей строки, каждая строка вывода обозначает конкретный пакет, захваченный tcpdump. Вот как выглядит вывод одного пакета.
17: 00: 25.369138 wlp0s20f3 Out IP localsystem.40310> kul01s10-in-f46.1e100.net.https: флаги [P.], seq 196: 568, ack 1, win 309, options [nop, nop, TS val 117964079 ecr 816509256], длина 33
Имейте в виду, что не все пакеты захватываются таким образом, но это общий формат, которому следует большинство из них.
Вывод содержит следующую информацию.
- Отметка времени полученного пакета
- Имя интерфейса
- Поток пакетов
- Название сетевого протокола
- IP-адрес и сведения о порте
- Флаги TCP
- Порядковый номер данных в пакете
- Подтвержденные данные
- Размер окна
- Длина пакета
Первое поле (17:00:25.369138) отображает отметку времени, когда ваша система отправила или получила пакет. Записанное время извлекается из местного времени вашей системы.
Второе и третье поля обозначают используемый интерфейс и поток пакета. В приведенном выше фрагменте wlp0s20f3 это имя беспроводного интерфейса и Вне поток пакетов.
Четвертое поле включает информацию, относящуюся к имени сетевого протокола. Как правило, вы найдете два протокола: IP а также IP6, где IP означает IPV4, а IP6 - для IPV6.
Следующее поле содержит IP-адреса или имя исходной и целевой системы. За IP-адресами следует номер порта.
Шестое поле вывода состоит из флагов TCP. В выводе tcpdump используются различные флаги.
Название флага | Значение | Описание |
---|---|---|
SYN | S | Подключение начато |
ПЛАВНИК | F | Подключение завершено |
ТОЛКАТЬ | п | Данные отправлены |
RST | р | Соединение сброшено |
ACK | . | Подтверждение |
Вывод также может содержать комбинацию нескольких флагов TCP. Например, ФЛАГ [f.] означает пакет FIN-ACK.
Двигаясь дальше в выходном фрагменте, следующее поле содержит порядковый номер (seq 196: 568) данных в пакете. Первый пакет всегда имеет положительное целочисленное значение, а последующие пакеты используют относительный порядковый номер для улучшения потока данных.
Следующее поле содержит номер подтверждения (подтверждение 1) или простой номер Ack. Пакет, захваченный на машине отправителя, имеет номер подтверждения 1. На стороне получателя номер Ack - это значение следующего пакета.
Девятое поле вывода соответствует размеру окна (выиграть 309), который представляет собой количество байтов, доступных в приемном буфере. Есть несколько других полей, которые следуют за размером окна, включая максимальный размер сегмента (MSS).
Последнее поле (длина 33) содержит длину всего пакета, захваченного tcpdump.
3. Ограничьте количество перехваченных пакетов
При первом запуске команды tcpdump вы можете заметить, что система продолжает перехватывать сетевые пакеты, пока вы не передадите сигнал прерывания. Вы можете переопределить это поведение по умолчанию, указав количество пакетов, которые вы хотите захватить заранее, используя -c флаг.
tcpdump - интерфейс любой -c 10
Вышеупомянутая команда захватит десять пакетов с любого активного сетевого интерфейса.
4. Фильтровать пакеты по полям
Когда вы устраняете проблему, получение большого блока текста на вашем терминале не облегчает задачу. Вот где в игру вступает функция фильтрации в tcpdump. Вы можете фильтровать пакеты по различным полям, включая хост, протокол, номер порта и т. Д.
Чтобы захватить только TCP-пакеты, введите:
tcpdump - интерфейс любой -c 5 tcp
Точно так же, если вы хотите отфильтровать вывод по номеру порта:
tcpdump --interface any -c 5 порт 50
Вышеупомянутая команда будет получать только пакеты, переданные через указанный порт.
Чтобы получить подробную информацию о пакете для определенного хоста:
tcpdump --interface any -c 5 хост 112.123.13.145
Если вы хотите отфильтровать пакеты, отправленные или полученные конкретным хостом, используйте src или же dst аргумент с командой.
tcpdump --interface any -c 5 SRC 112.123.13.145
tcpdump --interface any -c 5 dst 112.123.13.145
Вы также можете использовать логические операторы а также а также или же чтобы объединить два или более выражений вместе. Например, чтобы получить пакеты, принадлежащие исходному IP 112.123.13.145 и использовать порт 80:
tcpdump --interface any -c 10 src 112.123.13.145 и порт 80
Сложные выражения можно сгруппировать с помощью круглые скобки следующим образом:
tcpdump --interface any -c 10 "(src 112.123.13.145 или src 234.231.23.234) и (порт 45 или порт 80)"
5. Просмотр содержимого пакета
Вы можете использовать -А а также -Икс flags с помощью команды tcpdump для анализа содержимого сетевого пакета. В -А флаг означает ASCII формат и -Икс обозначает шестнадцатеричный формат.
Чтобы просмотреть содержимое следующего сетевого пакета, захваченного системой:
tcpdump --interface any -c 1 -A
tcpdump --interface any -c 1 -x
Связанный: Что такое потеря пакетов и как устранить ее причину?
6. Сохранить данные захвата в файл
Если вы хотите сохранить данные захвата для справки, tcpdump может вам помочь. Просто передай -w флаг с командой по умолчанию для записи вывода в файл вместо его отображения на экране.
tcpdump --interface any -c 10 -w data.pcap
В .pcap расширение файла означает захват пакетов данные. Вы также можете выполнить вышеупомянутую команду в подробном режиме, используя -v флаг.
tcpdump --interface any -c 10 -w data.pcap -v
Чтобы прочитать .pcap файл с помощью tcpdump, используйте -р флаг, за которым следует путь к файлу. В -р означает Читать.
tcpdump -r data.pcap
Вы также можете фильтровать сетевые пакеты из пакетных данных, сохраненных в файле.
tcpdump -r data.pcap порт 80
Мониторинг сетевого трафика в Linux
Если вам была поручена задача администрирования сервера Linux, то команда tcpdump - отличный инструмент, который можно включить в ваш арсенал. Вы можете легко решить проблемы, связанные с сетью, захватив пакеты, передаваемые по вашей сети, в режиме реального времени.
Но перед этим ваше устройство должно быть подключено к Интернету. Для новичков в Linux даже подключение к Wi-Fi через командную строку может быть немного сложной задачей. Но если вы используете правильные инструменты, это совсем несложно.
Хотите подключиться к сети Wi-Fi через командную строку Linux? Вот что вам нужно знать о команде nmcli.
Читать далее
- Linux
- Безопасность
- Сетевая криминалистика
Дипеш - младший редактор Linux в MUO. Он пишет информационный контент в Интернете более 3 лет. В свободное время он любит писать, слушать музыку и играть на гитаре.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Еще один шаг…!
Пожалуйста, подтвердите свой адрес электронной почты в электронном письме, которое мы вам только что отправили.