Wprowadzenie do polecenia ss

Naucz się jak uzyskać informacje o sieci używając polecenia ss w tym samouczku z archiwum.

Linux zawiera dość masywny wachlarz narzędzi dostępnych w celu zaspokojenia prawie każdej potrzeby. Od rozwoju do bezpieczeństwa do produktywności do administracji… jeśli musisz to zrobić, Linux jest tam, aby służyć. Jednym z wielu narzędzi, po które często sięgają administratorzy był netstat. Jednakże, polecenie netstat zostało wycofane na rzecz szybszego, bardziej czytelnego dla człowieka polecenia ss.

Komenda ss jest narzędziem używanym do zrzucania statystyk gniazd i wyświetla informacje w podobny sposób (choć prościej i szybciej) jak netstat. Polecenie ss może również wyświetlić jeszcze więcej informacji o TCP i stanie niż większość innych narzędzi. Ponieważ ss jest nowym netstatem, przyjrzymy się, jak wykorzystać to narzędzie, abyś mógł łatwiej uzyskać informacje o swojej maszynie linuksowej i o tym, co dzieje się z połączeniami sieciowymi.

Narzędzie wiersza poleceń ss może wyświetlać statystyki dla takich gniazd jak PACKET, TCP, UDP, DCCP, RAW i gniazd domenowych Uniksa. Zastępstwo dla netstat jest łatwiejsze w użyciu (porównaj strony man, aby uzyskać natychmiastowe wyobrażenie o ile łatwiejsze jest ss). Dzięki ss uzyskujesz bardzo szczegółowe informacje o tym, jak twój Linux komunikuje się z innymi maszynami, sieciami i usługami; szczegóły dotyczące połączeń sieciowych, statystyki protokołów sieciowych i połączeń gniazd linuksowych. Mając te informacje w ręku, możesz znacznie łatwiej rozwiązywać różne problemy związane z siecią.

Poznajmy się z ss, abyś mógł uznać je za nowe narzędzie w swoim zestawie administratora.

Podstawowe użycie

Polecenie ss działa jak każde inne polecenie na platformie Linux: Wydaj polecenie wykonywalne i wykonaj je za pomocą dowolnej kombinacji dostępnych opcji. Jeśli spojrzysz na stronę podręcznika ss (wydaj polecenie man ss), zauważysz, że nie ma tam prawie tylu opcji, co w poleceniu netstat; nie jest to jednak równoznaczne z brakiem funkcjonalności. W rzeczywistości ss jest całkiem potężne.

Jeśli wydasz polecenie ss bez żadnych argumentów lub opcji, zwróci ono pełną listę gniazd TCP z nawiązanymi połączeniami (rysunek 1).

Rysunek 1: Pełna lista wszystkich nawiązanych połączeń TCP.

Ponieważ polecenie ss (bez opcji) wyświetli znaczną ilość informacji (wszystkie szczegóły połączeń tcp, udp i gniazd unixowych), możesz również wysłać wyjście tego polecenia do pliku w celu późniejszego przejrzenia, jak na przykład:

ss > ss_output

Oczywiście, bardzo podstawowe polecenie nie jest przydatne w każdej sytuacji. Co jeśli chcemy zobaczyć tylko aktualnie nasłuchujące gniazda? To proste, dodaj opcję -l w następujący sposób:

ss -l

Powyższe polecenie wyświetli tylko listę aktualnie nasłuchujących gniazdek.

Aby uczynić je nieco bardziej szczegółowym, pomyśl o nim w ten sposób: ss może być użyte do przeglądania połączeń TCP przy użyciu opcji -t, połączeń UDP przy użyciu opcji -u lub połączeń UNIX przy użyciu opcji -x; tak więc ss -t, ss -u lub ss -x. Uruchomienie któregokolwiek z tych poleceń spowoduje wyświetlenie wielu informacji do przeczesania (Rysunek 2).

Rysunek 2: Uruchomienie ss -u na Elementary OS oferuje szybkie wyświetlenie połączeń UDP.

