Un guasto su una VPN site-to-site si manifesta in un modo solo — il traffico non passa — ma può nascere in tre strati diversi, e ogni strato scrive altrove. Sapere quale comando accendere, e in quale ordine, è metà del lavoro: un debug scelto male produce righe che non contengono il guasto.

Tre strati, tre famiglie di log

Il VPN daemon vpnd tiene la logica di comunità, routing e link selection; il daemon iked conduce la negoziazione IKE; il modulo kernel VPN cifra, decifra e decide che cosa entra nel tunnel. Tre destinatari distinti di debug.

vpn debug on alza il livello del VPN daemon; vpn debug trunc (o truncon) ruota prima i file e poi accende, così la riproduzione nasce pulita; vpn debug off e vpn debug truncoff spengono. vpn debug timeon aggiunge i timestamp e vpn debug say scrive una stringa nel log, per marcare l’istante in cui si lancia la prova. L’output finisce in $FWDIR/log/vpnd.elg; il daemon IKE scrive invece in $FWDIR/log/iked0.elg e nelle tracce iked0.ikev1trace e iked0.ikev2trace, una coppia per istanza. vpn debug mon accende il monitor dei pacchetti IKE e produce $FWDIR/log/ikemonitor.snoop, che si apre con Wireshark; vpn debug moff lo spegne.

Il comando ike debug governa direttamente iked con le stesse forme: on, trunc, off. La riga indicata come punto di partenza completo è vpn debug trunc ALL=5, che accende insieme iked e cccd; nelle modalità legacy restano vpn debug ikeon e vpn debug ikeoff.

Guardare lo stato prima di accendere il debug

Un debug acceso su un tunnel di cui non si conosce lo stato produce solo volume. Prima si fotografano le Security Association.

vpn tu, o per esteso vpn tunnelutil, apre TunnelUtil: le prime voci del menu elencano le SA IKE e IPsec, in generale o per un peer indicato in notazione decimale puntata; le successive cancellano le SA di un gateway o di un utente, le ultime azzerano tutto. Da riga di comando lo stesso strumento è più rapido. vpn tu list ike e vpn tu list ipsec elencano le Security Association, vpn tu list peer_ike e vpn tu list peer_ipsec le restringono a un peer, vpn tu list tunnels mostra i tunnel e vpn tu list probes le VPN Network Probes. vpn tu tlist dà la tabella per peer con metodo di cifratura, Traffic Selector, stato e contatori: -p filtra per indirizzo del peer, -s ordina per SPI, -c seleziona il tipo di client remoto. vpn tu mstats mostra la distribuzione dei tunnel sulle istanze CoreXL. vpn shell offre gli stessi dati per via gerarchica, con le sezioni show e tunnels; la sezione interface è deprecata su Gaia, dove le VPN Tunnel Interface si gestiscono da Gaia Portal o Gaia Clish.

Cancellare una SA con vpn tu del non è una riparazione: è il modo di forzare una rinegoziazione pulita e di vederla nascere nel debug appena acceso.

Quando il guasto sta sotto il daemon

Se le SA esistono e il traffico comunque non arriva, si scende nel kernel. fw ctl debug -buf 8200 alloca il buffer, poi fw ctl debug -m VPN con il segno più e i flag accende il modulo. I flag sono pochi e ben separati: err per gli errori che non dovrebbero accadere, ike e iked per la negoziazione, ike_trace per l’elaborazione delle SA IKE, sas per chiavi e Security Association, policy per le decisioni sulle connessioni, nat per NAT e manipolazione degli IP di cluster, resolver per le tabelle di link selection e i CRL, tnlmon per il monitoraggio dei tunnel. packet e pcktdmp scendono al singolo pacchetto e vanno usati con parsimonia. Si raccoglie con fw ctl kdebug -T -f -o verso un file e si spegne sempre con fw ctl debug 0; su Scalable Platform si usa il prefisso globale g_fw ctl debug.

L’ultimo livello è il pacchetto. fw monitor -e con un’espressione INSPECT e -o verso un file mostra i quattro punti di ispezione: i pre-inbound, I post-inbound, o pre-outbound, O post-outbound. Un pacchetto che compare in i e non in I è fermato dall’inspection; uno che non compare affatto può essere accelerato, perché i filtri INSPECT non si applicano al traffico accelerato da SecureXL. È il primo falso negativo da escludere in produzione.

Trappole tipiche d’esame

Fermarsi alla fase 1 quando il problema è nella fase 2. È la trappola che il vendore cita per prima. Un IKE SA presente in vpn tu list ike fa credere che la negoziazione sia riuscita, ma il traffico viaggia sotto l’IPsec SA: se vpn tu list ipsec è vuoto, il debug va letto nella Quick Mode, non nella Main Mode.

Non confrontare le proposte dei due peer. Prima di aprire un trace si mettono fianco a fianco le proposte dei due lati — cifratura, hash, gruppo Diffie-Hellman, lifetime. Molte domande descrivono uno scenario in cui il confronto delle proposte basta, e la risposta che accende subito vpn debug è il distrattore.

Confondere un problema di VPN domain con uno di negoziazione IKE. Se le SA si stabiliscono e il traffico di una sola subnet non entra nel tunnel, IKE ha funzionato: il difetto è nella topologia, nel VPN domain o nei Traffic Selector, e nessun livello di debug su iked lo mostrerà.