Cum să utilizați comanda ss pe Linux
Publicat: 2022-01-29 Comanda ss
este un înlocuitor modern pentru netstat
clasic. Îl puteți folosi pe Linux pentru a obține statistici despre conexiunile dvs. de rețea. Iată cum să lucrați cu acest instrument la îndemână.
Comanda ss versus netstat
Un înlocuitor pentru comanda netstat
depreciată, ss
vă oferă informații detaliate despre modul în care computerul dvs. comunică cu alte computere, rețele și servicii.
ss
afișează statistici pentru Transmission Control Protocol (TCP), User Datagram Protocol (UDP), Unix (interprocess) și socket-uri brute. Prizele brute operează la nivelul OSI al rețelei, ceea ce înseamnă că anteturile TCP și UDP trebuie gestionate de software-ul aplicației, nu de stratul de transport. Mesajele Internet Control Message Protocol (ICMP) și utilitarul ping folosesc ambele socketuri brute.
Folosind ss
Nu trebuie să instalați ss
, deoarece face deja parte dintr-o distribuție Linux actualizată. Ieșirea sa, totuși, poate fi foarte lungă – am avut rezultate care conțin peste 630 de linii. Rezultatele sunt, de asemenea, foarte ample.
Din acest motiv, am inclus reprezentări text ale rezultatelor pe care le-am obținut, deoarece acestea nu s-ar încadra într-o captură de ecran. Le-am tăiat pentru a le face mai ușor de gestionat.
Listarea conexiunilor de rețea
Utilizarea ss
fără opțiuni de linie de comandă listează socket-urile care nu ascultă. Adică, listează prizele care nu sunt în starea de ascultare.
Pentru a vedea acest lucru, tastați următoarele:
ss
Netid State Recv-Q Send-Q Adresă locală: 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
Coloanele sunt după cum urmează:
- Netid : tipul de priză. În exemplul nostru, avem „u_str”, un flux Unix, un „udp” și „icmp6”, o soclu IP versiunea 6 ICMP. Puteți găsi mai multe descrieri ale tipurilor de socket Linux în paginile de manual Linux.
- Stare : starea în care se află soclul.
- Recv-Q : numărul de pachete primite.
- Send-Q : numărul de pachete trimise.
- Adresă locală: Port : adresa locală și portul (sau valori echivalente pentru socket-urile Unix).
- Peer Address:Port : adresa și portul de la distanță (sau valori echivalente pentru socket-urile Unix).
Pentru socket-urile UDP, coloana „State” este de obicei goală. Pentru socket-urile TCP poate fi unul dintre următoarele:
- ASCULTATE: Numai pe partea serverului. Priza așteaptă o solicitare de conectare.
- SYN-SENT: Numai partea clientului. Această priză a făcut o solicitare de conectare și așteaptă să vadă dacă este acceptată.
- SYN-RECEIVED: numai pe partea serverului. Această priză așteaptă o confirmare a conexiunii după ce a acceptat o solicitare de conectare.
- INSTALAT: Server și clienți. S-a stabilit o conexiune de lucru între server și client, permițând transferul datelor între cei doi.
- FIN-WAIT-1: Server și clienți. Acest socket așteaptă o solicitare de terminare a conexiunii de la soclul de la distanță sau o confirmare a unei cereri de terminare a conexiunii care a fost trimisă anterior de la acest soclu.
- FIN-WAIT-2: Server și clienți. Această priză așteaptă o solicitare de terminare a conexiunii de la priza de la distanță.
- CLOSE-WAIT: Server și client. Această priză așteaptă o solicitare de terminare a conexiunii de la utilizatorul local.
- ÎNCHIDERE: Server și clienți. Această priză așteaptă o confirmare a cererii de terminare a conexiunii de la soclul de la distanță.
- LAST-ACK: Server și client. Această priză așteaptă o confirmare a cererii de terminare a conexiunii pe care a trimis-o către soclul de la distanță.
- TIME-WAIT: Server și clienți. Acest socket a trimis o confirmare către soclul de la distanță pentru a-l anunța că a primit cererea de terminare a soclului de la distanță. Acum așteaptă să se asigure că a fost primită confirmarea.
- ÎNCHIS: Nu există nicio conexiune, deci priza a fost întreruptă.
Listarea prize de ascultare
Pentru a vedea prizele de ascultare vom adăuga opțiunea -l
(ascultare), astfel:
ss -l
Netid State Recv-Q Send-Q Adresă locală: Port Peer Address: Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-adre/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
Aceste prize sunt toate neconectate și ascultă. „rtnl” înseamnă rutare netlink, care este folosit pentru a transfera informații între procesele kernel și spațiul utilizatorului.
Listarea tuturor prizelor
Pentru a lista toate socket-urile, puteți utiliza opțiunea -a
(toate):
ss -a
Netid State Recv-Q Send-Q Adresă locală: Port Peer Address: Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-adre/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 ASCULTĂ 0 128 [::]:ssh [::]:* tcp ASCULTĂ 0 5 [::1]:ipp [::]:* tcp ASCULTĂ 0 100 [::1]:smtp [::]:*
Ieșirea conține toate prizele, indiferent de stare.
Listarea socket-urilor TCP
De asemenea, puteți aplica un filtru, astfel încât să fie afișate numai soclurile care se potrivesc. Vom folosi opțiunea -t
(TCP), astfel încât numai socket-urile TCP vor fi listate:
ss -a -t
Listarea socket-urilor UDP
Opțiunea -u
(UDP) efectuează același tip de acțiune de filtrare. De data aceasta, vom vedea numai socket-uri UDP:
ss -a -u
State Recv-Q Send-Q Adresă locală: 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 [::]:*
Listarea socket-urilor Unix
Pentru a vedea numai socket-urile Unix, puteți include opțiunea -x
(Unix), după cum se arată mai jos:
ss -a -x
Netid State Recv-Q Send-Q Adresă locală: 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
Listarea prizelor brute
Filtrul pentru prize brute este opțiunea -w
(raw):
ss -a -w
Listare IP Versiunea 4 Sockets
Prizele care utilizează protocolul TCP/IP versiunea 4 pot fi listate folosind opțiunea -4
(IPV4):
ss -a -4
Listare IP Versiunea 6 Sockets
Puteți activa filtrul IP versiunea 6 potrivit cu opțiunea -6
(IPV6), astfel:
ss -a -6
Listarea prizelor după stat
Puteți enumera socket-urile în funcție de starea în care se află cu opțiunea de state
. Aceasta funcționează cu stări stabilite, de ascultare sau închise. Vom folosi, de asemenea, opțiunea de rezolvare ( -r
), care încearcă să rezolve adresele de rețea la nume și porturile la protocoale.
Următoarea comandă va căuta conexiuni TCP stabilite, iar ss
va încerca să rezolve numele:
ss -t -r stare stabilită
Sunt listate patru conexiuni care sunt în starea stabilită. Numele de gazdă, ubuntu20-04, a fost rezolvat și „ssh” este afișat în loc de 22 pentru conexiunea SSH pe a doua linie.
Putem repeta acest lucru pentru a căuta prize în starea de ascultare:
ss -t -r starea de ascultare
Recv-Q Trimitere-Q Adresă locală: 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 [::]:*
Listarea socket-urilor după protocol
Puteți lista socket-urile folosind un anumit protocol cu opțiunile dport
și sport
, care reprezintă porturile de destinație și, respectiv, sursă.
Introducem următoarele pentru a enumera socket-urile folosind protocolul HTTPS pe o conexiune established
(rețineți spațiul de după paranteza de deschidere și înainte de cea de închidere):
ss -o stare stabilită „( dport = :https sau sport = :https )”
Putem folosi numele protocolului sau portul asociat de obicei cu acel protocol. Portul implicit pentru Secure Shell (SSH) este portul 22.
Vom folosi numele protocolului într-o singură comandă și apoi îl vom repeta folosind numărul portului:
ss -a '( dport = :ssh sau sport = :ssh )'
ss -a '( dport = :22 sau sport = :22 )'
După cum era de așteptat, obținem aceleași rezultate.
Listarea conexiunilor la o anumită adresă IP
Cu opțiunea dst
(destinație), putem enumera conexiunile către o anumită adresă IP de destinație.
Introducem următoarele:
ss -a dst 192.168.4.25
Identificarea proceselor
Pentru a vedea ce procese folosesc socket-urile, puteți utiliza opțiunea procese ( -p
), așa cum se arată mai jos (rețineți că trebuie să utilizați sudo
):
sudo ss -t -p
State Recv-Q Send-Q Adresă locală: Port Peer Address: Port Process ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https utilizatori:(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 utilizatori:((„sshd”,pid=4086,fd=4),(„sshd”,pid=3985,fd=4))
Acest lucru ne arată că cele două conexiuni stabilite pe socket-urile TCP sunt folosite de demonul SSH și Firefox.
Un succesor demn
Comanda ss
oferă aceleași informații furnizate anterior de netstat
, dar într-un mod mai simplu, mai accesibil. Puteți consulta pagina de manual pentru mai multe opțiuni și sfaturi.
Comenzi Linux | ||
Fișiere | tar · pv · cat · tac · chmod · grep · diff · sed · ar · om · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · tip · redenumire · zip · dezarhivare · montare · demontare · instalare · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
Procese | alias · ecran · sus · frumos · renice · progres · strace · systemd · tmux · chsh · istoric · la · lot · gratuit · care · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · da · kill · sleep · sudo · su · time · groupadd · usermod · grupuri · lshw · shutdown · repornire · stop · poweroff · passwd · lscpu · crontab · data · bg · fg | |
Rețele | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
LEGATE: Cele mai bune laptopuri Linux pentru dezvoltatori și entuziaști