Domyślnie, użycie opcji -t, -u lub -x spowoduje wyświetlenie tylko tych połączeń, które są ustanowione (lub połączone). Jeśli chcemy wybrać połączenia, które nasłuchują, musimy dodać opcję -a w następujący sposób:

ss -t -a 

Wyniki powyższego polecenia będą zawierać wszystkie gniazda TCP (Rysunek 3).

Rysunek 3: Zauważ, że ostatnie gniazdo to ssh nasłuchujące na urządzeniu.

W powyższym przykładzie widać, że połączenia UDP (w różnym stanie) są nawiązywane z adresu IP mojej maszyny, z różnych portów, do różnych adresów IP, przez różne porty. W przeciwieństwie do wersji netstat tego polecenia, ss nie wyświetla PID i nazwy polecenia odpowiedzialnego za te połączenia. Mimo to, nadal masz mnóstwo informacji, aby rozpocząć rozwiązywanie problemów. Jeśli któryś z tych portów lub adresów URL jest podejrzany, wiesz teraz, jaki adres IP/port nawiązuje połączenie. Dzięki temu masz teraz informacje, które mogą Ci pomóc we wczesnych etapach rozwiązywania problemu.

Filtrowanie ss za pomocą stanów TCP

Jedną z bardzo przydatnych opcji dostępnych dla polecenia ss jest możliwość filtrowania za pomocą stanów TCP („etapów życia” połączenia). Dzięki stanom, możesz łatwiej filtrować wyniki polecenia ss. Narzędzie ss może być używane w połączeniu ze wszystkimi standardowymi stanami TCP:

  • established

  • syn-sent

  • syn-recv

  • fin-wait-1

  • fin-wait-2

  • time-wait

  • closed

  • close-wait

  • last-ack

  • listening

  • closing

Inne dostępne identyfikatory stanów, które rozpoznaje ss to:

  • all (wszystkie powyższe stany)

  • connected (wszystkie stany z wyjątkiem listen i closed)

  • synchronized (wszystkie stany connected z wyjątkiem syn-sent)

  • bucket (stany, które są utrzymywane jako minisockety, na przykład time-wait i

  • syn-recv)

  • big (stan przeciwny do bucket)

Składnia pracy ze stanami jest prosta.

For tcp ipv4:ss -4 state FILTERFor tcp ipv6:ss -6 state FILTER

Gdzie FILTER jest nazwą stanu, którego chcesz użyć.

Na przykład chcesz wyświetlić wszystkie nasłuchujące gniazda IPv4 na twoim komputerze. W tym przypadku polecenie brzmiałoby:

ss -4 state listening

Wyniki tego polecenia wyglądałyby podobnie jak na rysunku 4.

Rysunek 4: Użycie ss z filtrem stanu nasłuchiwania.

Pokaż podłączone gniazda z określonego adresu

Jednym z przydatnych zadań, jakie możesz przypisać ss, jest raportowanie połączeń wykonanych przez inny adres IP. Powiedzmy, że chcesz się dowiedzieć, czy/jak maszyna o adresie IP 192.168.1.139 połączyła się z Twoim serwerem. W tym celu możesz wydać polecenie:

ss dst 192.168.1.139

Wynikowe informacje (Rysunek 5) podadzą Ci Netid, stan, lokalny IP:port oraz zdalny IP:port gniazda.

Rysunek 5: Zdalna maszyna nawiązała połączenie ssh z naszą lokalną maszyną.

Spraw, aby pracowała dla Ciebie

Komenda ss może zrobić całkiem sporo, aby pomóc Ci w rozwiązywaniu problemów z serwerem Linux lub siecią. Byłoby wskazane, abyś poświęcił czas na zapoznanie się ze stroną podręcznika ss (wydaj polecenie man ss). Ale w tym momencie, powinieneś przynajmniej mieć podstawowe zrozumienie, jak korzystać z tego polecenia, które musisz znać.

Dowiedz się więcej o Linuksie poprzez darmowy kurs „Wprowadzenie do Linuksa” z The Linux Foundation i edX.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.