← Все статьи

tcpdump: шпаргалка с примерами — DNS, порты, флаги TCP

Автор: Юрий Нефёдов, системный инженер · 08.08.2024 · обновлено 24.10.2026

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

Основные ключи

tcpdump запускается от root или через sudo.

Фильтры: хост, порт, направление

Фильтр пишется после ключей. Условия объединяются словами and, or, not:

tcpdump -i any -n host 10.0.0.5              # весь трафик с этим адресом
tcpdump -i any -n port 443                     # только порт 443
tcpdump -i any -n src 10.0.0.5 and dst port 22 # с адреса 10.0.0.5 на порт 22

Как посмотреть DNS-запросы

DNS работает в основном по UDP на порту 53. Все DNS-запросы и ответы на всех интерфейсах:

tcpdump -i any udp and port 53 -n

Только запросы, которые уходят к DNS-серверам:

tcpdump 'dst port 53' -n

Так удобно проверять, к какому DNS-серверу обращается система и получает ли она ответ.

Запись в файл для Wireshark

Если трафика много, проще записать его в файл и разобрать в графическом анализаторе Wireshark на своём компьютере:

tcpdump -i any -n -w capture.pcap port 443
tcpdump -n -r capture.pcap | head      # быстро посмотреть записанное

Флаги TCP

Каждый TCP-пакет несёт набор флагов, по которым видно, на каком этапе соединение. В выводе tcpdump они показаны в квадратных скобках: [S], [S.], [P.], [F.], [R]. Точка означает флаг ACK.

Если на SYN клиента сервер отвечает RST, служба на этом порту не запущена или порт закрыт. Если ответа нет совсем, пакеты, скорее всего, отбрасывает межсетевой экран.

Отфильтровать пакеты по флагам:

tcpdump -n 'tcp[tcpflags] & (tcp-syn) != 0'     # пакеты с флагом SYN
tcpdump -n 'tcp[tcpflags] & (tcp-rst) != 0'     # сбросы соединений

Нужна помощь с настройкой?

Если задача сложнее, чем в статье, напишите мне. Первая консультация бесплатная.