Come utilizzare il comando ss per risolvere i problemi di rete su Linux
Linux fornisce diversi strumenti per l’analisi delle statistiche di rete; ss è una di quelle utility da riga di comando. In questo tutorial, esamineremo le basi del comando ss con alcuni semplici esempi.
Ordine SS
Il comando Socket Statistics (ss) in Linux visualizza informazioni sul socket di rete. Quando viene utilizzato per scaricare le statistiche sui socket, il comando ss presenta dati come netstat, ma più veloce e più semplice.
Con ss, puoi visualizzare informazioni dettagliate sui socket utilizzati dal tuo sistema, incluso il loro stato, gli indirizzi di origine e destinazione e altre informazioni correlate. Può visualizzare molte più informazioni e stato TCP rispetto alla maggior parte degli altri strumenti.
Di seguito è riportato l’output del comando ss, che mostra i dati in diverse colonne. Il comando ss senza opzioni elenca tutti i socket non in ascolto aperti (ad es. TCP/UNIX/UDP) che hanno stabilito la connessione.
Esamineremo tutte le colonne una per una:
- Pulito – È semplicemente un tipo Socket. TCP, UDP, SOCK_SEQPACKET e ICMP sono tipi comuni di socket.
- Stato – Stato della presa. Gli stati socket comuni possono essere SYN-RECV, SYN-SENT, TIME-WAIT o ESTB (stabilito).
- recv-Q – Indica il numero di pacchetti ricevuti dalla coda.
- invia-Q – Indica il numero di pacchetti inviati dalla coda.
- Indirizzo locale: porta – Mostra il computer locale e l’indirizzo della porta.
- Indirizzo peer: porta – Visualizza gli indirizzi ei numeri di porta associati alle macchine remote.
Sintassi
ss [Options] [Filters]
È possibile utilizzare diverse opzioni e filtri con il comando ss per ottenere i dati secondo le proprie esigenze.È possibile ottenere un elenco di tutte le opzioni disponibili utilizzando il seguente comando:
ss -h
comando ss contro netstat
Lo strumento ss è incluso nel pacchetto iproute2 ed è l’impostazione predefinita nella maggior parte delle distribuzioni Linux. Per avere netstat, devi installare net-tools, che è già deprecato.
Rispetto al comando netstat, ss è più veloce e più semplice da usare e fornisce informazioni in un formato presentabile. ss prende direttamente dal kernel.
SS non è una sostituzione completa di netstat, parte del comando netstat è sostituita dal comando ip.
Installazione
L’utilità della riga di comando ss è preinstallata con la maggior parte delle distribuzioni Linux. Lo strumento ss viene fornito con il pacchetto iproute2. Tuttavia, la tua distribuzione non lo ha installato se ricevi il messaggio di errore “comando ss non trovato” durante l’esecuzione di questo comando.
Puoi installarlo usando uno dei seguenti comandi:
Ubuntu
sudo apt install iproute2
Cappello rosso
sudo yum install iproute2
cappello
sudo dnf install iproute
Come usare il comando ss
Come con tutti i comandi Linux, il comando ss funziona inviando il comando eseguibile e quindi utilizzando qualsiasi assortimento di opzioni disponibili per seguirlo.
Il comando ss ha meno opzioni disponibili rispetto al comando netstat. Tuttavia, questo non significa che sia meno funzionale. Il comando ss è un po’ più robusto.
Nota: L’esecuzione del comando ss senza opzioni o filtri restituisce un elenco esaustivo di socket TCP con connessioni stabilite.
1. Elenca le tue connessioni di rete
È possibile elencare tutte le connessioni di rete in ascolto e non in ascolto utilizzando l’opzione -a o -all.
ss -a
2. Elenca le prese di ascolto
Per visualizzare solo i socket in ascolto, che sono omessi per impostazione predefinita, utilizzare l’opzione -l o –listen.
ss -l
3. Elenca le connessioni TCP
Per visualizzare la connessione socket TCP, utilizzare l’opzione -t o –tcp.
ss -t
Per visualizzare l’elenco di tutte le connessioni TCPPuoi usare -a
e -t
Opzioni. Ciò include tutti gli stati del socket.
ss -at
Per mostrare la connessione TCP per tutti gli stati di ascolto, combinare -l
e -t
Opzioni.
ss -alt
4. Elenca tutte le connessioni TCP in ascolto
Per mostrare la connessione TCP per tutti gli stati di ascolto, combinare -l
e -t
Opzioni.
ss -alt
5. Elenca le connessioni UDP
Per visualizzare la connessione socket UDP, utilizzare -u
o --udp
opzione.
ss -u
Da visualizzare elenco di tutte le connessioni UDPuso -a
e -u
Opzioni. Ciò include tutti gli stati del socket.
ss -au
6. Elenca tutte le connessioni UDP in ascolto
Puoi combinare -l
e -u
per visualizzare la connessione UDP per tutti gli stati di ascolto.
ss -lu
7. Elenca i socket Unix
Per elencare tutti i socket Unix, puoi usare il comando ss insieme a -f unix
o -x
.
ss -f unix
8. Elenca i socket grezzi
Per visualizzare tutti i socket Raw, è possibile utilizzare -w
o l’opzione –raw.
ss -w
9. Elenca la connessione di un indirizzo IP
Possiamo utilizzare il comando ss per visualizzare la connessione dell’elenco di una specifica destinazione o indirizzo IP di origine.
Ad esempio, per elencare la connessione dell’indirizzo IP di destinazione:
ss dst 157.240.227.60
Ad esempio, per elencare la connessione dell’indirizzo IP di origine:
ss src 192.168.18.151
10. Elenca le connessioni socket IPv4 e IPv6
Se si desidera visualizzare l’elenco delle connessioni socket IPv4, utilizzare l’opzione -4 e -6 per visualizzare l’elenco delle connessioni socket IPv6.
Per visualizzare l’elenco delle connessioni IPv4:
ss -4
Per visualizzare l’elenco delle connessioni socket IPv6:
ss -6
Per elencare tutte le connessioni TCP IPv4, puoi utilizzare il seguente esempio.
ss -at4
11. Identificazione dei processi
Potete trovare processi presa uso -p
opzione insieme al comando ss. Per identificare il processo, avrai bisogno dell’autorizzazione sudo.
sudo ss -t -p
12. Elenca le connessioni senza risoluzione del nome host
Per risolvere l’indirizzo numerico/le porte utilizzare l’opzione -r (risolvere). Invece –n
l’opzione non tenta di risolvere i nomi dei servizi.
Qui nell’esempio puoi vedere la differenza tra i due:
$ ss -tn
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 0 74.208.235.196:22 48.192.234.17:60216
$ ss -tr
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 64 li82-186.members.linode.com:ssh n47-172-231-17.sun4.vic.optusnet.com.au:60317
$
13. Filtra per connessione
Il comando ss consente il filtraggio avanzato dei risultati e la ricerca di porte o stati TCP specifici.
Filtra utilizzando gli stati TCP
Per filtrare la connessione TCP con l’ascolto dello stato, digitare:
ss -t state listening
Puoi anche usare grep comando per filtrare in modo convenzionale. Qui ti mostro tutte le connessioni TCP nello stato di ascolto:
ss -at | grep LISTEN
Per visualizzare le connessioni alla porta ssh stabilite:
ss -tr state established '( dport = :22 or sport = :22 )'
Filtra per numero di porta
Filtra per uno specifico numero di porta di destinazione o nome di porta:
ss <options> dst :<port number or name>
Ad esempio, utilizza un nome di porta:
ss dst :https
mere Opzioni di comando
Come accennato in precedenza nel documento, il comando ss può richiedere alcuni parametri opzionali per ottenere informazioni di rete specifiche. Di seguito è riportato l’elenco di tutte le opzioni e la relativa descrizione:
scelta | Descrizione |
---|---|
– h | Mostra un elenco di tutte le opzioni. |
v | Mostra informazioni sulla versione. |
– n | I nomi dei servizi non vengono risolti. |
-r | I nomi host vengono risolti |
-UN | Mostra tutte le prese |
esso | Mostra tutte le prese di ascolto |
-un | Visualizza informazioni sul timer |
– è | visualizza informazioni dettagliate sulla presa |
– m | mostra l’utilizzo della memoria del socket |
– p | mostra il processo usando socket |
loro | mostra le informazioni TCP interne |
–typecnfo | visualizzare le informazioni interne della presa typc |
-S | mostra il riepilogo dell’utilizzo del socket |
-b | visualizzare le informazioni sulla presa del filtro bpf |
– È | visualizza continuamente i socket man mano che vengono distrutti |
.com | mostra i contesti di sicurezza del processo SELinux |
.com | mostra il processo SELinux e il contesto di sicurezza del socket |
-N | passare al nome dello spazio dei nomi di rete specificato |
-4 | mostra solo i socket IP versione 4 |
-6 | mostra solo socket IP versione 6 |
-0 | mostra PACKAGE prese |
t | mostra solo i socket TCP |
– M | mostra solo i socket MTCP |
-S | mostra solo i socket SCTP |
-u | mostra solo i socket UDP |
d | mostra solo le prese DCCP |
-w | mostra solo i socket RAW |
-X | mostra solo socket di dominio Unix |
– f | FAMILY display socket di tipo FAMILYFAMILY := {inet|inet6|link|unix|netlink|vsock|tipc|xdp|help} |
K | forzare la chiusura delle prese, visualizzare ciò che era chiuso |
-H | Elimina la riga di intestazione |
-UN | dati socket stampati su un’unica riga |
d | Trasferisci le informazioni non elaborate sui socket TCP in FILE |
– F | leggere le informazioni sul filtro da FILE |
Il comando ss Status Filters
Fornisce un metodo per costruire qualsiasi insieme di stati corrispondenti. La sua sintassi è costituita dalle parole chiave state ed exclude in questo ordine, seguite dall’identificatore di stato.
Gli identificatori disponibili set, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack, listen e close sono tutti stati TCP comuni. La tabella seguente mostra tutti questi stati:
Filtro di stato | Descrizione |
---|---|
tutto | per tutti gli stati |
connesso | tutti gli stati tranne ascolto e chiuso |
sincronizzare | tutti gli stati connessi tranne syn-sent |
benna | stati, che vengono mantenuti come miniplug, cioè time-wait e syn-recv |
grande | opposto con secchio |
Conclusione
L’utilità di comando ss è un successore più leggero e veloce del primitivo comando netstat. Fornisce opzioni di filtraggio avanzate per le statistiche di rete e socket. Pertanto, è uno strumento indispensabile per i casi d’uso di risoluzione dei problemi di rete.
Puoi seguire pagina manuale dell’ordine ss per maggiori dettagli.