Jak korzystać z netstat na Linuksie

  • Dave McKay

    @TheGurkha

  • 17 lutego 2020, 8:00 rano EDT
Fatmawati Achmad Zaenuri/

polecenie Linux netstat daje Ci skarbnicę informacji o twoich połączeniach sieciowych, używanych portach i wykorzystujących je procesach. Dowiedz się, jak go używać.

porty, procesy i protokoły

gniazda sieciowe mogą być podłączone lub czekać na połączenie., Połączenia wykorzystują protokoły sieciowe, takie jak Transport Control Protocol (TCP) lub User Datagram Protocol UDP. Używają adresów protokołu internetowego i portów sieciowych do nawiązywania połączeń.

słowo gniazda może wywoływać obrazy fizycznego punktu połączenia dla przewodu lub kabla, ale w tym kontekście gniazdo jest konstrukcją programową używaną do obsługi jednego końca sieciowego połączenia danych.,

Reklama

gniazda mają dwa główne stany: albo są podłączone i ułatwiają bieżącą komunikację sieciową, albo czekają na połączenie przychodzące, aby się z nimi połączyć. Istnieją inne stany, takie jak stan, gdy gniazdo jest w połowie drogi przez ustanowienie połączenia na zdalnym urządzeniu, ale odkładając na bok stany przejściowe, można myśleć o gnieździe jako podłączonym lub oczekującym (co często nazywa się nasłuchiwaniem).

Gniazdo nasłuchowe nazywa się serwerem, a gniazdo, Które żąda połączenia z gniazdem nasłuchowym nazywa się klientem., Nazwy te nie mają nic wspólnego ze sprzętem lub rolami komputerowymi. Po prostu określają rolę każdego gniazda na każdym końcu połączenia.

polecenienetstat pozwala odkryć, które gniazda są podłączone, a które nasłuchują. Oznacza to, że mówi ci, które porty są używane i które procesy ich używają. Może wyświetlać tabele routingu i statystyki dotyczące interfejsów sieciowych i połączeń multicastowych.

funkcjonalność netstat została z czasem replikowana w różnych narzędziach Linuksa, takich jak ip i ss., Nadal warto znać ten program wszystkich poleceń analizy sieci, ponieważ jest on dostępny na wszystkich systemach operacyjnych Linux i Unix-like, a nawet na Windows i Mac.

oto jak go używać, wraz z przykładowymi poleceniami.

Lista wszystkich gniazd

-a (wszystkie) opcja sprawia, żenetstat pokazuje wszystkie podłączone i oczekujące gniazda. Polecenie to może wywołać długą listę, więc przechodzimy do less.,

netstat -a | less
Reklama

lista obejmuje gniazda TCP (IP), tcp6 (IPv6) i UDP.

zawijanie w oknie terminala sprawia, że trochę trudno jest zobaczyć, co się dzieje. Oto kilka sekcji z tej listy:

sekcja „aktywny Internet” wymienia podłączone połączenia zewnętrzne i gniazda lokalne nasłuchujące żądań połączenia zdalnego. Oznacza to, że wymienia połączenia sieciowe, które są (lub będą) ustanowione do urządzeń zewnętrznych.,

Reklama

sekcja „domena UNIX” wymienia podłączone i nasłuchujące połączenia wewnętrzne. Innymi słowy, wymienia połączenia, które zostały ustanowione w komputerze między różnymi aplikacjami, procesami i elementami systemu operacyjnego.

kolumny „Active Internet” to:

  • Proto: protokół używany przez to gniazdo (na przykład TCP lub UDP).
  • Recv-Q: Kolejka odbioru. Są to przychodzące bajty, które zostały odebrane i są buforowane, oczekujące na odczyt i użycie lokalnego procesu używającego tego połączenia.,
  • Send-Q: Kolejka wysyłania. To pokazuje bajty, które są gotowe do wysłania z kolejki send.
  • adres lokalny: dane adresowe lokalnego końca połączenia. Domyślnie netstat wyświetla lokalną nazwę hosta dla adresu i nazwę Usługi dla portu.
  • adres zagraniczny: adres i numer portu zdalnego końca połączenia.
  • State: stan gniazda lokalnego. W przypadku gniazd UDP jest to zwykle puste. Zobacz tabelę stanu poniżej.,

