Che cos'è il monitoraggio della rete Linux?

Il monitoraggio delle reti Linux si occupa di controllare, analizzare, segnalare e ottimizzare le reti basate su Linux. Poiché questo sistema operativo è lo standard di fatto sulla maggior parte dei server, delle reti aziendali e dei servizi cloud, il monitoraggio della rete Linux è un'area importante su cui ogni amministratore di rete deve concentrarsi.

Il monitoraggio della rete per Linux non è molto diverso da quello di qualsiasi altro sistema operativo. Le metriche che vengono raccolte sono le stesse, ma i metodi per raccoglierle sono diversi. Come di consueto per i sistemi Linux, sono disponibili gratuitamente un buon numero di applicazioni CLI che consentono di svolgere alcune attività di monitoraggio della rete. Si tratta di strumenti di base, che non possono sostituire un software di monitoraggio di rete completo che supporta un numero infinito di dispositivi, controlli e sistemi operativi.

La maggior parte di questi piccoli strumenti di rete Linux servono come base per molti altri più grandi e sono adatti per controlli rapidi o per l'automazione di compiti di monitoraggio specifici in assenza di una soluzione di monitoraggio più completa. Soprattutto nelle reti di piccole dimensioni o come primo passo nella risoluzione dei problemi, gli strumenti di monitoraggio Linux di base possono fornire le prime informazioni.

Il monitoraggio delle reti Linux è quindi costituito sia da applicazioni di base (per lo più basate su CLI) sia da sistemi di monitoraggio della rete e del traffico di rete più grandi, piuttosto complessi e avanzati.

illustrazione che mostra i loghi dei diversi fornitori in esagoni

Come monitorare il traffico di rete sugli host Linux?

Per monitorare il traffico di rete su Linux, ci sono alcune strade possibili da percorrere. La prima opzione, quella per cui opta la stragrande maggioranza degli amministratori di rete, è uno strumento di monitoraggio della rete pienamente capace. Questi strumenti sono avanzati e offrono una grande scelta di opzioni di monitoraggio e gestione per gli host Linux. La maggior parte di essi include la possibilità di monitorare tutto il traffico su un dispositivo, spesso in tempo reale. Questa è di gran lunga l'opzione più comune e completa.

Un'altra via per il monitoraggio del traffico di rete su Linux è un packet sniffer. Si tratta di una soluzione completa in quanto cattura tutti i pacchetti, ma richiede tempo e risorse e non è l'opzione più facile da usare.

In terzo luogo, una via più semplice, anche se limitata, è l'uso del firewall di Linux per tracciare il traffico su base individuale. iptables offre una serie di parametri -nvL che mostrano le statistiche sul traffico per ogni regola. Insieme a iptables -L per mostrare le regole correnti, è una visione abbastanza sufficiente del traffico di rete su un singolo host.

Strumenti di base per il monitoraggio della rete Linux

Il monitoraggio della rete per Linux significa utilizzare alcuni strumenti di rete disponibili gratuitamente in qualsiasi distribuzione Linux, oppure scegliere una soluzione avanzata per il monitoraggio della rete. Nelle reti aziendali, questa non è una scelta, poiché gli strumenti di base di Linux da soli non sono in grado di soddisfare tutte le esigenze di monitoraggio di una grande infrastruttura di rete. Una soluzione di monitoraggio completa è quindi una necessità, non un'opzione.

Ma le piccole aziende, con pochi computer e topologie di rete abbastanza semplici, possono trovare gli strumenti di monitoraggio di Linux sufficienti, anche se non ottimali. Per ogni amministratore di rete interessato, presentiamo alcuni degli strumenti utili per il monitoraggio della rete in Linux per mostrarne le possibilità.

netstat (ss)

netstat, che nella maggior parte delle distribuzioni recenti è stato sostituito da ss, è uno strumento per visualizzare il contenuto di /proc/net. Si concentra sulla visualizzazione delle informazioni sulla connessione e sulla tabella di routing su tutte le porte locali. Non è utile per monitorare gli host remoti, ma può fornire una rapida idea del traffico locale ed è considerato uno strumento di base per il monitoraggio del traffico di rete in Linux.

Un esempio molto breve del suo output può essere:

Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 127.0.0.1.62132 127.0.0.1.http ESTABLISHED
tcp4 0 0 127.0.0.1.http * LISTEN

tcpdump

tcpdump è uno sniffer, un programma che cattura i pacchetti da un'interfaccia di rete e li interpreta per voi. Comprende tutti i protocolli Internet di base e può essere utilizzato per salvare interi pacchetti da ispezionare in seguito. Pur non essendo raffinato come uno strumento di monitoraggio della rete Linux che fa uso dei protocolli di flusso, fornisce un dump grezzo dei pacchetti su un'interfaccia da analizzare in seguito o in tempo reale.

Wireshark è un'interfaccia grafica per tcpdump.

ping

ping utilizza ICMP per inviare richieste di eco a host remoti per verificare se sono attivi (e predisposti per rispondere). Come strumento di rete per Linux, è del tipo più elementare, in quanto informa solo se un host è raggiungibile e risponde. Tuttavia, per una rapida risoluzione dei problemi, può valere la pena di lanciare un terminale e provare il comando ping per includere ed escludere immediatamente una serie di cause per il problema riscontrato.

Comandi Ping e Traceroute

traceroute / tracepath

traceroute e tracepath sono due strumenti di rete per Linux che mostrano il percorso verso una destinazione e sono quindi utilizzati per risolvere i problemi di routing su Linux. Tecnicamente, traceroute è il più avanzato e utilizza vari protocolli come TCP, UDP e ICMP per trovare il percorso corretto, mentre tracepath implementa solo UDP. traceroute può manipolare i pacchetti, mentre tracepath si ferma all'invio.

Un esempio di esecuzione di traceroute per trovare il percorso verso www.checkmk.com:

# traceroute www.checkmk.com
traceroute to www.checkmk.com (45.133.11.28), 30 hops max, 60 byte packets
 1  kl****** (172.27.224.1)  0.546 ms  0.494 ms  0.661 ms
 2  192.168.0.1 (192.168.0.1)  16.455 ms  6.095 ms  20.363 ms
 3  * * *
 4  89-75-5-97.infra.chello.pl (89.75.5.97)  34.704 ms  26.233 ms  32.822 ms
 5  pl-krk07a-ra1-ae-0-1499.aorta.net (84.116.193.21)  66.906 ms  66.897 ms  41.181 ms
 6  pl-ktw01a-rc1-ae-7-1400.aorta.net (84.116.193.26)  41.173 ms  35.290 ms  35.265 ms
 7  de-fra11b-rc1-ae-24-0.aorta.net (84.116.137.50)  29.571 ms  43.890 ms  32.941 ms
 8  de-fra02a-ri1-ae-48-0.aorta.net (84.116.130.62)  32.934 ms  62.005 ms  60.596 ms
 9  213.46.179.114.aorta.net (213.46.179.114)  42.129 ms  32.907 ms  42.884 ms
10  ae1-0.bbr01.anx82.fra.de.anexia-it.net (144.208.208.145)  55.262 ms  42.881 ms  42.877 ms
11  ae0-0.bbr02.anx82.fra.de.anexia-it.net (144.208.208.147)  42.097 ms  60.530 ms  42.851 ms
12  fra1.mx204.ae3.anexia.as48314.net (144.208.211.213)  41.432 ms  42.822 ms  29.554 ms
13  fra1.cc.as48314.net (194.45.196.22)  43.541 ms  54.044 ms  57.596 ms

dig / nslookup

dig e nslookup sono due semplici strumenti di rete per Linux usati per interrogare le informazioni relative al DNS, come i record DNS di un server, l'indirizzo IP, i server DNS usati per risolvere il suo dominio e altro ancora. Sono abbastanza simili e mostrano solo informazioni leggermente diverse.

