Одна строка вывода — один пакет: когда, от кого, кому и что в нём.
tcpdump показывает пакеты, которые проходят через сетевой интерфейс. Читать их может только root: без sudo будет You don't have permission to perform this capture on that device.
| Часть команды | Что делает |
|---|---|
-i lab1 |
слушает интерфейс lab1 |
-n |
печатает адреса и порты числами: без ключа вместо 8080 будет http-alt |
-c 4 |
останавливается после четырёх пакетов; без ключа — только по Ctrl+C |
tcp port 8080 |
фильтр: только TCP с портом 8080, в обе стороны |
Начало строки из твоего вывода:
Слева от > — отправитель, адрес и порт через точку, справа — получатель. Flags [S] — флаг SYN: первый пакет TCP-подключения, просьба открыть соединение. Дальше идут номер seq, параметры TCP и length 0 — данных в пакете нет.
Порт клиента повторяется через секунду, с тем же seq. Это повтор: ядро клиента не получило ответа и отправило SYN ещё раз. Следующая попытка монитора идёт уже с другого порта.
Почему ответа нет, видно в правилах lab-node2:
Там стоит tcp dport 8080 drop. tcpdump снимает копию пакета на интерфейсе: входящий — раньше фильтра nftables, исходящий — после. Поэтому отброшенные SYN в выводе есть, а ответа нет: его не было.
На другом сервере правило в цепочке output отбрасывает его ответы [S.], а входящих пакетов фильтр не трогает. Что покажет tcpdump на интерфейсе этого сервера?
-
Входящий SYN
tcpdumpполучает раньше фильтра, и цепочкаoutputего не касается. -
Без пришедшего SYN сервер не стал бы отвечать. SYN в выводе есть, а ответов нет.
-
Исходящий пакет
tcpdumpвидит после фильтра: отброшенный ответ до интерфейса не доходит.
tcpdump снимает копию пакета на интерфейсе: входящий — раньше фильтра, исходящий — после. Поэтому картина та же, что у drop на входе: SYN и повторы без ответа. Отличит их nft list ruleset на сервере.
Главное в шаге
-
Строка tcpdump — один пакет: время,
отправитель > получатель, флаги и длина данных. - SYN без ответа и его повтор с того же порта: запрос дошёл, а ответа нет.
- Входящий пакет tcpdump видит раньше фильтра, исходящий — после.