Które polecenie systemu operacyjnego Linux (z pakietu iproute2) wyświetla gniazda nasłuchujące i aktywne połączenia sieciowe komputera?
A. tcpdump
B. ss
C. ifconfig
D. ssh
Polecenie ss jest właściwą odpowiedzią, bo należy do pakietu iproute2 i służy właśnie do wyświetlania informacji o gniazdach sieciowych, czyli socketach. W praktyce pokazuje zarówno gniazda nasłuchujące, jak i aktywne połączenia TCP, UDP, UNIX domain sockets oraz powiązane z nimi adresy, porty i czasem procesy. To narzędzie jest nowocześniejszym następcą polecenia netstat, które w wielu dystrybucjach Linuksa jest już traktowane jako starsze rozwiązanie z pakietu net-tools. Z mojego doświadczenia ss jest szybsze i wygodniejsze, szczególnie na serwerach z dużą liczbą połączeń. Przykładowo ss -tuln pokaże nasłuchujące porty TCP i UDP bez rozwiązywania nazw, a ss -tulpn pozwoli dodatkowo zobaczyć procesy, które trzymają dane porty, o ile masz odpowiednie uprawnienia. Przy diagnozowaniu usług, np. SSH, HTTP albo bazy danych, to bardzo praktyczne: można sprawdzić, czy usługa faktycznie słucha na porcie 22, 80, 443 albo 3306. Dobrą praktyką administracyjną jest używanie ss razem z narzędziami typu systemctl, journalctl i ip, bo wtedy da się szybko ustalić, czy problem leży w usłudze, konfiguracji sieci, zaporze firewall czy w samym procesie aplikacji.
W tym pytaniu łatwo pomylić kilka narzędzi sieciowych, bo każde z nich w jakiś sposób kojarzy się z siecią w Linuksie. ifconfig służy głównie do wyświetlania i ustawiania parametrów interfejsów sieciowych, takich jak adres IP, maska, stan interfejsu czy liczba przesłanych pakietów. To polecenie pochodzi jednak ze starszego pakietu net-tools i dziś w dobrych praktykach administracyjnych częściej zastępuje się je poleceniem ip z pakietu iproute2. ifconfig nie jest narzędziem do analizy gniazd nasłuchujących ani aktywnych sesji TCP/UDP, więc nie odpowiada na pytanie o połączenia procesów z portami. ssh to klient zdalnego logowania i szyfrowanej komunikacji z innym hostem. Można nim połączyć się z serwerem, ale samo polecenie ssh nie służy do przeglądania lokalnych socketów ani listy usług nasłuchujących. tcpdump z kolei jest analizatorem pakietów, bardzo mocnym, ale na innym poziomie diagnostyki. Podsłuchuje ruch na interfejsie i pokazuje pakiety, nagłówki, adresy oraz porty, jednak nie daje tak bezpośredniej listy gniazd powiązanych z procesami jak ss. Typowy błąd myślowy polega tu na tym, że skoro narzędzie dotyczy sieci, to uznaje się je za odpowiednie do każdego zadania sieciowego. W administracji Linuksem warto rozróżniać warstwy: konfiguracja interfejsów to ip lub dawniej ifconfig, zdalny dostęp to ssh, przechwytywanie ramek i pakietów to tcpdump, a stan socketów i połączeń systemowych to właśnie ss. Moim zdaniem to jedno z tych poleceń, które naprawdę warto mieć w palcach, bo przy awarii usługi potrafi oszczędzić sporo czasu.