dla połączeń TCP wartość stanu może być jedną z następujących wartości:

  • LISTEN: tylko po stronie serwera. Gniazdo czeka na żądanie połączenia.
  • SYN-SENT: tylko po stronie klienta. Gniazdo to wykonało żądanie połączenia i czeka na potwierdzenie, czy zostanie ono zaakceptowane.
  • SYN-RECEIVED: tylko po stronie serwera. Gniazdo to czeka na potwierdzenie połączenia po zaakceptowaniu żądania połączenia.
  • ustalone: serwer i klienci. Między serwerem a klientem zostało nawiązane robocze połączenie, umożliwiające przesyłanie danych między nimi.,
  • FIN-WAIT – 1: serwer i klienci. Gniazdo to oczekuje na żądanie zakończenia połączenia z gniazda zdalnego lub na potwierdzenie żądania zakończenia połączenia, które zostało wcześniej wysłane z tego gniazda.
  • FIN-WAIT – 2: serwer i klienci. Gniazdo to oczekuje na żądanie zakończenia połączenia ze zdalnego gniazda.
  • CLOSE-WAIT: Server and client. Gniazdo to czeka na żądanie zakończenia połączenia od użytkownika lokalnego.
  • zamknięcie: serwer i klienci., Gniazdo to czeka na potwierdzenie żądania zakończenia połączenia ze zdalnego gniazda.
  • LAST-ACK: serwer i klient. Gniazdo to czeka na potwierdzenie żądania zakończenia połączenia wysłanego do gniazda zdalnego.
  • TIME-WAIT: serwer i klienci. Gniazdo to wysłało potwierdzenie do gniazda zdalnego, aby poinformować go, że otrzymało żądanie zakończenia zdalnego gniazda. Teraz czeka, aby upewnić się, że potwierdzenie zostało otrzymane.
  • zamknięte: nie ma połączenia, więc gniazdo zostało zakończone.,

kolumny „domeny Unix” to:

  • Proto: protokół używany przez to gniazdo. Będzie to ” unix.”
  • RefCnt: Reference count. Liczba dołączonych procesów podłączonych do tego gniazda.
  • Flags: jest to zwykle ustawione na ACC , co oznacza SO_ACCEPTON, co oznacza, że gniazdo czeka na żądanie połączenia. SO_WAITDATA, pokazane jakoW, oznacza, że dane czekają na odczyt., SO_NOSPACE, pokazane jako N, oznacza, że nie ma miejsca na zapis danych do gniazda (tzn. bufor wysyłania jest pełny).
  • Type: Typ gniazda. Zobacz tabelę typów poniżej.
  • State: stan gniazda. Zobacz tabelę stanu poniżej.
  • i-Node: i-węzeł systemu plików powiązany z tym gniazdem.
  • Path: ścieżka systemu plików do gniazda.

Typ gniazda domeny uniksowej może być jednym z następujących typów:

  • DGRAM: gniazdo jest używane w trybie datagramów, używając wiadomości o stałej długości., Datagramy nie są ani niezawodne, ani uporządkowane, ani niepowodowane.
  • STREAM: to gniazdo jest gniazdem strumieniowym. Jest to powszechny „normalny” typ połączenia gniazda. Gniazda te są zaprojektowane tak, aby zapewnić niezawodne sekwencyjne (w kolejności) dostarczanie pakietów.
  • RAW: to gniazdo jest używane jako gniazdo raw. Gniazda surowe działają na poziomie sieci modelu OSI i nie odwołują się do nagłówków TCP i UDP z poziomu transportu.
  • RDM: gniazdo to znajduje się na jednym końcu niezawodnie dostarczonego połączenia komunikacyjnego.,
  • SEQPACKET: to gniazdo działa jako sekwencyjne Gniazdo pakietów, które jest innym sposobem zapewnienia niezawodnego, uporządkowanego i nieuporządkowanego dostarczania pakietów.
  • PACKET: Gniazdo dostępu do interfejsu Raw. Gniazda pakietów są używane do odbierania lub wysyłania pakietów surowych na poziomie sterownika urządzenia (tj. warstwy łącza danych) modelu OSI.

