Il secondo mestiere della diagnosi non riguarda il singolo flusso ma l’apparato: la rete «va piano», la GUI risponde a scatti, qualche sessione cade. Qui non serve uno sniffer, serve capire quale risorsa è finita e cosa il FortiGate ha fatto per proteggersi. Perché quando la memoria si esaurisce non si limita a rallentare: cambia le regole del gioco sull’ispezione, in un modo che devi conoscere prima.

Leggere le prime due righe di get system performance status

Quasi tutta la diagnosi delle risorse comincia qui, e le prime due righe valgono da sole il comando:

get system performance status
CPU states: 1% user 98% system 0% nice 1% idle 0% iowait 0% irq 0% softirq
Memory: 4050332k total, 527148k used (13%), 3381312k free (83%), 141872k freeable (3%)

La ripartizione della CPU dice dove va il tempo. Un system quasi al 100% con idle a zero significa che il tempo se ne va nei processi di sistema: l’apparato è sovraccarico, e il sospetto tipico è un processo di scansione che sta ispezionando molto più traffico del necessario. Il rimedio non è diagnostico ma progettuale: ridurre ciò che viene scansionato, bloccando protocolli non desiderati o restringendo le politiche che attivano l’ispezione. All’estremo opposto, 100% idle su un apparato che «non funziona» non è una buona notizia: è la firma di un FortiGate che ha smesso di lavorare.

Le righe successive spiegano il perché: uso medio della rete, numero medio di sessioni, tasso di creazione sessioni, virus intercettati, attacchi IPS bloccati. Un uso di rete alto indica semplicemente molto traffico. Un tasso di creazione sessioni molto basso o a zero indica invece un proxy sovraccarico che non riesce più a fare il suo lavoro. Ma è un numero che si interpreta per differenza: serve avere registrato quello normale. Ed è un contatore globale, quindi con più VDOM carichi il valore per singolo VDOM sarà più basso di quanto ti aspetteresti.

Per identificare il colpevole si scende di un gradino, con l’elenco dei processi e del loro consumo di CPU:

get system performance top

La memoria e le tre soglie

La memoria è condivisa da tutti i processi: se alcuni la occupano tutta, gli altri non girano più, e il risultato sono servizi bloccati, connessioni perse o rifiutate. La regola pratica è non superare il 90%. Il dettaglio si legge con:

diagnose hardware sysinfo memory

Sopra una certa quota FortiOS non aspetta il collasso: entra in conserve mode, cioè riduce funzionalità per liberare memoria senza abbassare la guardia sulla sicurezza. Le soglie sono tre e sono configurabili, espresse in percentuale della RAM totale:

config system global
    set memory-use-threshold-red 88
    set memory-use-threshold-green 82
    set memory-use-threshold-extreme 95
end

La logica è un’isteresi, e va letta bene perché è una domanda d’esame classica: si entra in conserve mode superando la soglia rossa (88% di default) e se ne esce solo scendendo sotto la soglia verde (82%), non tornando appena sotto l’88. La soglia estrema (95%) è un’altra cosa ancora: da lì in poi le nuove sessioni vengono scartate.

Cosa cambia davvero nel traffico

Questa è la parte che distingue chi ha letto la teoria da chi ha gestito un apparato in conserve mode. Il comportamento dipende dalla modalità di ispezione. Per l’ispezione proxy decide av-failopen:

config system global
    set av-failopen {pass | off | one-shot}
end

Con pass, che è il valore predefinito, il traffico salta il proxy antivirus e prosegue: saltano con lui tutti i profili di sicurezza che dipendono da quel proxy, mentre gli altri continuano a funzionare. È la scelta «accesso prima della sicurezza». Con off il FortiGate blocca tutto il traffico che passerebbe dal proxy antivirus: una politica con solo IPS continua a lavorare, ma una con IPS e antivirus insieme viene bloccata perché l’antivirus richiede il proxy. È la scelta opposta, e va presa consapevolmente. one-shot è la trappola: continua a bypassare il proxy anche dopo l’uscita dal conserve mode, finché non cambi l’impostazione o riavvii l’apparato — quindi un apparato che ha avuto un episodio notturno può restare scoperto per giorni senza che nessuno se ne accorga.

Per l’ispezione flow il parametro è un altro:

config ips global
    set fail-open {enable | disable}
end

Disabilitato (predefinito) il motore IPS scarta tutte le nuove sessioni che richiederebbero ispezione flow; abilitato, lascia passare i pacchetti senza scansionarli.

Accorgersene e documentarlo

In conserve mode FortiOS genera log dedicati, invia trap SNMP e mostra un banner in GUI. Lo stato corrente si legge con un comando che riporta anche le soglie calcolate in megabyte:

diagnose hardware sysinfo conserve

Se la GUI è ingestibile proprio per la memoria, i log si leggono comunque dalla CLI con execute log filter category 1 seguito da execute log display, e gli eventi di ingresso in conserve mode restano anche nel crash log, leggibile con diagnose debug crashlog read. Sono le due strade da percorrere a caldo, quando l’interfaccia grafica non collabora.

Un ultimo aggancio: in un cluster il consumo di memoria può diventare un criterio di failover. Con memory-based-failover abilitato, un membro che resta sopra la soglia per l’intero periodo di monitoraggio cede il ruolo di primario, e se la soglia resta a 0 viene usata quella del conserve mode. Trasforma un problema di risorse in una commutazione controllata invece che in un degrado silenzioso.