tcpdump
— это одна из самых старых и надежных утилит для анализа сетевого трафика в Unix-подобных системах. Она позволяет просматривать сетевые пакеты, проходящие через интерфейсы машины, в реальном времени или сохранять их для последующего анализа. Это инструмент, которым пользуются системные администраторы, специалисты по безопасности и сетевые инженеры уже десятилетиями. Его основное преимущество — простота, стабильность и возможность работать даже в минимальных системах без графического интерфейса.
Синтаксис:tcpdump [опции] [выражение фильтра]
– Опции управляют поведением утилиты: каким образом отображать данные, сколько пакетов захватывать и т.д.
– Фильтр задаёт, какие именно пакеты нужно перехватывать (по IP-адресу, порту, протоколу и т.п.)
Основные опции:
Опции | Описание |
---|---|
-i <интерфейс> | указание сетевого интерфейса (например, eth0 , wlan0 ) |
-n | не разрешать IP-адреса в доменные имена (ускоряет работу) |
-nn | не разрешать ни IP, ни номера портов (показывает “как есть”) |
-v , -vv , -vvv | уровень подробности вывода |
-c <кол-во> | захватить только указанное число пакетов |
-w <файл> | Сохраняет захваченные пакеты в файл для последующего анализа (например, с Wireshark) |
-r <файл> | Читать пакеты из файла (например, ранее сохранённого через -w ) |
Фильтры
Значение | Описание |
---|---|
port <номер> | Фильтр по порту |
host <IP/домен> | Фильтр по IP-адресу или домену |
src <IP> / dst <IP> | Фильтр по исходному или целевому IP |
tcp , udp , icmp | Фильтрация по протоколу |
net <сеть> | Фильтрация по сети, например 192.168.0.0/24 |
and , or , not | Логические операторы для составных фильтров |
Вывод tcpdump
Пример строки:15:32:10.123456 IP 192.168.1.5.54321 > 10.0.0.5.22: Flags [S], seq 123456789, win 65535, length 0
Разбор по частям:
15:32:10.123456 | Время получения пакета (часы:минуты:секунды.микросекунды) |
IP | Протокол уровня 3 — здесь IPv4 (бывает ещё ARP , ICMP , IP6 ) |
192.168.1.5.54321 | Источник: IP + порт |
> | Направление — “откуда → куда” |
10.0.0.5.22 | Назначение: IP + порт (22 = SSH) |
Flags [S] | TCP-флаги: тут SYN — начало соединения |
seq 123456789 | Порядковый номер первого байта (TCP sequence number) |
win 65535 | Размер TCP-окна (window size) — влияет на производительность |
length 0 | Длина полезной нагрузки в байтах (0 — только заголовок) |
Основные TCP-флаги (Flags):
Флаг | Обозначение | Описание |
---|---|---|
S | SYN | Запрос на установку соединения |
S. | SYN-ACK | Ответ на SYN |
. | ACK | Подтверждение |
P | PUSH | Данные нужно немедленно передать (например, HTTP) |
F | FIN | Завершение соединения |
R | RST | Обрыв соединения (reset) |
Пример установки соединения:IP 192.168.1.5.54321 > 10.0.0.5.22: Flags [S], …
IP 10.0.0.5.22 > 192.168.1.5.54321: Flags [S.], …
IP 192.168.1.5.54321 > 10.0.0.5.22: Flags [.], …
Первая строка: клиент стучится (SYN)
Вторая: сервер отвечает (SYN-ACK)
Третья: клиент подтверждает (ACK)
Пример отказа (порт закрыт):IP 192.168.1.5.54321 > 10.0.0.5.22: Flags [S], …
Нет ответа — значит либо фильтр (фаерволл), либо сервер недоступен.