Запись на удалённой машине, когда вы наблюдаете вывод через то же соединение, — это самореферентное измерение, и оно искажает то, что вы измеряете. Каждый напечатанный пакет возвращается через записываемый сеанс. Исключить этот поток обычно правильно, но размер исключения — настоящее решение. Слишком узко — и запись захлёбывается сама собой; слишком широко — и доказательства исчезают.

Почему запись записывает сама себя

Запись видит обратный путь собственного вывода. Каждая строка, напечатанная в вашем терминале, становится одним или несколькими пакетами на управляющем соединении, которые фильтр затем сопоставляет и печатает снова. Результат — петля, которая растёт, пока буфер или канал не сдадутся.

Поэтому запись в файл выглядит нормально, а та же запись в прямом эфире становится непригодной. Трафик не новый; вы его создали. Десятисекундная запись может произвести больше вывода, чем канал способен перенести, как только петля начнётся.

Соберите исключение как одну группу

Начните с того, как удалённый хост видит ваш сеанс, а не с адреса в вашем локальном терминале. Промежуточный хост или устройство NAT могут сделать противоположную сторону чем-то, что вы никогда не вводили, поэтому читайте адрес с точки зрения самой удалённой стороны. Затем сгруппируйте хост и порт вместе, чтобы отрицание применялось к паре.

tcpdump -ni eth0 '(net 10.60.0.0/24) and not (host 203.0.113.77 and tcp port 2222)'

Заключение всего выражения в кавычки не даёт оболочке прочитать скобки как синтаксис. Напечатайте фильтр ещё раз, прежде чем доверять результату.

Фильтр, который выглядит правильно и сохраняет всё

Неправильный фильтр — тот, который читается естественно: источник не противоположная сторона или назначение не противоположная сторона. Для пакета с вашей рабочей станции первая проверка истинна; для ответа — вторая. Их объединение через or сохраняет оба направления, а это именно то, что вы хотели отбросить.

Логика фильтра pcap даёт and и or одинаковый приоритет и вычисляет слева направо, поэтому скобки необязательны только на вид, когда вы их смешиваете. Отрицайте одно сгруппированное выражение вместо объединения двух отрицаний. Это единственное изменение отделяет работающий фильтр от записи, полной вашего собственного набора. справка по фильтру pcap достаточно коротка, чтобы прочитать её в терминале, и её стоит проверить, когда фильтр ведёт себя неожиданно.

Решайте по тому, что запись должна доказать

Решите, сколько исключить, спросив, что запись должна доказать. Если вам нужно видеть трафик приложений к тому же хосту, исключите только порт SSH и примите шум других сеансов. Если хост не имеет отношения к вопросу, полностью исключить его проще, и это убирает целый класс самосозданных пакетов. Запишите выбор рядом с файлом записи, потому что фильтр — это предположение о доказательствах.

Выбор интерфейса решает, что вы вообще можете увидеть. В туннеле вы видите внутренний трафик; на физическом интерфейсе — зашифрованный транспорт. Если управляющие пакеты уже отсутствуют в выбранной точке, никакое исключение не исправит запись, нацеленную не на тот уровень.

Похожие статьи