Linux поставляется с множеством сетевых утилит на выбор. tcpdump — один из таких мощных сетевых инструментов, который может захватывать и анализировать сетевой трафик, если вам нужно устранить сетевые ошибки в Linux.

Давайте познакомимся с командой tcpdump и узнаем, как использовать ее для захвата сетевого трафика.

Установка tcpdump в Linux

tcpdump обычно предустановлен с все основные дистрибутивы Linux и альтернативы, основанные на безопасности. Таким образом, вы сможете использовать его сразу же, набрав tcpdump с судо префикс.

Если вы не можете запустить команду tcpdump и застряли на «tcpdump: команда не найдена", давайте узнаем, как установить tcpdump на вашем компьютере с Linux.

Чтобы установить tcpdump, запустите терминал и выполните команду, соответствующую используемому дистрибутиву Linux:

В производных Debian/Ubuntu запустите:

Судо подходитполучить установить tcpdump

На Арочные системы, бежать:

sudo pacman -S tcpdump

Чтобы установить утилиту tcpdump в Fedora, CentOS и RHEL, введите следующую команду:

instagram viewer
судо днф установить tcpdump

Обратите внимание, что если вас попросят установить libcap, введите Да или же Д так как это основная зависимость, без которой tcpdump откажется запускаться. Это должно установить утилиту tcpdump и устранить ошибку «команда не найдена».

Теперь, когда tcpdump установлен в вашей системе, давайте рассмотрим различные варианты и функции, которые он предлагает.

Захват сетевого трафика с помощью tcpdump

tcpdump предлагает множество флагов для изменения своего выполнения, но его также можно запускать как отдельную команду. Однако запуск tcpdump без каких-либо флагов или аргументов означал бы игнорирование всего его потенциала. Всегда лучше использовать несколько флагов для настройки выполнения и вывода по мере необходимости.

Введите эту команду для мониторинга сетевых передач с помощью tcpdump:

судо tcpdump

Теперь tcpdump начнет автоматически захватывать сетевые пакеты, пока сигнал прерывания отправляется с Ctrl + Z прерывать процесс вручную. Чтобы ограничить общее количество захваченных пакетов, используйте флаг и введите желаемый лимит пакетов рядом с ним:

судо tcpdump -c 5

Если вы не можете понять вывод прямо сейчас, вам нужно ознакомиться с форматом вывода tcpdump первый.

Проверьте доступные сетевые интерфейсы с помощью tcpdump

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

Вот как получить список всех доступных сетевых интерфейсов с помощью tcpdump:

судо tcpdump -D

Или, вы можете добавить --list-интерфейсы флаг к команде:

судо tcpdump --список-интерфейсы

Возвращенный вывод содержит список всех активных сетевых интерфейсов, которые может прослушивать tcpdump. Чтобы настроить tcpdump для захвата передач с определенного сетевого интерфейса, введите следующую команду:

sudo tcpdump -i interface_id

Или, вы можете добавить --интерфейс флаг к команде:

судо tcpdump --интерфейсinterface_id

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

Изучение фильтров tcpdump

tcpdump способен захватывать огромное количество трафика за один запуск. Такая информационная перегрузка может сбить вас с толку при расследовании или устранении неполадок с конкретным хостом или сетевым протоколом.

Здесь в игру вступают фильтры tcpdump. Вы можете добавить к команде tcpdump определенные флаги, чтобы отфильтровать сетевой трафик и захватить определенные пакеты. Затем вы можете сохранить эти пакеты и позже проанализировать их, чтобы добраться до корня любых проблем, связанных с сетью. Давайте узнаем, как использовать фильтры в tcpdump.

Фильтрация пакетов на основе используемого сетевого протокола

Чтобы отфильтровать пакеты, передаваемые по определенному протоколу, введите имя протокола с помощью команды tcpdump, и она будет захватывать только пакеты, передаваемые по определенному сетевому протоколу.

Например, для перехвата пакетов ICMP достаточно просто прикрепить ICMP в конце команды tcpdump. Процесс такой же, если вы хотите перехватывать только пакеты UDP или TCP.

sudo tcpdump -c 5 icmp

Эта команда вернет вывод только в том случае, если есть обмен данными по протоколу ICMP.

Фильтрация пакетов на основе хоста

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

Чтобы перехватывать пакеты, относящиеся к определенному хосту, определите сетевой адрес хоста с помощью хозяин параметр:

судоtcpdump 5 хозяин 192.168.2.1

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

Фильтрация пакетов на основе активного порта

tcpdump оснащен параметром, позволяющим фильтровать сетевой трафик и захватывать только те пакеты, которые передаются на определенный порт или с него.

Чтобы перехватывать пакеты, приходящие с определенного порта, добавьте порт флаг для команды tcpdump и определите номер порта рядом с ним. Например, чтобы захватить любой входящий или исходящий HTTP-трафик, определите порт 80:

sudo tcpdump -c 5 порт 80

tcpdump будет прослушивать порт 80, ожидая передачи HTTP. Как только он обнаружит HTTP-пакеты в сети, он перехватит их.

Объедините фильтры вместе для расширенной сортировки

В предыдущих разделах обсуждалось, как можно фильтровать трафик на основе порта, протокола или хоста, но что, если вы хотели захватить трафик с одного порта определенного хоста, используя определенную сеть протокол? Что ж, вам повезло, потому что это возможно благодаря возможности использовать логические операторы с командой tcpdump.

Чтобы перехватить пакеты с отдельного хоста, используя порт 443, используйте эту команду:

судоtcpdump 5 хозяин 192.168.2.1а такжепорт 443

Проверка содержимого захваченных пакетов

По умолчанию tcpdump отображает заголовки пакета в выходных данных. Хотя в большинстве случаев этого более чем достаточно, иногда вам может потребоваться более глубокое изучение захваченных данных. Вы можете передать определенные параметры команде tcpdump, чтобы проверить содержимое захваченного пакета.

Вот как просмотреть содержимое пакетов:

судо tcpdump -c 5 -x

Эта команда возвращает шестнадцатеричную версию содержимого захваченного пакета. Если вы хотите просмотреть данные в формате ASCII, вы можете передать параметр с:

судо tcpdump -A

Сохранить вывод tcpdump в файл

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

Это можно сделать, добавив -w флаг к команде. После выполнения tcpdump сохранит захваченные данные в .pcap файл, который впоследствии можно проанализировать с помощью tcpdump или других инструментов мониторинга сети, таких как Wireshark.

Введите эту команду, чтобы сохранить вывод вашей команды tcpdump в файл:

судоtcpdump-wзахватывать.pcap

Чтобы прочитать .pcap файл, вы можете использовать tcpdump с параметр:

судоtcpdumpзахватывать.pcap

Linux поставляется с множеством сетевых инструментов, которые могут решить любую сетевую проблему, если это касается программного обеспечения. Знание того, как использовать несколько лучших сетевых инструментов в Linux, определенно пригодится, независимо от того, являетесь ли вы системным администратором, управляющим сетями, или просто обычным пользователем Linux.

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