Co to jest netstat?
Autor: Redakcja Domeny.ForSale 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:
| Dystrybucja | Instalacja |
|---|---|
| Debian, Ubuntu | sudo apt update && sudo apt install net-tools |
| Fedora | sudo dnf install net-tools |
| Arch Linux | sudo pacman -S net-tools |
| openSUSE | sudo 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:
127.0.0.1:8080— usługa dostępna przez lokalny adres IPv4, nie bezpośrednio z innych komputerów.0.0.0.0:8080— nasłuch na wszystkich lokalnych adresach IPv4.:::8080— nasłuch na wszystkich lokalnych adresach IPv6; obsługa IPv4 zależy od konfiguracji systemu i aplikacji.
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?
