Поломку легче узнать, когда знаешь, как выглядит исправный обмен. Убери правило drop и запиши подключение монитора в файл.
Правило лежит в файле /opt/packets-lab/rules.nft, как в уроке о фильтрах: правка файла, затем загрузка nft -f.
Удачное подключение в файле
Удали из /opt/packets-lab/rules.nft правило drop и загрузи файл на lab-node2. Потом запиши шесть пакетов порта 8080 в файл open.pcap в каталоге ~/packets и прочитай запись.
Сначала предположи
Что tcpdump с ключом -w open.pcap напечатает на экран?
Теперь начни упражнение, выполни команду и сверь прогноз с выводом.
Подключение TCP открывается тремя пакетами — это рукопожатие: клиент шлёт [S], сервер отвечает [S.], клиент подтверждает [.]. Точка в скобках — флаг ACK, подтверждение полученного.
| Флаги | Что значит |
|---|---|
[S] |
SYN: открыть соединение |
[S.] |
SYN и ACK: сервер согласен |
[.] |
ACK: подтверждение |
[P.] |
данные, у строки length больше нуля |
[F.] |
FIN: закрыть соединение |
[R.] |
RST: оборвать подключение или отказать сразу |
Монитор, nc -z, только проверяет, что порт принимает подключение, и сразу закрывает его: за рукопожатием идут [F.] с обеих сторон. Запрос страницы добавил бы строки [P.].
С -w получается запись пакетов: они пишутся в файл целиком и на экран не выводятся. Файл принадлежит пользователю tcpdump, а читать его можно без sudo — сколько угодно раз и с другим фильтром:
Фильтр — выражение в конце команды: host 192.0.2.11 — пакеты к адресу и от него, port 8081, tcp, icmp. Части соединяют and, or и not: tcp and not port 22.