Come usare il comando ss su Linux
Pubblicato: 2022-01-29 Il comando ss
è un moderno sostituto del classico netstat
. Puoi usarlo su Linux per ottenere statistiche sulle tue connessioni di rete. Ecco come lavorare con questo pratico strumento.
Il comando SS contro netstat
In sostituzione del deprecato comando netstat
, ss
fornisce informazioni dettagliate su come il tuo computer comunica con altri computer, reti e servizi.
ss
visualizza le statistiche per TCP (Transmission Control Protocol), UDP (User Datagram Protocol), Unix (interprocesso) e socket grezzi. I socket grezzi operano a livello di rete OSI, il che significa che le intestazioni TCP e UDP devono essere gestite dal software applicativo, non dal livello di trasporto. I messaggi ICMP (Internet Control Message Protocol) e l'utilità ping utilizzano entrambi i socket non elaborati.
Utilizzando ss
Non è necessario installare ss
, poiché fa già parte di una distribuzione Linux aggiornata. Il suo output, tuttavia, può essere molto lungo: abbiamo avuto risultati contenenti oltre 630 righe. Anche i risultati sono molto ampi.
Per questo motivo, abbiamo incluso rappresentazioni testuali dei risultati ottenuti, poiché non si adatterebbero a uno screenshot. Li abbiamo tagliati per renderli più gestibili.
Elenco delle connessioni di rete
L'uso di ss
senza opzioni della riga di comando elenca i socket che non sono in ascolto. Cioè, elenca i socket che non sono nello stato di ascolto.
Per vederlo, digita quanto segue:
ss
Stato Netid Recv-Q Send-Q Indirizzo locale:Porta 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
Le colonne sono le seguenti:
- Netid : il tipo di presa. Nel nostro esempio, abbiamo "u_str", un flusso Unix, un "udp" e "icmp6", un socket ICMP IP versione 6. Puoi trovare ulteriori descrizioni dei tipi di socket Linux nelle pagine man di Linux.
- Stato : lo stato in cui si trova il socket.
- Recv-Q : Il numero di pacchetti ricevuti.
- Send-Q : il numero di pacchetti inviati.
- Indirizzo locale:Porta : l'indirizzo e la porta locali (o valori equivalenti per i socket Unix).
- Peer Address:Port : l'indirizzo remoto e la porta (o valori equivalenti per i socket Unix).
Per i socket UDP la colonna "Stato" è generalmente vuota. Per i socket TCP può essere uno dei seguenti:
- ASCOLTA: solo lato server. Il socket è in attesa di una richiesta di connessione.
- SYN-SENT: solo lato client. Questo socket ha effettuato una richiesta di connessione ed è in attesa di vedere se è stata accettata.
- SYN-RECEIVED: solo lato server. Questo socket è in attesa di un riconoscimento della connessione dopo aver accettato una richiesta di connessione.
- COSTITUITO: Server e client. È stata stabilita una connessione funzionante tra il server e il client, consentendo il trasferimento dei dati tra i due.
- FIN-WAIT-1: Server e client. Questo socket è in attesa di una richiesta di terminazione della connessione dal socket remoto o di un riconoscimento di una richiesta di terminazione della connessione inviata in precedenza da questo socket.
- FIN-WAIT-2: Server e client. Questa presa è in attesa di una richiesta di terminazione della connessione dalla presa remota.
- CLOSE-WAIT: Server e client. Questo socket è in attesa di una richiesta di terminazione della connessione da parte dell'utente locale.
- CHIUSURA: Server e client. Questo socket è in attesa di un riconoscimento della richiesta di terminazione della connessione dal socket remoto.
- LAST-ACK: Server e client. Questo socket è in attesa di un riconoscimento della richiesta di terminazione della connessione che ha inviato al socket remoto.
- TIME-WAIT: Server e client. Questo socket ha inviato un riconoscimento al socket remoto per informarlo di aver ricevuto la richiesta di terminazione del socket remoto. Ora è in attesa di assicurarsi che il riconoscimento sia stato ricevuto.
- CHIUSO: non c'è connessione, quindi il socket è stato terminato.
Elenco delle prese di ascolto
Per vedere i socket di ascolto aggiungeremo l'opzione -l
(ascolto), in questo modo:
ss -l
Stato Netid Recv-Q Send-Q Indirizzo locale:Porta Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str ASCOLTA 0 4096 /run/systemd/private 13349 * 0 u_seq ASCOLTA 0 4096 /run/udev/control 13376 * 0 u_str ASCOLTA 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0 u_str ASCOLTA 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 32303 * 0
Queste prese sono tutte scollegate e in ascolto. Il "rtnl" significa routing netlink, che viene utilizzato per trasferire informazioni tra i processi del kernel e dello spazio utente.
Elenco di tutte le prese
Per elencare tutti i socket, puoi usare l'opzione -a
(all):
ss -a
Stato Netid Recv-Q Send-Q Indirizzo locale:Porta Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str ASCOLTA 0 100 public/showq 23222 * 0 u_str ASCOLTA 0 100 privato/errore 23225 * 0 u_str ASCOLTA 0 100 privato/riprova 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 ASCOLTA 0 128 [::]:ssh [::]:* tcp ASCOLTA 0 5 [::1]:ipp [::]:* tcp ASCOLTA 0 100 [::1]:smtp [::]:*
L'uscita contiene tutti i socket, indipendentemente dallo stato.
Elenco dei socket TCP
Puoi anche applicare un filtro in modo che vengano visualizzate solo le prese corrispondenti. Useremo l'opzione -t
(TCP), quindi verranno elencati solo i socket TCP:
ss -a -t
Elenco dei socket UDP
L'opzione -u
(UDP) esegue lo stesso tipo di azione di filtro. Questa volta vedremo solo i socket UDP:
ss -a -u
Stato Recv-Q Send-Q Indirizzo locale: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:dominio 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 [::]:*
Elenco dei socket Unix
Per vedere solo i socket Unix, puoi includere l'opzione -x
(Unix), come mostrato di seguito:
ss -a -x
Stato Netid Recv-Q Send-Q Indirizzo locale:Porta 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
Elenco dei socket grezzi
Il filtro per i socket raw è l' -w
(raw):
ss -a -w
Elenco prese IP versione 4
I socket che utilizzano il protocollo TCP/IP versione 4 possono essere elencati utilizzando l'opzione -4
(IPV4):
ss -a -4
Elenco prese IP versione 6
Puoi attivare il filtro IP versione 6 corrispondente con l'opzione -6
(IPV6), in questo modo:
ss -a -6
Elenco dei socket per stato
Puoi elencare i socket in base allo stato in cui si trovano con l'opzione state
. Funziona con stati stabiliti, in ascolto o chiusi. Utilizzeremo anche l'opzione di risoluzione ( -r
), che tenta di risolvere gli indirizzi di rete in nomi e porte in protocolli.
Il comando seguente cercherà le connessioni TCP stabilite e ss
proverà a risolvere i nomi:
ss -t -r stato stabilito
Sono elencate quattro connessioni che si trovano nello stato stabilito. Il nome host, ubuntu20-04, è stato risolto e sulla seconda riga viene visualizzato "ssh" invece di 22 per la connessione SSH.
Possiamo ripetere questo per cercare i socket nello stato di ascolto:
ss -t -r stato in ascolto
Recv-Q Send-Q Indirizzo locale:Port Peer Address:Port Process 0 128 localhost:5939 0.0.0.0:* 0 4096 localhost%lo:dominio 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 [::]:*
Elenco socket per protocollo
È possibile elencare i socket utilizzando un protocollo particolare con le opzioni dport
e sport
, che rappresentano rispettivamente le porte di destinazione e di origine.
Digitiamo quanto segue per elencare i socket che utilizzano il protocollo HTTPS su una connessione established
(notare lo spazio dopo la parentesi di apertura e prima di quella di chiusura):
ss -a stato stabilito '( dport = :https o sport = :https )'
Possiamo usare il nome del protocollo o la porta solitamente associata a quel protocollo. La porta predefinita per Secure Shell (SSH) è la porta 22.
Useremo il nome del protocollo in un comando, quindi lo ripeteremo utilizzando il numero di porta:
ss -a '( dport = :ssh o sport = :ssh )'
ss -a '( dport = :22 o sport = :22 )'
Come previsto, otteniamo gli stessi risultati.
Elenco delle connessioni a un indirizzo IP specifico
Con l'opzione dst
(destinazione), possiamo elencare le connessioni a un particolare indirizzo IP di destinazione.
Digitiamo quanto segue:
ss -a dst 192.168.4.25
Identificazione dei processi
Per vedere quali processi stanno usando i socket, puoi usare l'opzione process ( -p
), come mostrato di seguito (nota che devi usare sudo
):
sudo ss -t -p
Stato Recv-Q Send-Q Indirizzo locale:Port Peer Address:Port Process ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https utenti:(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 utenti:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))
Questo ci mostra che le due connessioni stabilite sui socket TCP vengono utilizzate dal demone SSH e da Firefox.
Un degno successore
Il comando ss
fornisce le stesse informazioni precedentemente fornite da netstat
, ma in un modo più semplice e accessibile. Puoi controllare la pagina man per ulteriori opzioni e suggerimenti.
Comandi Linux | ||
File | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · 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 · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converti · rclone · shred · srm | |
Processi | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
Rete | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
CORRELATI: I migliori laptop Linux per sviluppatori e appassionati