Почему существует такая разница в количестве пакетов, захваченных tcpdump, когда вывод записывается на консоль и в файл?

$ tcpdump
...
1681 packets captured
1681 packets received by filter
0 packets dropped by kernel

против

# tcpdump > /root/dump.txt 
...
11 packets captured
12 packets received by filter
0 packets dropped by kernel

В обоих случаях я завершил команду с помощью Ctrl+C через несколько секунд.

Изменить: Команда tcpdump -w /root/dump.txt также захватывает только несколько пакетов. Такое поведение соответствует, я пробовал много раз.

1 ответ1

1

Да, как вы поняли, вывод текста из tcpdump идет по вашему ssh-соединению с хостом, с которого вы подключились к машине, на которой вы запускаете tcpdump, и, таким образом, перехватывается tcpdump. С -w tcpdump ничего не печатает на пакет, поэтому он не переходит по проводам (если вы не сохраняете перехват в файл в файловой системе, смонтированной с файлового сервера, такого как NFS или SMB или AFP сервер).

Wireshark и TShark пытаются обнаружить, что вы используете Wireshark для X11 или TShark для ssh, и, если это так, настраивают фильтр захвата под капотом, чтобы отфильтровать трафик X11 или ssh на хост, с которого вы их запускаете. Для tcpdump вы можете использовать фильтр, такой как

not (host {host from which you're sshing} and port ssh)

или, если вы уже используете фильтр И этот фильтр вместе с тем, который вы используете, для фильтрации вашего SSH-трафика.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .