Come usare il comando ss in Linux

Contenuti

Una finestra di terminale su un sistema portatile Linux.

il ss Il comando è un sostituto moderno del classico. netstat. Puoi usarlo su Linux per ottenere statistiche sulle tue connessioni di rete. Ecco come lavorare con questo pratico strumento.

El comando ss versus netstat

Un sostituto per l'obsoleto netstat comando, ss ti dà informazioni dettagliate su come il tuo computer comunica con altri computer, reti e servizi.

ss mostra le statistiche di Protocollo di controllo della trasmissione (TCP), Protocollo del datagramma utente (UDP), Unix (interprocesso)e spine grezze. Battiscopa grezzi operare nel livello OSI di rete, il che significa che le intestazioni TCP e UDP devono essere gestite dal software applicativo, non dal livello di trasporto. Protocollo messaggi di controllo Internet (ICMP) e il fischio utility entrambi usano socket raw.

Usando ss

Non devi installare ss, in quanto fa già parte di una distribuzione Linux aggiornata. tuttavia, la tua partenza può essere molto lunga; abbiamo ottenuto risultati che contengono più di 630 Linee. I risultati sono anche molto ampi.

A causa di ciò, abbiamo incluso rappresentazioni testuali dei risultati che abbiamo ottenuto, perché non starebbero in uno screenshot. Li abbiamo tagliati per essere più gestibili.

Elenco delle connessioni di rete

Usando ss nessuna opzione della riga di comando elenca i socket che non sono in ascolto. Vale a dire, elenca i socket che non sono in uno stato di ascolto.

Per vedere questo, scrivi quanto segue:

ss

Netid State Recv-Q Send-Q Indirizzo locale:Indirizzo peer della porta: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 spina. Nel nostro esempio, abbiamo "u_str", un flusso Unix, un "udp" e "icmp6", una versione socket ICMP 6 IP. Puoi trovare altre descrizioni di Tipi di socket Linux nelle pagine man di Linux.
  • Stato: Stato in cui si trova il socket.
  • Recv-Q: Il numero di pacchetti ricevuti.
  • Invia-Q: Il numero di pacchi inviati.
  • Indirizzo locale: Puerto: L'indirizzo e la porta locali (o valori equivalenti per socket Unix).
  • Gestione tra pari: Puerto: L'indirizzo remoto e la porta (o valori equivalenti per socket Unix).

Per prese UDP, la spina “Stato” di solito è vuoto. Per socket TCP, può essere uno dei seguenti:

  • ASCOLTA: Solo lato server. Socket è in attesa di una richiesta di connessione.
  • NON INVIO: Solo dal lato del cliente. Questo socket ha effettuato una richiesta di connessione ed è in attesa di vedere se viene accettata.
  • SYN-RICEVUTO: Solo lato server. Questo socket è in attesa di una conferma di connessione dopo aver accettato una richiesta di connessione.
  • SISTEMATO: Server e client. È stata stabilita una connessione funzionante tra il server e il client, consentendo il trasferimento dei dati tra i due.
  • FIN-ATTENDERE-1: Server e client. Questo connettore è in attesa di una richiesta di terminazione della connessione dal connettore remoto, o un riconoscimento di una richiesta di terminazione della connessione precedentemente inviata da questo connettore.
  • FIN-ATTENDERE-2: Server e client. Questo connettore è in attesa di una richiesta di terminazione della connessione dal connettore remoto.
  • CHIUDERE-ATTENDERE: Server e client. Questo connettore è in attesa di una richiesta di terminazione della connessione dall'utente locale.
  • CHIUSURA: Server e client. Questo connettore è in attesa di un riconoscimento della richiesta di terminazione della connessione dal connettore remoto.
  • ULTIMO RICONOSCIMENTO: Server e client. Questo connettore è in attesa di un riconoscimento della richiesta di terminazione della connessione che hai inviato al connettore remoto.
  • TEMPO DI ATTESA: Server e client. Questo connettore ha inviato un avviso di ricevimento al connettore remoto per informarlo che ha ricevuto la richiesta di terminazione del connettore remoto. Ora stai aspettando di assicurarti che l'avviso di ricevimento sia stato ricevuto.
  • CHIUSO: Nessuna connessione, In questo modo il socket viene terminato.

Elenco delle spine di ascolto

Per visualizzare gli scatti di ascolto, aggiungeremo il -l (Ascolto) opzione, Così:

ss -l

Netid State Recv-Q Send-Q Indirizzo locale:Indirizzo peer della porta:Port Process 
nl    UNCONN 0      0                             rtnl:NetworkManager/535                * 
nl UNCONN 0      0                             rtnl:evolution-addre/2987              * 
...
u_str ASCOLTA 0      4096          /run/systemd/privato 13349                            * 0 
u_seq ASCOLTA 0      4096             /run/udev/controllo 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

