Czy próbujesz przechwytywać pakiety danych w celu analizy ruchu w Twojej sieci? Może jesteś administratorem serwera, który napotkał problem i chce monitorować przesyłane dane w sieci. Niezależnie od sytuacji, narzędzie tcpdump Linux jest tym, czego potrzebujesz.

W tym artykule szczegółowo omówimy polecenie tcpdump, a także kilka poradników dotyczących instalowania i używania tcpdump w systemie Linux.

Co to jest polecenie tcpdump?

Tcpdump to potężne narzędzie do monitorowania sieci, które pozwala użytkownikowi efektywnie filtrować pakiety i ruch w sieci. Możesz uzyskać szczegółowe informacje związane z protokołem TCP / IP i pakietami przesyłanymi w Twojej sieci. Tcpdump to narzędzie wiersza poleceń, co oznacza, że ​​można go uruchomić na serwerach Linux bez wyświetlacza.

Administratorzy systemu mogą również zintegrować narzędzie tcpdump z cron w celu zautomatyzowania różnych zadań, takich jak logowanie. Ponieważ liczne funkcje sprawiają, że jest dość wszechstronny, tcpdump działa zarówno jako narzędzie do rozwiązywania problemów, jak i jako narzędzie bezpieczeństwa.

instagram viewer

Jak zainstalować tcpdump w systemie Linux

Chociaż przez większość czasu program tcpdump jest preinstalowany w systemie, niektóre dystrybucje Linuksa nie są dostarczane z pakietem. Dlatego może być konieczne ręczne zainstalowanie narzędzia w systemie.

Możesz sprawdzić, czy tcpdump jest zainstalowany w twoim systemie, używając pliku który Komenda.

który tcpdump

Jeśli dane wyjściowe wyświetlają ścieżkę katalogu (/usr/bin/tcpdump), to w systemie jest zainstalowany pakiet. Jeśli jednak nie, możesz to łatwo zrobić za pomocą domyślnego menedżera pakietów w systemie.

Aby zainstalować tcpdump w dystrybucjach opartych na Debianie, takich jak Ubuntu:

sudo apt-get install tcpdump

Instalacja tcpdump na CentOS jest również łatwa.

sudo yum install tcpdump

W dystrybucjach opartych na Arch:

sudo pacman -S tcpdump

Aby zainstalować w Fedorze:

sudo dnf zainstaluj tcpdump

Zauważ, że pakiet tcpdump wymaga libcap jako zależność, więc upewnij się, że zainstalowałeś go również w swoim systemie.

Tcpdump Przykłady przechwytywania pakietów sieciowych w systemie Linux

Po pomyślnym zainstalowaniu tcpdump na komputerze z systemem Linux nadszedł czas, aby monitorować niektóre pakiety. Ponieważ tcpdump wymaga uprawnień administratora do wykonywania większości operacji, będziesz musiał dodać sudo do twoich poleceń.

1. Lista wszystkich interfejsów sieciowych

Aby sprawdzić, które interfejsy sieciowe są dostępne do przechwytywania, użyj -RE flagę za pomocą polecenia tcpdump.

tcpdump -D

Przechodząc --list-interfaces flaga jako argument zwróci to samo wyjście.

tcpdump --list-interfaces

Wynik będzie listą wszystkich interfejsów sieciowych, które są obecne w twoim systemie.

Po uzyskaniu listy interfejsów sieciowych nadszedł czas na monitorowanie sieci poprzez przechwytywanie pakietów w systemie. Chociaż możesz określić, którego interfejsu chcesz używać, rozszerzenie każdy argument polecenia tcpdump do przechwytywania pakietów sieciowych przy użyciu dowolnego aktywnego interfejsu.

tcpdump --interface dowolny

System wyświetli następujące dane wyjściowe.

Związane z: Co to jest model wzajemnych połączeń systemów otwartych?

2. Format wyjściowy tcpdump

Począwszy od trzeciej linii, każda linia wyjścia oznacza określony pakiet przechwycony przez tcpdump. Oto jak wygląda wynik pojedynczego pakietu.

