Ritrasmissione DNS e analisi PCAP di timeout: ricerca di risolutori lenti, query perse e risposte interrotte
Come diagnosticare timeout DNS, ritrasmissione, nessuna risposta, SERVFAIL, perdita UDP, fallback TCP, latenza del risolutore e ritardo dell'applicazione con l'acquisizione di pacchetti.
Gli errori DNS spesso si mascherano da errori delle applicazioni. Un browser dice che un sito non può essere raggiunto. Un client API mostra un timeout. Un servizio impiega cinque secondi prima di aprire una connessione. Gli utenti cercano "DNS timeout pcap", "Ritrasmissione DNS Wireshark", "DNS query nessuna risposta", "acquisizione lenta dei pacchetti del risolutore DNS" e "SERVFAIL vs timeout" perché l'errore visibile raramente spiega se la risoluzione dei nomi non è riuscita, il risolutore era lento o la rete ha perso pacchetti.
L'acquisizione di pacchetti può rispondere esattamente a questo se si mantengono intatti la query DNS, la risposta, i tempi, la ritrasmissione e il comportamento di fallback.
La chirurgia PCAP è utile perché le prove DNS sono spesso sepolte all'interno di una traccia di grandi dimensioni. Potrebbe essere necessario isolare un client, un risolutore, un dominio e una finestra temporale preservando i timestamp e gli ID delle richieste.
Che aspetto ha uno scambio DNS sano
Uno scambio DNS UDP di base è breve:
Client -> Resolver: Query A example.com
Resolver -> Client: Response A example.com 93.184.216.34
The important fields are:
- Query name
- Query type
- Transaction ID
- Source and destination port
- Resolver address
- Response code
- Answer records
- Timing between query and response
If the response comes back quickly with NOERROR, DNS probably is not the delay source. If there is no response, delayed response, repeated query, or error response, DNS becomes part of the diagnosis.
DNS timeout vs DNS error
A timeout means the client did not receive a usable response before its resolver logic gave up or retried. A DNS error means the resolver returned a response with an error code such as:
NXDOMAIN: domain does not exist.SERVFAIL: resolver failed to complete resolution.REFUSED: resolver refused the query.FORMERR: format error.
These are different failures. A timeout points to packet loss, resolver unavailability, firewall, routing, or delayed response. SERVFAIL points to resolver recursion, DNSSEC, upstream server, or authoritative lookup problems. NXDOMAIN may be a real name problem or a search-domain/configuration issue.
Retransmission and retry behavior
DNS over UDP does not have transport-level retransmission like TCP. If a client does not receive a response, it sends another query. The retry may go to the same resolver or a different resolver.
A trace may show:
0.000 Client -> 8.8.8.8 Query example.com
1.000 Client -> 8.8.8.8 Query example.com
2.000 Client -> 1.1.1.1 Query example.com
2.030 1.1.1.1 -> Client Response example.com
Ciò suggerisce che il primo risolutore non ha risposto in tempo, mentre il secondo lo ha fatto. Il ritardo dell'applicazione include il tempo trascorso in attesa del primo risolutore.
Query persa e risposta persa
Con un punto di acquisizione, potresti non sapere se la query o la risposta sono andate perse. La posizione di acquisizione è importante.
Se acquisisci sul client e vedi la query partire ma non arriva alcuna risposta, la risposta potrebbe essere stata persa, bloccata, ritardata o mai generata. Se acquisisci sul risolutore e non vedi mai la query, la query è andata persa prima di raggiungere il risolutore o è stata bloccata sul percorso. Se il risolutore vede e risponde alla query ma il client non vede mai la risposta, la perdita è sul percorso di ritorno.
Due catture sono più forti:
- Acquisizione lato client
- Acquisizione lato risolutore
Insieme possono dimostrare se il pacchetto è scomparso prima del risolutore, dopo il risolutore o all'interno dell'host client.
Frammentazione UDP e risposte DNS di grandi dimensioni
Le risposte DNS possono diventare grandi a causa di DNSSEC, di molti record, record TXT o dimensioni del buffer EDNS0. Le risposte UDP di grandi dimensioni potrebbero frammentarsi. La frammentazione può non riuscire attraverso firewall o dispositivi NAT.
I sintomi includono:
- Le piccole query DNS funzionano.
- Le risposte di grandi dimensioni scadono.
- I domini DNSSEC falliscono più spesso.
- Il fallback TCP ha esito positivo.
- Le risposte con bit di troncamento portano a riprovare su TCP.
Se un risolutore imposta il bit troncato, il client può riprovare su TCP. Questo è normale. Se il fallback TCP è bloccato, l'utente potrebbe riscontrare timeout DNS o errori intermittenti.
DNS su TCP, DoT e DoH
Il DNS classico utilizza la porta UDP e TCP 53. Gli ambienti moderni possono utilizzare DNS su TLS o DNS su HTTPS. Una normale acquisizione di pacchetti potrebbe non esporre i nomi di dominio per il DNS crittografato, ma può comunque mostrare tempistiche, connessioni, tentativi e raggiungibilità del server.
Quando si analizza il ritardo dell'applicazione, determinare innanzitutto quale percorso del risolutore viene utilizzato. Un browser può utilizzare DoH mentre gli strumenti di sistema utilizzano il risolutore del sistema operativo. Ciò può spiegare perché "nslookup" funziona ma il browser non funziona o perché un'applicazione è lenta mentre un'altra no.
Cerca domini e query ripetute
Gli ambienti aziendali e VPN spesso aggiungono domini di ricerca. Una semplice ricerca per "servizio" può produrre query come:
service.corp.example.com
service.office.example.com
service
If several of those time out before the final name works, the user experiences delay. The final response may be correct, but the lookup path was slow.
A good DNS trace preserves the full query sequence, not only the final successful answer.
Checklist for DNS PCAP analysis
Use this process:
- Identify the client, resolver, and queried name.
- Filter by DNS transaction ID and query name.
- Measure query-to-response latency.
- Check response code:
NOERROR,NXDOMAIN,SERVFAIL,REFUSED, or no response. - Look for repeated queries and resolver failover.
- Check whether UDP responses are large or fragmented.
- Look for TCP fallback after truncation.
- Compare system resolver behavior with application-specific DoH or DoT.
- Preserve timestamps before trimming the capture.
- Correlate DNS delay with application connection timing.
Final diagnosis
DNS timeout analysis is not just "the domain failed." The packet evidence can show whether the resolver was slow, the query was lost, the response was lost, the response was an error, fallback happened, search domains added delay, or encrypted DNS used a different path.
PCAP Surgery supports the investigation by letting you isolate the DNS evidence while preserving the timing and packet sequence that explain the real user-visible delay.
<!-- pcap-localized-evidence-foundation-v1:start -->Risposta basata sui pacchetti per «Ritrasmissione DNS e analisi PCAP di timeout: ricerca di risolutori lenti, query perse e risposte interrotte»
La risposta diretta è che un label dell’analizzatore o un messaggio applicativo non determina la causa. Parti da punto di cattura e direzione, poi dimostra l’ultimo confine riuscito e il primo fallito. In «Ritrasmissione DNS e analisi PCAP di timeout: ricerca di risolutori lenti, query perse e risposte interrotte» un altro revisore deve trovare il packet, il gap o l’intervallo che sostiene ogni frase e sapere quale prova potrebbe smentirla.
Posizionare la cattura sul percorso
Registra client, server e ogni proxy, load balancer, NAT o firewall. Indica interface, luogo, clock, sistema e direzioni visibili. Una cattura presso il client prova ciò che arriva lì, non che il server non abbia inviato. Presso il server prova l’uscita in quel punto, non l’intero percorso. Prima di confrontare due punti correggi clock offset e allinea flow tuple, TCP sequence o transaction ID.
Controlla snap length, dropped packets, offload, capture filter, ring buffer e orario iniziale. Un checksum errato sul host può essere offload artifact. Un segmento grande può derivare da GRO/TSO e non esistere così sul cavo. Un packet assente da un file limitato non è network loss finché non dimostri che il punto doveva vederlo.
Leggere i confini in ordine
| Confine | Prova di riuscita | Prova di guasto utile |
|---|---|---|
| Link e IP | direzione, address e route coerenti | ARP/NDP assente, ICMP, MTU, asimmetria |
| TCP | SYN, SYN-ACK, ACK e sequence | retransmission, RST, zero window, timeout |
| TLS | ClientHello, ServerHello e progresso | alert o confine SNI/ALPN/certificate |
| Applicazione | request completo e response associata | status, gap o chiusura precoce |
| Utente | response time o failure window | stall legato a un confine |
Fermati al primo confine senza successo. Se TCP non si completa, non iniziare da HTTP. Se request arriva al proxy ma non all’upstream, il limite è nel proxy o nel percorso. Se arriva all’upstream senza response entro timeout, ACK e avanzamento dei bytes separano application delay da network loss.
Separare osservazione e ipotesi
Un’osservazione è localizzabile: “Client ha inviato fino a una sequence, sender ha ripetuto un segmento tre volte e qui non compare ACK avanzato”. L’ipotesi è “il percorso ha perso il segmento”. Un’altra cattura o dropped records possono smentirla. Per ogni ipotesi scrivi prova favorevole e prova contraria.
Retransmission e duplicate ACK non assegnano colpa. Reordering, loss, capture artifact e receiver delay generano label simili. Collega direzione, sequence, ACK, SACK, RTT, window e tempo applicativo. Per DNS/DHCP collega transaction ID, address e tentativi; per HTTP request e response; per TLS la direzione del handshake.
Preservare l’originale
Calcola checksum e conserva l’originale immutato. Filtra, taglia e oscura una working copy. Registra input, trasformazione, ora, packet count prima/dopo, checksum risultante e motivo. Dopo timestamp rewrite o rimozione di packets la copia non sostiene più alcune conclusioni temporali o di sequenza.
Sostituisci address e identificatori in modo stabile per seguire lo stesso endpoint. Non eliminare port, directions o lengths necessari. Separa la mappa segreta. Consulta limiti di cattura ed export e il flusso PCAP Surgery.
QA prima della pubblicazione
Titolo e risposta riguardano lo stesso flow? Ogni durata nomina clock e punti? Il primo confine fallito è chiaro? Esiste un’alternativa? Si cambia una variabile? L’originale è conservato? Limita la conclusione: “Questa cattura prova il comportamento presso il client nell’intervallo, non l’esecuzione interna del server”.
Il termine Semrush validato PCAP analyzer appartiene solo alla pagina prodotto. Questo articolo resta sulla domanda tecnica e non inventa volume o KD.
<!-- pcap-localized-evidence-foundation-v1:end --><!-- pcap-localized-flow-verdicts-v1:start -->Registro del flow e test di esclusione
Per «Ritrasmissione DNS e analisi PCAP di timeout: ricerca di risolutori lenti, query perse e risposte interrotte» crea una riga per direzione: endpoints con alias, primo/ultimo packet, bytes inviati e confermati, reset, retransmissions, requests e responses. Non unire connessioni per lo stesso hostname; source port, inizio e initial sequence separano sessions. Con NAT o proxy documenta la relazione senza aspettare sequence o ports uguali.
Calcolare TCP invece di contare label
Segui next expected sequence del receiver. Il payload avanza sequence della sua lunghezza; SYN e FIN consumano un numero. Duplicate ACK stabile dopo segmenti superiori sostiene loss o reordering. SACK blocks mostrano ranges arrivati, non il punto di perdita. Retransmission visibile al sender ma non al receiver richiede test del tratto; originale assente al sender capture richiede controllo di capture loss o offload.
Separa fast retransmit dopo duplicate ACKs da RTO dopo silenzio. Confronta RTT precedente, advertised window, zero-window probes, burst e dimensione. Non ogni label è perdita: overlap, spurious retransmission o cattura iniziata a metà cambiano la classificazione.
Misurare il tempo con confini
Usa request first byte, request complete, response first byte e response complete. TTFB non equivale a tempo server senza punto e trasporto. Retransmission prima di response può aggiungere network delay; request confermata e lungo silenzio sostiene application wait. Scrivi valore, unità, clock e punto.
Con due punti allinea un packet distintivo nelle due direzioni, stima offset e usa intervals interni. Se clock è incerto, fornisci un range. Confronta finestre buone e guaste di durata e carico simili.
Domande di protocollo
DNS: ID, nome e tipo coincidono, retry cambia resolver o source port? DHCP: Discover, Offer, Request e ACK sono dello stesso client identifier? TLS: ultimo handshake message per direzione e alert visibile o cifrato? HTTP: chi genera 4xx/5xx e c’è upstream flow? TCP close: chi invia FIN/RST e quali bytes restano senza ACK?
Test decisivo e consegna
Scegli due ipotesi e un test che le separa. Cattura all’altro estremo separa network loss e measurement loss; disattivare offload in test verifica artifact; request identico su path fisso verifica intermittency; log upstream contro packet boundary verifica application delay. Scrivi prima gli esiti attesi.
Accetta quando un reviewer ripete il calcolo dai metadata, trova lo stesso confine e capisce i limiti. Consegna checksum original/derived, filter, packet ranges e passi trim/redaction. Chiudi con owner, azione e condizione misurabile.
<!-- pcap-localized-flow-verdicts-v1:end -->