Tutte queste spine sono scollegate e in ascolto. Il “rtnl” significa routing dei collegamenti di rete, utilizzato per trasferire informazioni tra i processi del kernel e dello spazio utente.

Elenco di tutte le spine

Per elencare tutte le spine, puoi usare il -a (Tutto quanto) opzione:

ss -a

Netid State Recv-Q Send-Q Indirizzo locale:Indirizzo peer della porta:Port    Process 
nl    UNCONN 0      0                  rtnl:NetworkManager/535               * 
nl UNCONN 0      0                  rtnl:evolution-addre/2987 * 
...
u_str ASCOLTA 0      100       pubblico/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 tutte le spine, indipendentemente dallo stato.

Elenco dei socket TCP

È inoltre possibile applicare un filtro in modo che vengano visualizzati solo i socket corrispondenti. Useremo il -t (TCP), Verranno quindi elencati solo i socket TCP:

ss -a -t

Elenco dei socket UDP

il -u (UDP) esegue lo stesso tipo di azione di filtraggio. Questa volta, vedremo solo socket UDP:

ss -to -u

Stato Recv-Q Send-Q Indirizzo locale:Indirizzo peer della porta: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%esso: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 visualizzare solo i socket Unix, può includere il -x (Unix), come mostrato di seguito:

ss -a -x

Netid State Recv-Q Send-Q Indirizzo locale:Indirizzo peer della porta: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 tappi grezzi

Il filtro per i tappi grezzi è il -w opzione (Crudo):

ss -a -w

Elenco delle versioni delle spine IP 4

Socket che utilizzano il protocollo TCP / Versione IP 4 può essere enumerato utilizzando il comando -4 (IPV4 ·) opzione:

ss -a -4

Elenco delle versioni delle spine IP 6

È possibile attivare il filtro versione corrispondente 6 di IP con il -6 (IPV6), Così:

ss -a -6

Elenco delle prese per stato

Puoi elencare le prese in base allo stato in cui si trovano con il state opzione. Funziona con gli stati impostati, in ascolto o chiuso. Useremo anche l'opzione di risoluzione (-r), che tenta di risolvere gli indirizzi di rete in nomi e le porte in protocolli.

Il seguente comando 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 dell'ospite, ubuntu20-04, è stato risolto e viene visualizzato “ssh” invece di 22 per la connessione SSH sulla seconda riga.

Possiamo ripetere questo per cercare prese nello stato di ascolto:

ss -t -r stato ascolto

Indirizzo locale Recv-Q Send-Q:Indirizzo peer della porta:Processo di porta 
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 dei socket per protocollo

È possibile enumerare i socket utilizzando un particolare protocollo con il comando dport e sport opzioni, rappresentare le porte di origine e di destinazione, rispettivamente.

Scriviamo quanto segue per elencare i socket che utilizzano il protocollo HTTPS in un established Connessione (annotare lo spazio dopo la parentesi di apertura e prima della chiusura):

ss -a stato stabilito '( dport = :https o sport = :https )'

Possiamo usare il nome del protocollo o la porta normalmente associata a quel protocollo. La porta predefinita per Copertura sicura (SSH) è il porto? 22.

Useremo il nome del protocollo in un comando e poi lo ripeteremo usando 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 il dst (destino), possiamo elencare le connessioni a un particolare indirizzo IP di destinazione.

Scriviamo quanto segue:

ss -a dst 192.168.4.25

Identificazione del processo

Per vedere quali processi utilizzano i socket, È possibile utilizzare l'opzione processo (-p), come mostrato di seguito (Si noti che è necessario utilizzare sudo):

sudo ss -t -p

Stato Recv-Q Send-Q Indirizzo locale:Indirizzo peer della porta:Port  Process 
ESTAB 0      0       192.168.4.28:57650  54.218.19.119:utenti https:(("Firefox",pid=3378,fd=151)) 
ESTAB · 0      0       192.168.4.28:ssh     192.168.4.25:43946 Gli utenti:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))

Questo ci mostra che le due connessioni stabilite nei socket tcp vengono utilizzate dal demone SSH e da Firefox.

Un degno successore

il ss Il comando fornisce le stesse informazioni fornite in precedenza da netstat, ma in modo più semplice e accessibile. Puoi vedere il pagina man per ulteriori opzioni e suggerimenti.

impostaTimeout(funzione(){
!funzione(F,B,e,v,n,T,S)
{Se(f.fbq)Restituzione;n=f.fbq=funzione(){n.callMethod?
n.callMethod.apply(n,argomenti):n.queue.push(argomenti)};
Se(!f._fbq)f._fbq = n;n.push=n;n.loaded=!0;n.version='2.0′;
n.coda=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, documento,'copione',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('dentro', '335401813750447');
fbq('traccia', 'Visualizzazione della pagina');
},3000);

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.