17: 00: 25.369138 wlp0s20f3 Out IP localsystem.40310> kul01s10-in-f46.1e100.net.https: Flags [P.], seq 196: 568, ACK 1, win 309, opcje [nop, nop, TS val 117964079 ecr 816509256], długość 33

Należy pamiętać, że nie wszystkie pakiety są przechwytywane w ten sposób, ale jest to ogólny format stosowany przez większość z nich.

Dane wyjściowe zawierają następujące informacje.

  1. Znacznik czasu odebranego pakietu
  2. Nazwa interfejsu
  3. Przepływ pakietów
  4. Nazwa protokołu sieciowego
  5. Adres IP i szczegóły portu
  6. Flagi TCP
  7. Numer kolejny danych w pakiecie
  8. Dane potwierdzające
  9. Rozmiar okna
  10. Długość pakietu

Pierwsze pole (17:00:25.369138) wyświetla sygnaturę czasową wysłania lub odebrania pakietu przez system. Zarejestrowany czas jest wyodrębniany z czasu lokalnego systemu.

Drugie i trzecie pole określają używany interfejs i przepływ pakietu. W powyższym fragmencie wlp0s20f3 to nazwa interfejsu bezprzewodowego, a Na zewnątrz to przepływ pakietów.

Czwarte pole zawiera informacje związane z nazwą protokołu sieciowego. Ogólnie rzecz biorąc, znajdziesz dwa protokoły- IP i IP6, gdzie IP oznacza IPV4, a IP6 to IPV6.

Następne pole zawiera adresy IP lub nazwę systemu źródłowego i docelowego. Po adresach IP następuje numer portu.

Szóste pole w danych wyjściowych zawiera flagi TCP. Istnieją różne flagi, które są używane w danych wyjściowych tcpdump.

Nazwa flagi Wartość Opis
SYN S Połączenie rozpoczęte
PŁETWA fa Połączenie zakończone
PCHAĆ P. Dane są wypychane
RST R Połączenie zostało zresetowane
ACK . Potwierdzenie

Dane wyjściowe mogą również zawierać kombinację kilku flag TCP. Na przykład, FLAGA [f.] oznacza pakiet FIN-ACK.

Przechodząc dalej we fragmencie wyjściowym, następne pole zawiera numer kolejny (seq 196: 568) danych w pakiecie. Pierwszy pakiet zawsze ma dodatnią liczbę całkowitą, a kolejne pakiety używają względnego numeru sekwencyjnego, aby poprawić przepływ danych.

W kolejnym polu znajduje się numer potwierdzenia (potwierdzenie 1) lub zwykły numer potwierdzenia. Pakiet przechwycony przez maszynę nadawcy ma 1 jako numer potwierdzenia. Po stronie odbiornika numer Ack jest wartością następnego pakietu.

Dziewiąte pole w danych wyjściowych zawiera rozmiar okna (wygrać 309), czyli liczbę bajtów dostępnych w buforze odbiorczym. Istnieje kilka innych pól, które są zgodne z rozmiarem okna, w tym maksymalny rozmiar segmentu (MSS).

Ostatnie pole (długość 33) zawiera długość całego pakietu przechwyconego przez tcpdump.

3. Ogranicz liczbę przechwyconych pakietów

Uruchamiając polecenie tcpdump po raz pierwszy, możesz zauważyć, że system kontynuuje przechwytywanie pakietów sieciowych do momentu przekazania sygnału przerwania. Możesz przesłonić to domyślne zachowanie, określając liczbę pakietów, które chcesz przechwycić wcześniej za pomocą -do flaga.

tcpdump --interface dowolny -c 10

Wyżej wymienione polecenie przechwyci dziesięć pakietów z dowolnego aktywnego interfejsu sieciowego.

4. Filtruj pakiety na podstawie pól

Podczas rozwiązywania problemu uzyskanie dużego bloku tekstu na terminalu nie ułatwia tego. Tutaj do gry wkracza funkcja filtrowania w tcpdump. Możesz filtrować pakiety według różnych pól, w tym hosta, protokołu, numeru portu i innych.

Aby przechwycić tylko pakiety TCP, wpisz:

tcpdump --interface dowolny -c 5 tcp

Podobnie, jeśli chcesz filtrować dane wyjściowe za pomocą numeru portu:

tcpdump --interface dowolny -c 5 port 50

Powyższe polecenie pobierze tylko pakiety przesłane przez określony port.

Aby uzyskać szczegółowe informacje o pakiecie dla określonego hosta:

tcpdump --interface dowolny -c 5 host 112.123.13.145

Jeśli chcesz filtrować pakiety wysyłane lub odbierane przez określonego hosta, użyj rozszerzenia src lub dst argument z poleceniem.

tcpdump --interface dowolny -c 5 src 112.123.13.145
tcpdump --interface dowolny -c 5 dst 112.123.13.145

Możesz także użyć operatorów logicznych i i lub aby połączyć razem dwa lub więcej wyrażeń. Na przykład, aby pobrać pakiety należące do źródłowego adresu IP 112.123.13.145 i użyj portu 80:

tcpdump --interface any -c 10 src 112.123.13.145 i port 80

Złożone wyrażenia można grupować razem za pomocą zdanie wtrącone następująco:

tcpdump --interface any -c 10 "(src 112.123.13.145 lub src 234.231.23.234) and (port 45 lub port 80)"

5. Wyświetl zawartość pakietu

Możesz użyć -ZA i -x flagi za pomocą polecenia tcpdump, aby przeanalizować zawartość pakietu sieciowego. Plik -ZA flaga oznacza ASCII format i -x oznacza szesnastkowy format.

Aby wyświetlić zawartość następnego pakietu sieciowego przechwyconego przez system:

tcpdump --interface dowolny -c 1 -A
tcpdump --interface dowolny -c 1 -x

Związane z: Co to jest utrata pakietów i jak naprawić jej przyczynę?

6. Zapisz dane przechwytywania do pliku

Jeśli chcesz zapisać dane przechwytywania do celów referencyjnych, tcpdump jest do Twojej dyspozycji. Po prostu podaj -w flagą z domyślnym poleceniem zapisywania wyniku do pliku zamiast wyświetlania go na ekranie.

tcpdump --interface any -c 10 -w data.pcap

Plik .pcap rozszerzenie pliku oznacza przechwytywanie pakietów dane. Możesz również wydać powyższe polecenie w trybie szczegółowym, używając pliku -v flaga.

tcpdump --interface any -c 10 -w data.pcap -v

Aby przeczytać .pcap plik za pomocą tcpdump, użyj rozszerzenia -r flaga, po której następuje ścieżka do pliku. Plik -r oznacza Czytać.

tcpdump -r data.pcap

Możesz także filtrować pakiety sieciowe na podstawie danych pakietowych zapisanych w pliku.

tcpdump -r data.pcap port 80

Monitorowanie ruchu sieciowego w systemie Linux

Jeśli przydzielono ci zadanie administrowania serwerem Linux, to polecenie tcpdump jest świetnym narzędziem, które można dołączyć do swojego arsenału. Możesz łatwo naprawić problemy związane z siecią, przechwytując pakiety przesyłane w sieci w czasie rzeczywistym.

Ale przede wszystkim Twoje urządzenie musi być podłączone do internetu. Dla początkujących użytkowników Linuksa nawet połączenie z Wi-Fi za pomocą wiersza poleceń może być nieco trudne. Ale jeśli używasz odpowiednich narzędzi, jest to bardzo proste.

E-mail
Jak połączyć się z Wi-Fi przez terminal Linux za pomocą Nmcli

Chcesz połączyć się z siecią Wi-Fi za pomocą wiersza poleceń systemu Linux? Oto, co musisz wiedzieć o poleceniu nmcli.

Czytaj dalej

Powiązane tematy
  • Linux
  • Bezpieczeństwo
  • Network Forensics
O autorze
Deepesh Sharma (37 opublikowanych artykułów)

Deepesh jest młodszym edytorem Linuksa w MUO. Treści informacyjne pisze w internecie od ponad 3 lat. W wolnym czasie pisze, słucha muzyki i gra na gitarze.

Więcej od dostawcy Deepesh Sharma

Zapisz się do naszego newslettera

Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Jeszcze jeden krok…!

Potwierdź swój adres e-mail w wiadomości e-mail, którą właśnie wysłaliśmy.

.