Dlaczego istnieje taka różnica w liczbie pakietów przechwyconych przez tcpdump, gdy dane wyjściowe są zapisywane w konsoli i do pliku?
$ tcpdump
...
1681 packets captured
1681 packets received by filter
0 packets dropped by kernel
vs.
# tcpdump > /root/dump.txt
...
11 packets captured
12 packets received by filter
0 packets dropped by kernel
W obu przypadkach kończę polecenie za pomocą Ctrl + C po kilku sekundach.
Edytować:
Dowództwo tcpdump -w /root/dump.txt
przechwytuje również tylko kilka pakietów. To zachowanie jest spójne, próbowałem wiele razy.
-w
.Odpowiedzi:
Tak, jak zdałeś sobie sprawę, wyjście tekstowe z tcpdump przechodzi przez twoje połączenie ssh do hosta, z którego ssh'ed włączyłeś do maszyny, na której uruchamiasz tcpdump, i zostaje przechwycony przez tcpdump. Z
-w
, tcpdump nie drukuje niczego w pakiecie, więc nie przechodzi przez przewód (chyba że zapisujesz przechwycenie do pliku w systemie plików zamontowanym z serwera plików, takiego jak NFS lub SMB lub serwer AFP) .Wireshark i TShark próbują wykryć, że używasz Wiresharka na X11 lub TShark na ssh, a jeśli tak, dostosowujesz filtr przechwytywania pod maską, aby odfiltrować ruch X11 lub ssh do hosta, z którego je uruchamiasz. W przypadku tcpdump możesz chcieć użyć filtra takiego jak
lub, jeśli używasz już filtra ORAZ tego filtru z tym, którego używasz, aby odfiltrować ruch SSH.
źródło