stan gniazda domeny uniksowej może być jednym z następujących:

  • FREE: gniazdo to jest nieprzydzielone.
  • nasłuchiwanie: Gniazdo nasłuchuje przychodzących żądań połączenia.,
  • łączenie: gniazdo jest w trakcie łączenia.
  • CONNECTED: nawiązano połączenie, A Gniazdo może odbierać i przesyłać dane.
  • rozłączanie: połączenie jest w trakcie kończenia.
Reklama

Wow, to dużo informacji! Wiele opcji netstat udoskonala wyniki w taki czy inny sposób, ale nie zmienia zbytnio zawartości. Zobaczmy.,

lista gniazd według typu

polecenienetstat -a może dostarczyć więcej informacji, niż potrzebujesz. Jeśli chcesz lub musisz zobaczyć tylko gniazda TCP, możesz użyć opcji -t(TCP), aby ograniczyć wyświetlanie tylko do wyświetlania gniazd TCP.

netstat -at | less

wyświetlanie jest znacznie zmniejszone. Kilka wymienionych gniazd to wszystkie gniazda TCP.,

opcje-u (UDP) i-x (UNIX) zachowują się w podobny sposób, ograniczając wyniki do typu gniazda określonego w wierszu poleceń. Tutaj jest używana opcja-u (UDP):

netstat -au | less

tylko gniazda UDP są wymienione.

lista gniazd według stanu

aby zobaczyć gniazda, które znajdują się w stanie nasłuchiwania lub oczekiwania, użyj opcji-l (nasłuchiwanie).

netstat -l | less
Reklama

wymienione gniazda są tymi, które znajdują się w stanie nasłuchu.,

