Co to jest netstat?

Autor: Opublikowano

W skrócie: netstat to narzędzie wiersza poleceń pokazujące połączenia sieciowe, porty, na których programy oczekują na ruch, oraz inne informacje o sieci. Na Linuxie zwykle jest dostępne w pakiecie net-tools: polecenie sudo netstat -tulnp pokazuje porty TCP i UDP oraz przypisane do nich procesy. Do sprawdzania ustanowionych połączeń TCP przydaje się sudo netstat -tnp, a współczesną alternatywą jest ss.

Co pokazuje netstat i kiedy się przydaje?

netstat pozwala sprawdzić, z jakimi adresami komunikuje się komputer i które programy udostępniają usługi sieciowe. Pomaga na przykład ustalić, czy serwer WWW działa, dlaczego aplikacja nie może zająć portu albo jaki proces utrzymuje połączenie z innym urządzeniem.

Port to numer pozwalający skierować ruch sieciowy do określonej usługi. Program nasłuchujący na porcie oczekuje na komunikację, natomiast aktywne połączenie TCP łączy konkretny adres i port lokalny z adresem i portem drugiej strony.

netstat pokazuje stan widoczny na sprawdzanym komputerze. Sam wynik nie dowodzi, że usługa jest dostępna z internetu: dostęp może blokować zapora, router lub reguły sieciowe dostawcy infrastruktury.

Jak zainstalować netstat na Linuxie?

Najpierw sprawdź, czy narzędzie już działa:

netstat --version

Jeśli powłoka zgłasza brak polecenia, zainstaluj pakiet net-tools za pomocą menedżera pakietów swojej dystrybucji. Typowe polecenia to:

DystrybucjaInstalacja
Debian, Ubuntusudo apt update && sudo apt install net-tools
Fedorasudo dnf install net-tools
Arch Linuxsudo pacman -S net-tools
openSUSEsudo zypper install net-tools

Instalacja wymaga uprawnień administratora. Na zarządzanym serwerze, jeśli nie masz dostępu do sudo, poproś administratora o instalację albo sprawdź dostępność polecenia ss.

W wielu współczesnych systemach Linux netstat nie jest instalowane domyślnie, a do diagnostyki połączeń zalecane jest ss z pakietu iproute2. netstat nadal bywa przydatne podczas pracy ze starszymi instrukcjami i środowiskami.

Jak sprawdzić aktywne połączenia?

Aby wyświetlić połączenia TCP bez gniazd oczekujących na nowe połączenia, uruchom:

sudo netstat -tnp

Opcja -t wybiera TCP, -n wyświetla numeryczne adresy i porty bez rozwiązywania nazw, a -p dodaje informacje o procesie. sudo pozwala zobaczyć także dane procesów należących do innych użytkowników; bez odpowiednich uprawnień część informacji może być niedostępna.

W kolumnie State znajdziesz stan połączenia. ESTABLISHED oznacza ustanowione połączenie, SYN_SENT — próbę jego nawiązania, a TIME_WAIT — stan po zakończeniu połączenia, podczas którego system jeszcze przechowuje jego dane. Wpis TIME_WAIT sam w sobie nie oznacza awarii.

Jeśli interesują Cię wyłącznie ustanowione połączenia TCP, możesz przefiltrować wynik:

sudo netstat -tnp | grep ESTABLISHED

Kolumna Local Address zawiera lokalny adres i port, a Foreign Address — adres i port drugiej strony. UDP nie ustanawia połączeń w taki sam sposób jak TCP, dlatego jego gniazda nie mają analogicznego stanu ESTABLISHED. Do ich sprawdzania użyj sudo netstat -unp.

Jak znaleźć programy nasłuchujące na portach?

Najbardziej praktyczne polecenie do sprawdzania usług sieciowych to:

sudo netstat -tulnp

Opcja -l ogranicza wynik do gniazd nasłuchujących, a -u uwzględnia UDP. Dla TCP zobaczysz stan LISTEN; w przypadku UDP chodzi o gniazda odbierające datagramy, a nie nasłuchiwanie na połączenia w rozumieniu TCP.

Przykładowy, uproszczony wpis może wyglądać tak:

tcp  0  0  127.0.0.1:8080  0.0.0.0:*  LISTEN  2451/python3

Oznacza to, że proces python3 o identyfikatorze PID 2451 nasłuchuje na porcie 8080, ale tylko na lokalnym interfejsie zwrotnym. PID to identyfikator procesu, który pozwala sprawdzić go dokładniej, na przykład poleceniem ps -p 2451 -f.

Adres nasłuchiwania ma znaczenie:

Nie traktuj adresu 0.0.0.0:* w kolumnie Foreign Address jako zdalnego klienta. Przy nasłuchującym gnieździe oznacza brak wskazanej drugiej strony.

Przykład: aplikacja nie może zająć portu 8080

Jeżeli aplikacja zgłasza, że port 8080 jest zajęty, sprawdź nasłuchujące gniazda TCP:

sudo netstat -tlnp | grep ':8080 '

Odczytaj PID i nazwę programu, a następnie sprawdź proces poleceniem ps -p PID -f, zastępując PID znalezionym numerem. Ustal, czy to poprzednia instancja Twojej aplikacji, czy potrzebna usługa. Dopiero wtedy zatrzymaj właściwy program jego standardową metodą lub wybierz inny port — nie kończ nieznanego procesu tylko dlatego, że blokuje uruchomienie.

Jeśli netstat nie jest dostępne, podobne sprawdzenie wykonasz za pomocą:

sudo ss -tulnp

Przy problemie z dostępem z innego komputera najpierw potwierdź adres nasłuchiwania i proces, a dopiero później sprawdzaj zaporę oraz trasę sieciową. To rozdziela problem niedziałającej aplikacji od problemu z dostępnością jej portu.

Zobacz też: Domena a social media — co powinno być spójne?

Przeczytaj także

Dowiedz się, jak PHP-FPM obsługuje żądania PHP, czym różni się od serwera WWW i jak dobrać ustawienia procesów do ruchu oraz zasobów hostingu.
Poznaj BIND, otwarte oprogramowanie serwera DNS: sprawdź, jak obsługuje domeny, czym różnią się jego role i kiedy warto samodzielnie go wdrożyć.
Poznaj najważniejsze Security Headers, ich rolę w ochronie strony oraz sposób sprawdzania i wdrażania nagłówków bez blokowania potrzebnych funkcji.