ss
komanda predstavlja modernu zamenu za klasični netstat
. Možete je koristiti u Linux okruženju da biste dobili statističke podatke o vašim mrežnim vezama. U nastavku teksta ćete saznati kako se koristi ovaj koristan alat.
ss
komanda u poređenju sa netstat
Kao zamena za zastarelu netstat
komandu, ss
pruža detaljne informacije o tome kako vaš računar komunicira sa drugim računarima, mrežama i servisima.
ss
prikazuje statistiku za Protokol za kontrolu prenosa (TCP), Protokol korisničkih datagrama (UDP), Unix (međuprocesni), i sirove sokete. Sirovi soketi funkcionišu na mrežnom OSI nivou, što znači da TCP i UDP zaglavlja moraju da budu obrađena od strane aplikativnog softvera, a ne od strane transportnog sloja. Internet Control Message Protocol (ICMP) poruke i ping programi koriste sirove sokete.
Korišćenje ss
komande
Nije potrebno instalirati ss
, s obzirom da je ona već deo moderne Linux distribucije. Međutim, njen izlaz može biti prilično obiman – imali smo rezultate koji su se prostirali na više od 630 linija. Takođe, rezultati mogu biti veoma široki.
Zbog toga smo uključili tekstualne prikaze rezultata koje smo dobili, budući da ne bi stali u snimak ekrana. Skratili smo ih kako bi bili lakši za pregled.
Prikaz mrežnih veza
Korišćenjem ss
bez dodatnih opcija komandne linije, prikazuju se soketi koji ne slušaju. Drugim rečima, prikazuju se soketi koji nisu u stanju osluškivanja.
Da biste ovo videli, ukucajte sledeće:
ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 /run/systemd/journal/stdout 35689 * 35688 u_str ESTAB 0 0 * 35550 * 35551 ... u_str ESTAB 0 0 * 38127 * 38128 u_str ESTAB 0 0 /run/dbus/system_bus_socket 21243 * 21242 u_str ESTAB 0 0 * 19039 * 19040 u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306 icmp6 UNCONN 0 0 *:ipv6-icmp *:* udp ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps
Kolone prikazuju sledeće:
Netid: Tip soketa. U našem primeru imamo „u_str“, Unix stream, „udp“ i „icmp6“, IPv6 ICMP sokete. Više opisa tipova Linux soketa možete pronaći u Linux man stranicama.
Stanje: Status u kom se nalazi soket.
Recv-Q: Broj primljenih paketa.
Send-Q: Broj poslatih paketa.
Lokalna Adresa:Port: Lokalna adresa i port (ili ekvivalentne vrednosti za Unix sokete).
Udaljena Adresa:Port: Udaljena adresa i port (ili ekvivalentne vrednosti za Unix sokete).
Za UDP sokete, kolona „Stanje“ je obično prazna. Za TCP sokete, može biti jedno od sledećeg:
LISTEN: Samo na strani servera. Soket čeka zahtev za povezivanje.
SYN-SENT: Samo na strani klijenta. Ovaj soket je postavio zahtev za povezivanje i čeka da vidi da li je prihvaćen.
SYN-RECEIVED: Samo na strani servera. Ovaj soket čeka potvrdu veze nakon prihvatanja zahteva za povezivanje.
ESTABLISHED: Server i klijenti. Uspostavljena je aktivna veza između servera i klijenta, omogućavajući prenos podataka između njih.
FIN-WAIT-1: Server i klijenti. Ovaj soket čeka zahtev za prekid veze sa udaljenog soketa ili potvrdu zahteva za prekid veze koji je prethodno poslat sa ovog soketa.
FIN-WAIT-2: Server i klijenti. Ovaj soket čeka zahtev za prekid veze od udaljenog soketa.
CLOSE-WAIT: Server i klijent. Ovaj soket čeka zahtev za prekid veze od lokalnog korisnika.
CLOSING: Server i klijenti. Ovaj soket čeka potvrdu zahteva za prekid veze sa udaljenog soketa.
LAST-ACK: Server i klijent. Ovaj soket čeka potvrdu zahteva za prekid veze koju je poslao udaljenom soketu.
TIME-WAIT: Server i klijenti. Ovaj soket je poslao potvrdu udaljenom soketu da je primio zahtev za ukidanje udaljenog soketa. Sada čeka da se uveri da je potvrda primljena.
CLOSED: Nema veze, soket je prekinut.
Soketi za osluškivanje
Da bismo videli sokete za osluškivanje, dodaćemo opciju -l
(listen), na sledeći način:
ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 4096 /run/systemd/private 13349 * 0 u_seq LISTEN 0 4096 /run/udev/control 13376 * 0 u_str LISTEN 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0 u_str LISTEN 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 32303 * 0
Svi ovi soketi su nepovezani i slušaju. „rtnl“ označava mrežnu vezu za rutiranje, koja se koristi za razmenu informacija između procesa kernela i korisničkog prostora.
Prikaz svih soketa
Da biste prikazali sve sokete, možete koristiti opciju -a
(all):
ss -a
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 100 public/showq 23222 * 0 u_str LISTEN 0 100 private/error 23225 * 0 u_str LISTEN 0 100 private/retry 23228 * 0 ... udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* ... tcp LISTEN 0 128 [::]:ssh [::]:* tcp LISTEN 0 5 [::1]:ipp [::]:* tcp LISTEN 0 100 [::1]:smtp [::]:*
Izlaz sadrži sve sokete, bez obzira na stanje.
Prikaz TCP soketa
Takođe možete primeniti filter tako da se prikazuju samo određeni soketi. Koristićemo opciju -t
(TCP), tako da će biti prikazani samo TCP soketi:
ss -a -t
Prikaz UDP soketa
Opcija -u
(UDP) vrši istu vrstu filtriranja. Ovog puta videćemo samo UDP sokete:
ss -a -u
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process UNCONN 0 0 0.0.0.0:631 0.0.0.0:* UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* UNCONN 0 0 0.0.0.0:60734 0.0.0.0:* UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps UNCONN 0 0 [::]:mdns [::]:* UNCONN 0 0 [::]:51193 [::]:*
Prikaz Unix soketa
Da biste videli samo Unix sokete, možete uključiti opciju -x
(Unix), kao što je prikazano ispod:
ss -a -x
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 * 23183 * 23184 u_str ESTAB 28 0 @/tmp/.X11-unix/X0 52640 * 52639 ... u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306
Prikaz sirovih soketa
Filter za sirove sokete je opcija -w
(raw):
ss -a -w
Prikaz IPv4 soketa
Soketi koji koriste TCP/IP protokol verzije 4 mogu se prikazati pomoću opcije -4
(IPv4):
ss -a -4
Prikaz IPv6 soketa
Možete uključiti odgovarajući IPv6 filter pomoću opcije -6
(IPv6), na sledeći način:
ss -a -6
Prikaz soketa po stanju
Možete prikazati sokete u zavisnosti od stanja u kom se nalaze pomoću opcije state
. Ovo funkcioniše sa stanjima established, listening ili closed. Takođe ćemo koristiti opciju -r
(resolve), koja pokušava da razreši mrežne adrese u imena i portove u protokole.
Sledeća komanda će prikazati uspostavljene TCP veze, a ss
će pokušati da razreši imena:
ss -t -r state established
Prikazane su četiri veze koje su u uspostavljenom stanju. Ime hosta, ubuntu20-04
, je razrešeno, i „ssh“ je prikazano umesto 22 za SSH vezu u drugom redu.
Ovo možemo ponoviti da bismo potražili sokete u stanju slušanja:
ss -t -r state listening
Recv-Q Send-Q Local Address:Port Peer Address:Port Process 0 128 localhost:5939 0.0.0.0:* 0 4096 localhost%lo:domain 0.0.0.0:* 0 128 0.0.0.0:ssh 0.0.0.0:* 0 5 localhost:ipp 0.0.0.0:* 0 100 localhost:smtp 0.0.0.0:* 0 128 [::]:ssh [::]:* 0 5 ip6-localhost:ipp [::]:* 0 100 ip6-localhost:smtp [::]:*
Prikaz soketa po protokolu
Možete prikazati sokete koji koriste određeni protokol pomoću opcija dport
i sport
, koje predstavljaju odredišne i izvorne portove.
Ukucavamo sledeće kako bismo prikazali sokete koji koriste HTTPS protokol na uspostavljenoj vezi (obratite pažnju na razmak posle početne i pre završne zagrade):
ss -a state established ‘( dport = :https or sport = :https )’
Možemo koristiti ime protokola ili port koji je obično povezan sa tim protokolom. Podrazumevani port za Secure Shell (SSH) je port 22.
Koristićemo ime protokola u jednoj komandi, a zatim je ponoviti koristeći broj porta:
ss -a ‘( dport = :ssh or sport = :ssh )’
ss -a ‘( dport = :22 or sport = :22 )’
Kao što se i očekivalo, dobijamo iste rezultate.
Prikaz veza ka određenoj IP adresi
Sa opcijom dst
(destination), možemo prikazati veze ka određenoj odredišnoj IP adresi.
Ukucavamo sledeće:
ss -a dst 192.168.4.25
Identifikacija procesa
Da biste videli koji procesi koriste sokete, možete koristiti opciju process
(-p
), kao što je prikazano u nastavku (imajte na umu da morate koristiti sudo
):
sudo ss -t -p
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https users:(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 users:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))
Ovo nam pokazuje da dve uspostavljene TCP veze koriste SSH demon i Firefox.
Dostojan naslednik
ss
komanda pruža iste informacije koje je prethodno pružao netstat
, ali na jednostavniji i pristupačniji način. Za više opcija i saveta pogledajte man stranicu.