Полное руководство по tcpdump на Linux: установка, опции и практические примеры

Содержание
- Краткое вступление
- Что такое tcpdump и зачем он нужен
- Установка и зависимости
- Как запустить tcpdump: базовая команда
- Основные опции для новичка
- Простая фильтрация пакетов (BPF)
- Понятные примеры
- Полезные советы для новичков
- Часто задаваемые вопросы
- Заключение
Краткое вступление
tcpdump — это мощный сетевой сниффер и анализатор пакетов для UNIX‑подобных систем. С его помощью можно:
- Перехватывать и сохранять сетевой трафик
- Отлаживать проблемы с сетью
- Анализировать пакеты в режиме реального времени или из заранее записанных файлов
Применение tcpdump
помогает системным администраторам и инженерам по безопасности быстро выявлять узкие места в сети и диагностировать сбои.
Что такое tcpdump и зачем он нужен
tcpdump
основан на библиотеке libpcap
и позволяет:
- Сниффинг (перехват) пакетов на сетевом интерфейсе
- Отладку приложений, взаимодействующих по сети
- Мониторинг атак и аномалий
- Сохранение трафика в формате pcap для последующего анализа в Wireshark или аналогах
Установка и зависимости
Для корректной работы нужен пакет tcpdump и библиотека libpcap. На большинстве дистрибутивов они устанавливаются вместе:
- Ubuntu / Debian
sudo apt update sudo apt install tcpdump
- CentOS / RedOS
sudo dnf update sudo dnf install tcpdump
- ALT Linux
su -c "apt-get update" su -c "apt-get install tcpdump"
Как запустить tcpdump: базовая команда
tcpdump [опции] [фильтр]
- Опции — настройки, что и как выводить
- Фильтр — правило, какие пакеты показывать
Пример «самого простого» захвата без фильтра:
- Ubuntu / Debian / CentOS / RedOS
sudo tcpdump
- ALT Linux
su -c "tcpdump"
Нажмите Ctrl+C, чтобы остановить.
Основные опции для новичка
-i eth0
— Выбирает сетевой интерфейс (например, eth0)-c 10
— Собирает ровно 10 пакетов и останавливается-n
— Показывает IP‑адреса, не имена сайтов-nn
— Не разрешает IP и порты — только цифры-w file.pcap
— Сохраняет трафик в файл для анализа позже-r file.pcap
— Читает трафик из ранее сохранённого файла-s 0
— Захватывает полные пакеты (максимум данных)-X
— Показывает содержимое каждого пакета
Совет: почти всегда полезно добавить
-n
или-nn
, чтобы tcpdump не тратил время на перевод адресов в имена.
Простая фильтрация пакетов (BPF)
Фильтр указывается после опций. Вот самые понятные:
По IP‑адресу
host 192.168.1.10
— все пакеты с участием этого адресаsrc host 192.168.1.10
— только пакеты от негоdst host 192.168.1.10
— только пакеты к нему
По порту
port 80
— HTTP-трафикsrc port 53
— DNS‑запросы от порта 53
По протоколу
tcp
,udp
,icmp
Несколько условий
- Объединяйте через
and
(И),or
(Или), напримерtcpdump -i eth0 tcp and port 80 and src host 10.0.0.5
Как работает Tcpdump:
[ eth0 ] — tcpdump → [ stdout ]
└— tcpdump -w → [ file.pcap ]
Понятные примеры
Поймать 5 пакетов на eth0 без перевода имён:
- Ubuntu / Debian / CentOS / RedOS
sudo tcpdump -i eth0 -c 5 -nn
- ALT Linux
su -c "tcpdump -i eth0 -c 5 -nn"
Смотреть только HTTP‑трафик с дампом содержимого:
- Ubuntu / Debian / CentOS / RedOS
sudo tcpdump -i eth0 tcp port 80 -nn -X
- ALT Linux
su -c "tcpdump -i eth0 tcp port 80 -nn -X"
Захват DNS‑запросов от конкретного устройства:
- Ubuntu / Debian / CentOS / RedOS
sudo tcpdump -i wlan0 udp dst port 53 and src host 10.0.0.5 -nn
- ALT Linux
su -c "tcpdump -i wlan0 udp dst port 53 and src host 10.0.0.5 -nn"
Полезные советы для новичков
Полный пакет:
Добавьте -s 0
, чтобы видеть всю информацию.
Сохранить, а потом смотреть:
- Ubuntu / Debian / CentOS / RedOS
sudo tcpdump -i eth0 -w mydump.pcap
- ALT Linux
su -c "tcpdump -i eth0 -w mydump.pcap"
А потом:
tcpdump -r mydump.pcap -nn -X
Долго и много: используйте ротацию файлов:
- Ubuntu / Debian / CentOS / RedOS
sudo tcpdump -i eth0 -C 10 -W 5 -w dump-%Y%m%d_%H%M%S.pcap
- ALT Linux
su -c "tcpdump -i eth0 -C 10 -W 5 -w dump-%Y%m%d_%H%M%S.pcap"
Это создаст файлы по 10 МБ и будет держать только 5 последних.
Удалённая машина:
- Ubuntu / Debian / CentOS / RedOS
ssh user@remote 'sudo tcpdump -w - -i eth0' | sudo tcpdump -r - -nn
- ALT Linux
ssh user@remote 'sudo tcpdump -w - -i eth0' | su -c "tcpdump -r - -nn"
Благодаря этому вы видите трафик с другого сервера прямо на своём компьютере.
Часто задаваемые вопросы
- Как захватить трафик по MAC‑адресу?
tcpdump -i eth0 ether host AA:BB:CC:DD:EE:FF -nn
- Можно ли фильтровать сразу по нескольким интерфейсам?
Нет — tcpdump захватывает только на одном интерфейсе;
используйте-i any
или запустите несколько экземпляров. - Как сохранить только заголовки пакетов?
tcpdump -s 64 -w file.pcap
Заключение
Теперь вы знаете, как:
- Установить tcpdump на разные дистрибутивы
- Запускать захват с нужными опциями
- Фильтровать трафик с помощью BPF
- Сохранять дампы и просматривать их
Практикуйтесь — и вскоре tcpdump станет вашим незаменимым инструментом для анализа сетевого трафика даже без графических программ!