można to połączyć z opcjami-t (TCP, -u (UDP) i-x (UNIX), aby uzyskać więcej informacji na temat interesujących gniazd. Poszukajmy nasłuchujących gniazd TCP:

netstat -lt | less

teraz widzimy tylko nasłuchujące gniazda TCP.

statystyki sieci według protokołu

netstat -st | less
Reklama

zbiór statystyk dla połączeń TCP jest wyświetlany wless.

wyświetlanie nazw procesów i PID

przydatne może być wyświetlenie ID procesu (PID) procesu używającego gniazda, wraz z nazwą tego procesu., Opcja-p (program) właśnie to robi. Zobaczmy, jakie są PID i nazwy procesów dla procesów korzystających z gniazda TCP, które znajduje się w stanie nasłuchu. Używamy sudo, aby upewnić się, że otrzymujemy wszystkie dostępne informacje, w tym wszelkie informacje, które normalnie wymagają uprawnień roota.

sudo netstat -p -at

oto wyjście w sformatowanej tabeli:

mamy dodatkową kolumnę o nazwie „PID/nazwa programu.”Ta kolumna zawiera listę PID i nazwę procesu używającego każdego z gniazd.,

Lista adresów numerycznych

kolejnym krokiem, który możemy podjąć, aby usunąć pewne niejasności, jest wyświetlanie adresów lokalnych i zdalnych jako adresów IP zamiast ich nazw domen i hostów. Jeśli użyjemy opcji -n (numeric), adresy IPv4 są wyświetlane w formacie dziesiętnym z kropkami:

sudo netstat -an | less
Reklama

adresy IP są wyświetlane jako wartości liczbowe. Wyświetlane są również numery portów, oddzielone dwukropkiem „: ” od adresu IP.

adres IP 127.0.0.,1 pokazuje, że gniazdo jest powiązane z adresem loopback komputera lokalnego. Adres IP 0.0.0.0 oznacza „domyślną trasę” dla adresów lokalnych i „dowolny adres IP” dla adresów zagranicznych. Adresy IPv6 pokazane jako „:: ” są również wszystkimi adresami zerowymi.

wymienione porty można łatwo sprawdzić, jaki jest ich zwykły cel:

  • 22: jest to port nasłuchujący Secure Shell (SSH).
  • 25: jest to port nasłuchu Simple Mail Transfer Protocol (SMTP).
  • 53: jest to port nasłuchu systemu nazw domen (DNS).,
  • 68: jest to Port nasłuchu protokołu Dynamic Host Configuration Protocol (DHCP).
  • 631: jest to wspólny Port nasłuchu systemu druku uniksowego (CUPS).

RELATED: Jaka jest różnica między 127.0.0.1 a 0.0.0.0?

wyświetlanie tabeli routingu

opcja-r (route) wyświetla tablicę routingu jądra.,

sudo netstat -r

oto wyjście w schludnej tabeli:

Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default Vigor.router 0.0.0.0 UG 0 0 0 enp0s3 link-local 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3 192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3

i oto, co oznaczają kolumny:

  • Destination: docelowa sieć lub urządzenie hosta docelowego (jeśli docelowa nie jest siecią).
  • Gateway: adres bramki. Gwiazdka”* ” pojawia się tutaj, jeśli adres bramki nie jest ustawiony.
  • Genmask: maska podsieci dla trasy.
  • flagi: patrz tabela FLAG, poniżej.,
  • MSS: domyślny maksymalny rozmiar segmentu dla połączeń TCP na tej trasie—jest to największa ilość danych, jaką można odebrać w jednym segmencie TCP.
  • Window: domyślny rozmiar okna dla połączeń TCP na tej trasie, wskazujący liczbę pakietów, które mogą zostać przesłane i odebrane przed zapełnieniem bufora odbiorczego. W praktyce pakiety są zużywane przez aplikację odbierającą.
  • irtt: początkowy czas podróży w obie strony. Wartość ta jest odwoływana przez jądro w celu dynamicznego dostosowania parametrów TCP dla połączeń zdalnych, które są wolne od odpowiedzi.,
  • Iface: interfejs sieciowy, z którego przesyłane są Pakiety wysyłane tą trasą.

wartość flags może być jedna z następujących wartości:

  • U: trasa jest w górę.
  • H: Target jest hostem i jedynym możliwym celem na tej trasie.
  • G: użyj bramki.
  • R: Przywróć trasę dla dynamicznego routingu.
  • D: dynamicznie instalowany przez demona routingu.
  • M: zmodyfikowany przez demona routingu po otrzymaniu pakietu Internet Control Message Protocol (ICMP).,
  • A: zainstalowany przezaddrconf, zautomatyzowany generator plików konfiguracyjnych DNS i DHCP.
  • C: cache entry.
  • !/ Align = „left” /

znalezienie portu używanego przez proces

Jeśli przekierujemy wyjścienetstat poprzezgrep, możemy wyszukać proces po nazwie i zidentyfikować port, którego używa. Używamy opcji -a (wszystkie), -n (numeryczne) i -p (program) i wyszukujemy „sshd.,”

sudo netstat -anp | grep "sshd"
Reklama

grepznajduje docelowy ciąg znaków i widzimy, że Demonsshd używa portu 22.

oczywiście możemy to zrobić również odwrotnie. Jeśli poszukamy”: 22″, możemy dowiedzieć się, który proces używa tego portu, jeśli taki istnieje.

sudo netstat -anp | grep ":22"

tym razemgrepznajduje docelowy ciąg znaków „:22” i widzimy, że proces korzystający z tego portu jest demonemsshd, proces o ID 751.,

lista interfejsów sieciowych

opcja -i(interfaces) wyświetli tabelę interfejsów sieciowych, które netstat może wykryć.

sudo netstat -i

oto wyjście w bardziej czytelny sposób:

Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg enp0s3 1500 4520671 0 0 0 4779773 0 0 0 BMRU lo 65536 30175 0 0 0 30175 0 0 0 LRU

tak znaczą kolumny:

  • Iface: nazwa interfejsu. Interfejs enp0s3 jest interfejsem sieciowym do świata zewnętrznego, a interfejs lo jest interfejsem loopback., Interfejs loopback umożliwia procesom komunikację wewnątrz komputera za pomocą protokołów sieciowych, nawet jeśli komputer nie jest podłączony do sieci.
  • MTU: Maksymalna Jednostka transmisyjna (MTU). Jest to największy „pakiet”, który można wysłać. Składa się z nagłówka zawierającego flagi routingu i protokołu oraz inne metadane, a także dane, które są faktycznie transportowane.
  • RX-OK: liczba odebranych pakietów, bez błędów.
  • RX – ERR: liczba odebranych pakietów z błędami. Chcemy, żeby było jak najmniej.,
  • RX-DRP: liczba pakietów upuszczonych (tzn. utraconych). Chcemy również, aby było to jak najniższe.
  • RX-OVR: liczba pakietów utraconych z powodu przepełnienia podczas odbioru. Zazwyczaj oznacza to, że bufor odbiorczy był pełny i nie mógł przyjąć więcej danych, ale więcej danych zostało odebranych i musiało zostać odrzucone. Im niższa ta liczba, tym lepiej, a zero jest idealne.
  • TX-OK: liczba przesyłanych pakietów, bez błędów.
  • RX-ERR: liczba przesyłanych pakietów z błędami. Chcemy, żeby to było zero.,
  • RX-DRP: liczba pakietów upuszczonych podczas transmisji. Idealnie, to powinno być zero.
  • RX-OVR: liczba pakietów utraconych z powodu przepełnienia podczas transmisji. Zazwyczaj oznacza to, że bufor wysyłania był pełny i nie mógł przyjąć więcej danych, ale więcej danych było gotowych do przesłania i musiało zostać odrzucone.
  • Flg: flagi. Zobacz tabelę FLAG poniżej.

znaczniki reprezentują następujące wartości:

lista członkostwa w grupie Multicast

Mówiąc najprościej, transmisja multicastu umożliwia wysłanie pakietu tylko raz, niezależnie od liczby odbiorców., Na przykład w przypadku usług, takich jak strumieniowanie wideo, Zwiększa to wydajność z punktu widzenia nadawcy o ogromną ilość.

Reklama

-g (groups) opcja sprawia, żenetstat wyświetla listę grup multicastowych gniazd na każdym interfejsie.

sudo netstat -g

kolumny są dość proste:

  • Interface: nazwa interfejsu, przez który transmituje Gniazdo.
  • RefCnt: liczba referencji, która jest liczbą procesów podłączonych do gniazda.,
  • Group: Nazwa lub identyfikator grupy multicast.

nowe dzieci w bloku

polecenia route, ip, ifconfig i ss mogą dostarczyć wiele tego, co netstat jest w stanie Ci pokazać. Wszystkie są świetne i warte sprawdzenia.

skupiliśmy się nanetstat ponieważ jest on powszechnie dostępny, niezależnie od tego, na którym Uniksopodobnym systemie operacyjnym pracujesz, nawet tych niejasnych.,

Dave McKay
Dave McKay po raz pierwszy użył komputerów, gdy perforowana taśma papierowa była w modzie i od tego czasu programuje. Po ponad 30 latach pracy w branży IT, obecnie pracuje jako dziennikarz technologiczny. W trakcie swojej kariery pracował jako niezależny programista, menedżer międzynarodowego zespołu programistów, kierownik projektów usług IT, a ostatnio jako Inspektor Ochrony Danych. Dave jest ewangelistą Linuksa i orędownikiem open source.Czytaj całość „

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Przejdź do paska narzędzi