SS(8) System Manager's Manual SS(8) NAZWA ss - kolejne narzedzie do badania gniazd SKLADNIA ss [opcje] [ FILTR ] OPIS ss sluzy do zrzucania statystyk gniazd. Umozliwia wyswietlanie informacji podobnych do netstat. Moze wyswietlac wiecej informacji o TCP i stanie niz inne narzedzia. OPCJE Jesli nie uzyto zadnej opcji, ss wyswietla liste otwartych gniazd nie nasluchujacych (np. TCP/UNIX/UDP), ktore nawiazaly polaczenie. -h, --help Pokazuje podsumowanie opcji. -V, --version Pokazuje informacje o wersji. -H, --no-header Pomija linie naglowka. -Q, --no-queues Pomija wysylanie i otrzymywanie kolumn kolejek. -O, --oneline Wypisz dane kazdego gniazda w jednej lini. -n, --numeric Nie rozwiazuje nazw uslug. Pokazuje dokladne wartosci przepustowosci, a nie czytelne dla czlowieka. -r, --resolve Probuje rozwiazac numeryczne adresy/porty. -a, --all Wyswietla zarowno gniazda nasluchujace, jak i nienasluchujace (dla TCP oznacza to ustanowione polaczenia). -l, --listening Wyswietla tylko gniazda nasluchujace (domyslnie sa one pomijane). -B, --bound-inactive Wyswietla tylko skojarzone gniazda TCP, ktore sa nieaktywne (nie sa nasluchujace, laczace sie itp.; domyslnie sa one pomijane). -o, --options Pokaz informacje o zegarze. W przypadku protokolu TCP format wyjsciowy to: zegar:(,,) nazwa timera, istnieje piec rodzajow nazw timerow: on : oznacza jeden z tych licznikow czasu: licznik czasu retransmisji TCP, licznik czasu wczesnej retransmisji TCP i licznik czasu tail loss keepalive: zegar podtrzymujacy aktywnosc tcp timewait: timer etapu oczekiwania persist: zegar proby okna zerowego unknown: zaden z powyzszych zegarow po jakim czasie timer wygasnie ile razy nastapila retransmisja -e, --extended Pokaz szczegolowe informacje o gniezdzie. Format wyjsciowy to: uid: ino: sk: identyfikator uzytkownika, do ktorego nalezy gniazdo numer i-wezla gniazda w VFS uuid gniazda -m, --memory Pokaz uzycie pamieci gniazda. Format wyjsciowy to: skmem:(r,rb,t,tb, f,w,o, bl,d) pamiec przydzielona do odebrania pakietu calkowita pamiec ktora moze byc przydzielona do odbioru pakietu pamiec uzyta do wyslania pakietu (ktory zostal wyslany do warstwy 3) calkowita pamiec ktora moze byc przeznaczona na wyslanie pakietu pamiec przydzielona przez gniazdo jako pamiec podreczna, ale jeszcze nie uzywana do odbierania/wysylania pakietu. Jesli potrzebna jest pamiec do wyslania/odbioru pakietu, pamiec w pamieci podrecznej zostanie wykorzystana przed przydzieleniem dodatkowej pamieci. Pamiec przydzielona do wyslania pakietu (ktory nie zostal wyslany do warstwy 3) Pamiec uzywana do przechowywania opcji gniazda, np. klucza do podpisu TCP MD5 Pamiec uzywana przez kolejke sk rejestru zadan do wykonania. W kontekscie procesu, jesli proces odbiera pakiet i odbierany jest nowy pakiet, zostanie on umieszczony w kolejce sk, dzieki czemu proces moze go natychmiast odebrac liczba pakietow odrzuconych przed demultipleksowaniem w gniezdzie -p, --processes Pokazuje proces za pomoca gniazda. -T, --threads Pokazuje watek za pomoca gniazda. Implikuje -p. -i, --info Pokazuje wewnetrzne informacje o TCP. Moga pojawic sie ponizsze pola: ts pokazuje ,,ts", jesli ustawiono opcje znacznika czasu sack pokazuje ,,sack", jesli opcja sack jest ustawiona ecn pokazuje ciag ,,ecn", jesli ustawiono opcje jawnego powiadamiania o przeciazeniu ecnseen pokazuje ,,ecnseen", jesli flaga saw ecn zostanie znaleziona w odebranych pakietach fastopen pokazuje ,,fastopen", jesli opcja fastopen jest ustawiona cong_alg nazwa algorytmu przeciazenia, domyslnym algorytmem jest ,,cubic" wscale:: jesli uzywana jest opcja skali okna, to pole pokazuje wspolczynnik skali wysylania i wspolczynnik skali odbierania rto: wartosc limitu czasu retransmisji tcp, jednostka jest milisekunda backoff: uzywany do wykladniczej retransmisji wycofywania, rzeczywista wartosc limitu czasu retransmisji to icsk_rto << icsk_backoff rtt:/ rtt to sredni czas podrozy w obie strony, rttvar to srednie odchylenie rtt, ich jednostkami sa milisekundy ato: limit czasu potwierdzenia, jednostka jest milisekunda, uzywana w trybie opoznienia mss: maksymalny rozmiar segmentu cwnd: rozmiar okna przeciazenia pmtu: wartosc sciezki MTU ssthresh: prog powolnego uruchamiania okna przeciazenia tcp bytes_acked: potwierdzone bajty bytes_received: odebrane bajty segs_out: wyslane segmenty segs_in: odebrane segmenty send bps wyjscia bps lastsnd: ilosc czasu ktora uplynela od ostatniego wyslania pakietu, jednostka jest milisekunda lastrcv: ilosc czasu ktora uplynela od otrzymania ostatniego pakietu, jednostka jest milisekunda lastack: ilosc czasu ktora uplynela od ostatniego potwierdzenia, jednostka sa milisekundy pacing_rate bps/bps wskaznik tempa i maksymalny wskaznik tempa rcv_space: zmienna pomocnicza dla wewnetrznego bufora odbiorczego automatycznego dostrajania gniazda TCP tcp-ulp-mptcp flags:[MmBbJjecv] token: seq: sfseq: ssnoff: maplen: Informacje o przeplywie podrzednym MPTCP --tos Pokaz ToS i informacje priorytetowe. Moga pojawic sie ponizsze pola: tos Bajt typu uslugi IPv4 tclass Bajt klasy ruchu IPv6 class_id Identyfikator klasy ustawiony przez net_cls cgroup. Jesli klasa ma wartosc zero, pokazuje priorytet ustawiony przez SO_PRIORITY. --cgroup Pokazuje informacje o grupie. Moga pojawic sie ponizsze pola: cgroup Sciezka do Cgroup v2. Ta nazwa sciezki jest wzgledna do punktu montowania w hierarchii. --tipcinfo Pokazuje wewnetrzne informacje o gniezdzie tipc. -K, --kill Probuje silowo zamykac gniazda. Ta opcja wyswietla gniazda pomyslnie zamkniete i dyskretnie pomija gniazda, ktorych zamykanie nie jest obslugiwane przez jadro. Obsluguje tylko gniazda IPv4 i IPv6. -s, --summary Wypisuje zbiorcze statystyki. Ta opcja nie analizuje list gniazd uzyskujac podsumowanie z roznych zrodel. Jest to przydatne, gdy liczba gniazd jest tak duza, ze parsowanie /proc/net/tcp jest ciezkie. -E, --events Ciagle wyswietla gniazda w miare ich niszczenia -Z, --context Podobnie jak opcja -p, ale pokazuje rowniez kontekst bezpieczenstwa procesu. Jesli uzywana jest opcja -T, pokazuje rowniez kontekst zabezpieczen watku. Dla netlink(7) kontekst procesu inicjujacego gniazd jest wyswietlany w nastepujacy sposob: 1. Jesli prawidlowy pid pokazuje kontekst procesu. 2. Jesli miejscem docelowym jest jadro (pid = 0), pokaz poczatkowy kontekst jadra. 3. Jesli unikalny identyfikator zostal przydzielony przez jadro lub uzytkownika netlink, pokaz kontekst jako ,,niedostepny". Ogolnie oznacza to, ze proces ma wiecej niz jedno aktywne gniazdo netlink. -z, --contexts Jak opcja -Z, ale pokazuje rowniez kontekst gniazda. Kontekst gniazda jest pobierany z powiazanego i-wezla i nie jest rzeczywistym kontekstem gniazda utrzymywanym przez jadro. Gniazda sa zwykle oznaczone kontekstem procesu tworzenia, jednak pokazany kontekst bedzie odzwierciedlal wszelkie zastosowane reguly zmiany rol, typow i/lub zakresow zasad, dlatego jest przydatnym odniesieniem. -N NAZWA-SIEC-PRZ-N, --net=NAZWA-SIEC-PRZ-N Przelacza sie na okreslona nazwe sieciowej przestrzeni nazw. -b, --bpf Pokazuje klasyczne filtry BPF gniazda (tylko administratorzy moga uzyskac te informacje). -4, --ipv4 Wyswietla tylko gniazda IP w wersji 4 (alias dla -f inet). -6, --ipv6 Wyswietla tylko gniazda IP w wersji 6 (alias dla -f inet6). -0, --packet Wyswietl gniazda PACKET (alias dla lacza -f link). -t, --tcp Wyswietla gniazda TCP. -u, --udp Wyswietla gniazda UDP. -d, --dccp Wyswietla gniazda DCCP. -w, --raw Wyswietla gniazda RAW. -x, --unix Wyswietla gniazda domeny Unix (alias dla -f unix). -S, --sctp Wyswietla gniazda SCTP. --tipc Wyswietla gniazda tipc (alias dla -f tipc). --vsock Wyswietla gniazda vsock (alias dla -f vsock). --xdp Wyswietla gniazda XDP (alias dla -f xdp). -M, --mptcp Wyswietl gniazda MPTCP. --inet-sockopt Wyswietl opcje gniazda inet. -f FAMILY, --family=RODZINA Wyswietla gniazda z okreslonej RODZINY. Obecnie obslugiwane sa nastepujace rodziny: unix, inet, inet6, link, netlink, vsock, tipc, xdp. -A ZAPYTANIE, --query=ZAPYTANIE, --socket=ZAPYTANIE Lista tabel gniazd do zrzutu, oddzielona przecinkami. Rozumiane sie nastepujace identyfikatory: all, inet, tcp, udp, raw, unix, package, netlink, unix_dgram, unix_stream, unix_seqpacket, package_raw, package_dgram, dccp, sctp, tipc, vsock_stream, vsock_dgram, xdp, mptcp. Kazdy element na liscie moze byc opcjonalnie poprzedzony wykrzyknikiem (!), aby wykluczyc zrzut tabeli gniazd. -D PLIK, --diag=PLIK Nie wyswietla niczego, zrzuca nieprzetworzone informacje o gniazdach TCP do PLIKU po zastosowaniu filtrow. Jesli PLIK jest - uzywane jest stdout. -F PLIK, --filter=PLIK Czyta informacje o filtrze z PLIKU. Kazda linia PLIKU jest interpretowana jako pojedyncza opcja wiersza polecen. Jesli PLIK to - uzywane jest stdin. --bpf-maps Wypisuje wszystkie wpisy danych lokalnych gniazd BPF dla kazdego gniazda, sformatowane za pomoca pretty-print. --bpf-map-id=IDENTYFIKATOR-MAPY Wypisuje wpisy danych lokalnych gniazd BPF dla zadanego identyfikatora mapy, sformatowane za pomoca pretty-print. Mozna uzyc wiecej niz raz. FILTER := [ state FILTR-STANU ] [ WYRAZENIE ] Szczegolowe informacje dotyczace filtrow mozna znalezc w oficjalnej dokumentacji. FILTR-STANU FILTR-STANU pozwala skonstruowac dowolny zestaw stanow do dopasowania. Jego skladnia to sekwencja slow kluczowych stan i wykluczenie, po ktorych nastepuje identyfikator stanu. Dostepne identyfikatory to: Wszystkie standardowe stany TCP: established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack, listening and closing. all - dla wszystkich stanow connected - dla wszystkich stanow oprocz listening i closed synchronized - dla wszystkich stanow connected oprocz syn-sent bucket - stany, ktore sa utrzymywane jako mini gniazda, czyli time-wait i syn-recv big - przeciwienstwo do bucket bound-inactive - skojarzone, lecz poza tym nieaktywne gniazda (nie sa nasluchujace, laczace sie itp.) WYRAZENIE WYRAZENIE umozliwia filtrowanie na podstawie okreslonych kryteriow. WYRAZENIE sklada sie z szeregu predykatow polaczonych operatorami boolowskimi. Mozliwe operatory w rosnacej kolejnosci to lub (lub | lub ||), and (lub & lub &&) i not (lub !). Jesli zaden operator nie znajduje sie miedzy kolejnymi predykatami, zaklada sie operator and. Podwyrazenia mozna grupowac za pomoca ,,(" i ,,)". Obslugiwane sa nastepujace predykaty: {dst|src} [=] HOST Sprawdz, czy miejsce docelowe lub zrodlo odpowiada HOST. Aby uzyskac szczegolowe informacje, zobacz HOST SYNTAX. {dport|sport} [OP] [FAMILY:]:PORT Porownaj port docelowy lub zrodlowy z PORT. OP moze byc dowolnym z ,,<", ,,<=", ,,=", ,,!=", ,,>=" i ,,>". Zgodnie ze zwyklymi regulami arytmetycznymi. FAMILY i PORT sa takie, jak opisano w HOST SYNTAX ponizej. dev [=|!=] DEVICE Dopasowuje na podstawie urzadzenia, z ktorego korzysta polaczenie. DEVICE moze byc nazwa urzadzenia lub indeksem interfejsu. fwmark [=|!=] MASK Dopasowania na podstawie wartosci fwmark dla polaczenia. Moze to byc okreslona wartosc znaku lub wartosc znaku, po ktorej nastepuje znak ,,/" i maska bitow, ktorych bity maja byc uzyte w porownaniu. Na przyklad ,,fwmark = 0x01/0x03" pasowaloby, gdyby dwa najmniej znaczace bity znaku fw mialy wartosc 0x01. cgroup [=|!=] PATH Dopasuj, jesli polaczenie jest czescia cgroup w podanej sciezce. autobound Dopasuj, jesli port lub sciezka adresu zrodlowego zostala przydzielona automatycznie (a nie jawnie okreslona). Wiekszosc operatorow ma aliasy. Jesli nie podano zadnego operatora, przyjmowany jest znak ,,=". Kazda z nastepujacych grup operatorow jest rownowazna: o = == eq o != ne neq o > gt o < lt o >= ge geq o <= le leq o ! not o | || or o & && and SKLADNIA HOSTA Ogolna skladnia hosta to [RODZINA:]ADRES[:PORT]. RODZINA musi byc jedna z rodzin obslugiwanych przez opcje -f. Jesli nie zostanie podany, domyslnie przyjmuje rodzine podana z opcja -f, a jesli jej rowniez nie ma, przyjmie albo inet, albo inet6. Nalezy zauwazyc, ze wszystkie warunki hosta w wyrazeniu powinny nalezec do tej samej rodziny lub zawierac tylko inet i inet6. Jesli istnieje inna mieszanka rodzin, wyniki beda prawdopodobnie nieoczekiwane. Postac ADRESU i PORTU zalezy od uzytej rodziny. ,,*" moze sluzyc jako symbol wieloznaczny dla adresu lub portu. Szczegoly dotyczace kazdej rodziny sa nastepujace: unix ADRES jest wzorcem globalnym (patrz fnmatch(3)), ktory bedzie dopasowywany bez uwzgledniania wielkosci liter do adresu gniazda uniksowego. Obslugiwane sa zarowno nazwy sciezek, jak i abstrakcyjne. Adresy uniksowe nie obsluguja portu, a ,,*" nie moze byc uzywana jako symbol wieloznaczny. link ADRES to niewrazliwa na wielkosc liter nazwa protokolu Ethernet do dopasowania. PORT to albo nazwa urzadzenia, albo indeks urzadzenia dla zadanego urzadzenia lacza, jak widac na wyjsciu lacza ip. netlink ADRES jest deskryptorem rodziny netlink. Mozliwe wartosci pochodza z /etc/iproute2/nl_protos. PORT to identyfikator portu gniazda, ktory zwykle jest taki sam jak identyfikator procesu bedacego wlascicielem. Wartosc ,,kernel" moze byc uzywana do reprezentowania jadra (identyfikator portu rowny 0). vsock ADRES to liczba calkowita reprezentujaca adres CID, a PORT to port. inet i inet6 ADRES to adres IP (w zaleznosci od rodziny v4 lub v6) lub nazwa hosta DNS, ktora jest tlumaczona na adres IP wymaganej wersji. Adres IPv6 musi byc ujety w ,,[" i ,,]", aby ujednoznacznic separator portow. Adres moze miec dodatkowo dlugosc prefiksu podana w notacji CIDR (ukosnik, po ktorym nastepuje dlugosc prefiksu w bitach). PORT jest numerycznym portem gniazda lub nazwa uslugi, do ktorej ma byc dopasowany port. PRZYKLADY UZYCIA ss -t -a Wyswietla wszystkie gniazda TCP. ss -t -a -Z Wyswietla wszystkie gniazda TCP z procesowymi kontekstami bezpieczenstwa SELinux. ss -u -a Wyswietla wszystkie gniazda UDP. ss -o state established '( dport = :ssh or sport = :ssh )' Wyswietla wszystkie ustanowione polaczenia ssh. ss -x src /tmp/.X11-unix/* Znajduje wszystkie lokalne procesy podlaczone do serwera X. ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24 Wypisuje wszystkie gniazda tcp w stanie FIN-WAIT-1 dla naszego Apache do sieci 193.233.7/24 i wskazuje na ich liczniki czasu. ss -a -A 'all,!tcp' Wyswietla liste gniazd we wszystkich stanach ze wszystkich tabel gniazd z wyjatkiem protokolu TCP. ZOBACZ TAKZE ip(8), RFC 793 - https://tools.ietf.org/rfc/rfc793.txt (TCP states) AUTOR ss napisane przez Alexey Kuznetsov, . Ta strona podrecznika zostala napisana przez Michaela Prokopa dla projektu Debian (ale moze byc uzywana przez innych). TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Daria Danieluk i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . SS(8)