Ad esempio, l'output di dig è simile a questo:

# dig www.checkmk.com

; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> www.checkmk.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43707
;; flags: qr rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.checkmk.com.               IN      A

;; ANSWER SECTION:
www.checkmk.com.        0       IN      A       45.133.11.28

;; Query time: 0 msec
;; SERVER: 172.27.224.1#53(172.27.224.1) (UDP)
;; WHEN: Thu Dec 15 10:49:02 CET 2022
;; MSG SIZE  rcvd: 64

ifconfig / iwconfig

Uno strumento con maggiori capacità di gestione è ifconfig. Viene utilizzato in Linux per configurare le interfacce di rete, visualizzarne la configurazione corrente e attivarle o disattivarle a seconda delle necessità. Per le connessioni cablate, ifconfig è quello da utilizzare, mentre iwconfig si usa per configurare le interfacce wireless.

ip

Per quanto riguarda gli strumenti di rete di Linux, ip è probabilmente il coltellino svizzero del gruppo. Mostra e manipola percorsi di routing, dispositivi, politiche e tunnel. Può attivare o disattivare le interfacce, impostarne gli indirizzi IP e il percorso predefinito e molto altro ancora. Come strumento di monitoraggio della rete per Linux, ha una potenza limitata ed è più utile come aiuto per la risoluzione dei problemi.

lsof

lsof non è il primo comando che viene in mente quando si pensa agli strumenti di monitoraggio della rete Linux. Dopo tutto, il suo nome è l'acronimo di "list open files". Come può aiutare gli amministratori che cercano di monitorare le reti?

Perché tutto in Linux, come in Unix, è un file, comprese le connessioni di rete. lsof può essere usato per mostrare l'attività di rete, ad esempio:

lsof -nP -i

Questo mostrerà tutte le connessioni. Se si desidera visualizzare solo le connessioni stabilite, isof può essere eseguito con le seguenti opzioni:

lsof -nP -iTCP -sTCP:ESTABLISHED

lsof è piuttosto limitato a questi compiti o ad altri simili, ma per visualizzare l'attività di rete è un comando abbastanza semplice che può aiutare a risolvere i problemi della rete Linux.

iftop

Mentre il noto top mostra i processi locali di un sistema Linux, iftop fa lo stesso ma per l'attività di rete. Eseguendolo senza argomenti si apre un'interfaccia a riga di comando molto simile al comando top. In questa interfaccia si possono vedere le connessioni attive, i loro indirizzi o domini di origine e di destinazione e la quantità di larghezza di banda utilizzata da ciascuna di esse, con un totale complessivo in basso. iftop è quindi utile per calcolare quanta larghezza di banda viene utilizzata, ad esempio se si dispone di una connessione a consumo e si vuole limitare l'utilizzo della rete.

Ma iftop può anche servire come semplice utility per mostrare l'attività di rete di Linux, indipendentemente dall'interesse per la larghezza di banda effettiva.

Esempio di iftop

iptraf

Versione più ricca di funzionalità di iftop, iptraf ha un'interfaccia simile. Le connessioni attive sono mostrate con i loro indirizzi IP di destinazione, accanto ai numeri e alle dimensioni dei pacchetti. iptraf è anche uno strumento di cattura dei pacchetti e le statistiche in tempo reale dei pacchetti sono mostrate nella parte inferiore del programma. iptraf può anche mostrare un riepilogo delle porte aperte attuali, che è abbastanza utile per risolvere le disfunzioni del firewall o notare le intrusioni. In definitiva, un buon strumento per mostrare l'attività di rete su Linux.

Esempio di iptraf

Perché utilizzare uno strumento avanzato di monitoraggio della rete per Linux?

Dashboard del server Linux in Checkmk

