Analisi PCAP Keepalive e Idle Timeout PCAP: firewall, NAT, bilanciatori del carico e connessioni di lunga durata
Come analizzare i pacchetti TCP keepalive, il timeout di inattività, la scadenza della sessione NAT, le interruzioni della connessione del firewall, i ripristini del bilanciatore del carico, le connessioni API di lunga durata e le prove di acquisizione dei pacchetti.
Le connessioni TCP di lunga durata possono interrompersi dopo minuti o ore di inattività. Le sessioni SSH si bloccano. ripristino delle connessioni al database. Le connessioni WebSocket si interrompono. I flussi interleaved RTSP TCP si interrompono dopo i periodi di inattività. I client API vedono un tubo rotto. Gli utenti cercano "TCP keepalive pcap", "timeout di inattività del firewall", "timeout della sessione NAT", "reset connessione inattiva del bilanciatore del carico" e "interruzione della connessione TCP di lunga durata" perché l'errore dell'applicazione spesso appare molto tempo dopo la decisione di timeout reale.
La chirurgia PCAP è utile perché le indagini sui timeout di inattività dipendono dai tempi. Sono necessari l'ultimo pacchetto di dati reale, eventuali sonde keepalive TCP, ACK, pacchetti FIN/RST e l'esatta durata di inattività.
Cos'è il protocollo TCP keepalive
Il keepalive TCP è un meccanismo opzionale che invia piccole sonde su una connessione inattiva per verificare se il peer è ancora raggiungibile. Può anche mantenere attivi lo stato NAT e firewall se i sondaggi si verificano con una frequenza maggiore rispetto al timeout del middlebox.
Ma i default sono spesso troppo lenti per le infrastrutture moderne. Un firewall potrebbe far scadere lo stato di inattività dopo 60 secondi mentre il keepalive TCP del sistema operativo potrebbe avviarsi molto più tardi.
Sintomi di timeout di inattività
I sintomi comuni includono:
- La connessione funziona, quindi si interrompe dopo un periodo di inattività fisso.
- La prima richiesta dopo il ripristino dell'inattività.
- WebSocket si disconnette dopo esattamente 60 secondi.
- Il pool di database presenta connessioni obsolete.
- SSH si blocca tramite NAT.
- Il sistema di bilanciamento del carico invia RST dopo il timeout.
- Il client invia i dati dopo l'inattività e non riceve risposta.
Il tempismo esatto è l’indizio.
FIN vs RST vs caduta silenziosa
I middlebox e gli endpoint possono chiudere le connessioni inattive in diversi modi:
- FIN: chiusura aggraziata.
- RST: chiusura abortiva.
- Drop silenzioso: nessun pacchetto; il traffico successivo viene ignorato.
Se un firewall interrompe silenziosamente lo stato, entrambi gli endpoint potrebbero ritenere che la connessione esista ancora. Il pacchetto di dati successivo attiva la ritrasmissione o il comportamento di ripristino.
Prove da tenere in vita
In una traccia, cerca piccoli pacchetti durante i periodi di inattività. Le sonde keepalive TCP spesso utilizzano numeri di sequenza appena prima del successivo byte atteso. Un analizzatore può etichettarli come keepalive.
Domande:
- Sono stati inviati keepalive?
- Quante volte?
- Il peer li ha ACK?
- Una middlebox è stata reimpostata dopo un keepalive?
- Le indagini sono iniziate troppo tardi?
- La connessione è interrotta prima dell'intervallo di keepalive?
Bilanciatori del carico e proxy
I bilanciatori del carico spesso impongono timeout di inattività. Se il client prevede che una connessione duri 30 minuti ma il sistema di bilanciamento del carico chiude le connessioni inattive dopo 60 secondi, l'applicazione deve inviare heartbeat o riconnettersi.
L'evidenza del pacchetto può mostrare chi ha inviato la chiusura o la reimpostazione e quanto tempo è trascorso dall'ultimo dato.
Checklist
Utilizza questo flusso di lavoro:
- Identificare la connessione TCP di lunga durata.
- Contrassegnare l'ultimo pacchetto di dati dell'applicazione.
- Misurare il tempo di inattività prima del guasto.
- Cerca le sonde keepalive TCP.
- Controlla se le sonde hanno ricevuto l'ACK.
- Identificare il mittente FIN o RST.
- Se non viene visualizzata alcuna chiusura, cercare drop silenziosi e ritrasmissioni.
- Confronta il timeout con le impostazioni del firewall/bilanciatore del carico.
- Conserva il tempismo durante il taglio.
- Correlare con gli heartbeat dell'applicazione.
Diagnosi finale
Gli errori di inattività del TCP sono problemi di temporizzazione. L'evidenza del pacchetto può distinguere la chiusura dell'endpoint, la scadenza dello stato firewall/NAT, il timeout del bilanciatore del carico, il keepalive mancante, il keepalive troppo lento e la caduta silenziosa.
PCAP Surgery aiuta a preservare l'intervallo di inattività e a chiudere/reimpostare le prove in modo che gli errori di connessione di lunga durata possano essere spiegati con precisione.