Il monitoraggio della rete per Linux può essere effettuato in pochi istanti con gli strumenti di base forniti da Linux. Per una rapida risoluzione dei problemi o per la semplice automazione di alcuni controlli tramite script, questi strumenti sono sufficienti. Inoltre, hanno il vantaggio di essere disponibili praticamente su qualsiasi distribuzione Linux, poiché spesso sono già preinstallati.

Ma il monitoraggio della rete richiede molte più funzioni e un controllo migliore. Per monitorare comodamente il traffico di rete su Linux, ad esempio, è necessario qualcosa di più di un semplice sniffer di pacchetti, come tcpdump. Il monitoraggio del traffico di rete su Linux è un'area piuttosto difficile da coprire con i soli strumenti semplicistici di cui abbiamo parlato in precedenza. Funzionalità come il reporting, gli avvisi e il monitoraggio dei flussi sono impossibili da ottenere con gli strumenti di base. Questa carenza ha portato allo sviluppo di una serie di strumenti di monitoraggio avanzati che vengono utilizzati dalle aziende di molti settori per monitorare la loro infrastruttura basata su Linux.

Gli strumenti avanzati di monitoraggio della rete per Linux esistono per i casi d'uso avanzati. Oltre a fornire un'ampia gamma di funzioni sofisticate, che supportano il monitoraggio tramite protocolli specifici come SNMP, sono dotati di un'interfaccia molto più semplice da usare e, soprattutto, da leggere.

Gli strumenti avanzati sono in grado di monitorare facilmente il traffico, ad esempio tramite il supporto di protocolli basati sul flusso, e di avvisare l'utente ogni volta che un parametro supera o scende al di sotto di una soglia. Questo è qualcosa che si può ottenere solo con un ampio scripting con gli strumenti Linux di base, e anche in questo caso non con la granularità richiesta dalle grandi reti. Inoltre, l'installazione costerebbe molte ore di lavoro. Per la maggior parte delle aziende, questo non è sufficiente per le loro esigenze, quindi un software di monitoraggio della rete adeguato come Checkmk è la soluzione giusta.

Gli unici svantaggi relativi degli strumenti avanzati di monitoraggio della rete per Linux sono la necessità di essere implementati e l'utilizzo di risorse più elevato rispetto agli strumenti CLI più semplici. Il primo è trascurabile, dal momento che la maggior parte di essi viene fornita con il supporto completo per le principali distribuzioni Linux e sono preconfezionati; il secondo vale la pena per la pletora di funzioni offerte, la facilità d'uso e la robustezza che li accompagnano.

Inoltre, non è nemmeno una questione di costi. Checkmk Raw è gratuito. Le edizioni commerciali hanno un costo, ma con il vantaggio dell'assistenza e di una serie più ampia di funzioni e servizi supportati. È possibile provare Checkmk Trial gratuitamente per 30 giorni. Il monitoraggio della rete per Linux non deve essere necessariamente costoso.

FAQ

Qual è un buon monitor di banda per Linux?

Per il monitoraggio della larghezza di banda su Linux, esistono alcuni strumenti specifici. Non necessariamente i più potenti, ma probabilmente i più noti sono NetHogs e IPTraf.

Come è possibile controllare la velocità della rete su Linux?

Ci sono alcuni modi per controllare la velocità della rete su Linux. Senza installare strumenti specifici, il più rapido è usare ethtool as:

sudo ethtool eth0 | grep Speed

Questo però mostrerà solo la velocità nominale. Per la velocità effettiva della rete, uno strumento più preciso è speedtest-cliun'applicazione Python installabile tramite pip con pip install speedtest-cli.

Come è possibile controllare l'utilizzo della rete su Linux?

Lo strumento più semplice per controllare l'utilizzo della rete su Linux è NetHogs. Una volta lanciato, aprirà una console che mostra in tempo reale l'utilizzo della rete di ogni processo sul sistema.


Un'alternativa più completa è IPTraf, con l'opzione "Monitoraggio del traffico IP".