Strumenti Di Rete

Protocollo Dns

Come filtrare i pacchetti del protocollo DNS

Wireshark | Protocollo Dns

Introduzione: Scoprire il DNS con Wireshark

Il Domain Name System (DNS) è un protocollo fondamentale che funge da "rubrica" di Internet. Ogni volta che digiti un indirizzo web come www.google.com nel tuo browser, il DNS entra in azione per tradurre quel nome di dominio facile da ricordare in un indirizzo IP numerico (es. 142.251.209.46) che i computer possono usare per comunicare. Senza il DNS, la navigazione web come la conosciamo non esisterebbe.

Comprendere il funzionamento del DNS è cruciale per chiunque si occupi di reti, dalla risoluzione dei problemi di connettività alla configurazione di server. Wireshark, un potente analizzatore di protocolli di rete, ci offre la possibilità di "vedere" il traffico DNS in tempo reale, decodificando ogni singolo bit delle richieste e risposte.

Questa guida ti accompagnerà passo dopo passo nell'utilizzo di Wireshark per catturare e analizzare le interazioni DNS. Impareremo a identificare una richiesta e una risposta DNS, a esaminarne i campi principali e a capire come il tuo computer trova l'indirizzo IP di un sito web. Preparati a immergerti nel cuore della risoluzione dei nomi!

Passo 1: Preparare la cattura in Wireshark

  1. Apri Wireshark: Avvia l'applicazione.
  2. Scegli l'interfaccia di rete: Nel pannello centrale, vedrai una lista delle tue interfacce di rete (es. Wi-Fi, Ethernet). Clicca due volte sull'interfaccia attiva per iniziare la cattura.
  3. Applica un filtro di cattura: Prima di avviare l'acquisizione, è fondamentale inserire un filtro di cattura per visualizzare solo il traffico DNS. Questo eviterà di catturare una quantità enorme di dati non necessari. Nella barra dei filtri in alto (quella che dice "Enter a capture filter..."), scrivi:
    port 53
    Premi Invio. Il filtro port 53 indica a Wireshark di catturare solo i pacchetti diretti o provenienti dalla porta 53, che è la porta standard usata dal DNS.

Passo 2: Generare il traffico DNS

Prompt dei comandi generare traffico dns

Mentre Wireshark è in ascolto, devi "forzare" il tuo computer a fare una richiesta DNS. Il modo più semplice è usare un comando per risolvere un nome di dominio.

  1. Avvia la cattura: Clicca sul pulsante con l'icona della pinna di squalo (o "Start capturing packets").
  2. Apri il tuo terminale/prompt dei comandi:
    • Su Windows: Cerca "cmd" o "prompt dei comandi".
    • Su macOS o Linux: Apri "Terminale".
  3. Digita il comando: Esegui uno dei seguenti comandi per risolvere il nome di dominio google.com:
    • Su Windows: nslookup google.com
    • Su macOS/Linux: dig google.com (o nslookup google.com)
    Premi Invio.

Passo 3: Interrompere la cattura e analizzare i pacchetti

  1. Torna su Wireshark: Vedrai che sono stati catturati pochi pacchetti. Clicca sul pulsante rosso con il quadrato per fermare la cattura.
  2. Applicare un filtro di visualizzazione: Se non hai usato un filtro di cattura nel Passo 1, la tua lista di pacchetti sarà molto lunga. In questo caso, puoi usare un filtro di visualizzazione per mostrare solo i pacchetti DNS. Nella barra dei filtri superiore (quella vuota), scrivi dns e premi Invio.

Ora dovresti vedere solo due pacchetti (o al massimo una manciata). Uno è la richiesta DNS e l'altro è la risposta.

Passo 4: Selezioniamo solo i pacchetti che hanno fatto richiesta di google.com

Wireshark protocollo dns google richieste query
  • Per visualizzare tutte le richieste e risposte DNS che contengono "google.com" nel nome di dominio:
    dns contains "google.com"
  • Per visualizzare solo le richieste DNS (query) per "google.com":
    dns.qry.name == "google.com"
  • Per visualizzare solo le risposte DNS per "google.com":
    dns.resp.name == "google.com"
  • Per filtrare per il tipo di record (es. solo record A per IPv4 di google.com):
    dns.qry.name == "google.com" and dns.qry.type == A

Passo 5: Analisi della Richiesta DNS (Query)

Wireshark protocollo dns query

L'immagine mostra i dettagli del "Pacchetto 11", che è una richiesta DNS.

Frame 11: 90 bytes on wire (720 bits), 90 bytes captured (720 bits) on interface \Device\NPF_{55D50777-111D-484E-802D-AF9E7521389F}, ID 0:

Questo è il riepilogo del frame fisico/data-link. Indica la dimensione totale del pacchetto sul cavo (90 byte) e l'interfaccia di rete su cui è stato catturato.

Ethernet II, Src: ChongqingFug_37:85:6d (c8:94:02:37:85:6d), Dst: zte_9c:b:b0 (w0:19:54:9c:be:b0):

Questo è il livello Data Link (Layer 2). Mostra gli indirizzi MAC di origine (Src) e destinazione (Dst). In questo caso, il sorgente è il tuo dispositivo e la destinazione è il server DNS (probabilmente il tuo router).

Internet Protocol Version 6, Src: fe80::d6af:1e83:6a9d:1e00, Dst: fe80::1:

Questo è il livello di Rete (Layer 3), e in questo caso utilizza IPv6.

  • Src (Source): fe80::d6af:1e83:6a9d:1e00 è l'indirizzo IPv6 del tuo computer (la macchina che ha effettuato la richiesta).
  • Dst (Destination): fe80::1 è l'indirizzo IPv6 del server DNS a cui è stata inviata la query (probabilmente il tuo router o un server DNS locale).
User Datagram Protocol (UDP), Src Port: 49753, Dst Port: 53:

Questo è il livello di Trasporto (Layer 4), che utilizza il protocollo UDP.

  • Src Port: 49753: Questa è la porta effimera (temporanea) utilizzata dal tuo computer per inviare la richiesta.
  • Dst Port: 53: Questa è la porta standard del server DNS a cui viene inviata la richiesta.
Domain Name System (query):

Questa è la sezione più importante, il livello applicativo (Layer 7) specifico del DNS.

  • Transaction ID: 0x0004: Un identificatore che aiuta ad abbinare questa richiesta alla sua futura risposta.
  • Flags: 0x0100 Standard query: Indica che si tratta di una query DNS standard.
  • Questions: 1: Indica che la query contiene una singola domanda.
  • Answer RRs: 0, Authority RRs: 0, Additional RRs: 0: Questi campi sono a zero in una richiesta, poiché non ci sono ancora risposte o informazioni di autorità.
  • Queries: Questa sezione contiene la domanda vera e propria:
    • google.com: type A, class IN: Questa è la query. Il tuo computer sta chiedendo al server DNS l'indirizzo di tipo A (cioè un indirizzo IPv4) per il dominio google.com, nella classe IN (Internet).
    • Name: google.com: Il nome di dominio specifico che si sta cercando di risolvere.
    • Type: A (1) (Host Address), Class: IN (0x0001): Confermato il tipo di record A (indirizzo host) e la classe Internet.
  • [Response In: 12]: Questo è un riferimento di Wireshark che indica che la risposta a questa richiesta è presente nel pacchetto numero 12 della cattura.
In sintesi, questo pacchetto è la richiesta che il tuo computer ha inviato al server DNS, chiedendo di risolvere il nome di dominio google.com nel suo indirizzo IPv4 corrispondente.

Passo 6: Analisi della Risposta DNS (Response)

Wireshark protocollo dns answer

L'immagine mostra i dettagli del pacchetto di risposta, identificato come "Pacchetto 12". Si tratta di una risposta DNS (indicato da "Domain Name System (response)"), che è la risposta a una precedente richiesta DNS che puoi trovare nel pacchetto 11 come puoi verificare dall'ultima riga Request In: 11 nel pannello dettagli.

Analizziamo Domain Name System (response) nel pannello dei dettagli. Le informazioni qui saranno diverse:

Ecco una spiegazione dettagliata delle sezioni chiave visibili:

Frame 12: 106 bytes on wire (848 bits), 106 bytes captured (848 bits) on interface \Device\NPF_{55D50777-111D-484E-802D-AF9E7521389F}, ID 0:

Questo è il riepilogo del frame fisico/data-link. Indica la dimensione totale del pacchetto sul cavo (106 byte) e l'interfaccia di rete su cui è stato catturato.

Ethernet II, Src: zte_9c:b:b0 (w0:19:54:9c:be:b0), Dst: ChongqingFug_37:85:6d (c8:94:02:37:85:6d):

Questo è il livello Data Link (Layer 2). Mostra gli indirizzi MAC di origine (Src) e destinazione (Dst). In questo caso, il sorgente è un dispositivo ZTE e la destinazione è un dispositivo "ChongqingFug".

Internet Protocol Version 6, Src: fe80::1, Dst: fe80::d6af:1e83:6a9d:1e00:

Questo è il livello di Rete (Layer 3), e in questo caso utilizza IPv6.

  • Src (Source): fe80::1 è l'indirizzo IPv6 del server DNS che ha risposto alla tua query (molto probabilmente il tuo router o un server DNS locale).
  • Dst (Destination): fe80::d6af:1e83:6a9d:1e00 è l'indirizzo IPv6 del tuo computer (la macchina che ha effettuato la richiesta).
User Datagram Protocol (UDP), Src Port: 53, Dst Port: 49753:

Questo è il livello di Trasporto (Layer 4), che utilizza il protocollo UDP.

  • Src Port: 53: Questa è la conferma che il pacchetto proviene da un server DNS, poiché la porta 53 è la porta standard per il servizio DNS.
  • Dst Port: 49753: Questa è la porta effimera (temporanea) utilizzata dal tuo computer per inviare la richiesta originale. La risposta viene inviata indietro a questa stessa porta.
Domain Name System (response):

Questa è la sezione più importante, il livello applicativo (Layer 7) specifico del DNS.

  • Transaction ID: 0x0004: Un identificatore che collega questa risposta alla richiesta DNS corrispondente. Serve a Wireshark (e al sistema operativo) per abbinare correttamente richieste e risposte.
  • Flags: 0x8180 Standard query response, No error: Indica che si tratta di una risposta a una query standard e che non ci sono stati errori nella risoluzione del nome.
  • Questions: 1: la risposta si riferisce a una singola domanda (query).
  • Answer RRs: 1: la risposta contiene 1 record di risposta (Answer Resource Record).
  • Authority RRs: 0: non ci sono record di autorità inclusi in questa risposta (spesso presenti nelle risposte autoritative).
  • Additional RRs: 0: non ci sono record aggiuntivi (come ad esempio record per server DNS alternativi).
  • Queries: ripete la query originale: google.com: type A, class IN (stai chiedendo l'indirizzo IPv4 per google.com).
  • Answers: questa è la sezione che contiene la risoluzione vera e propria:
    • google.com: type A, class IN, addr 142.251.209.46: Questo è il record di risposta. Indica che per il dominio google.com, il tipo di record è A (indirizzo IPv4), la classe è IN (Internet), e l'indirizzo (addr) risolto è 142.251.209.46.
    • Time to live: 261 (4 minutes, 21 seconds): Indica per quanto tempo (in secondi) il tuo sistema può memorizzare nella cache questa risoluzione DNS prima di doverne richiedere una nuova. In questo caso, 261 secondi, ovvero 4 minuti e 21 secondi.
    • [Request In: 11]: Questo è un riferimento di Wireshark che indica che la richiesta corrispondente a questa risposta era il pacchetto numero 11 (nell'intera cattura).
In sintesi, questo pacchetto è la conferma che il tuo computer ha chiesto al server DNS quale fosse l'indirizzo IPv4 di google.com e il server ha risposto che è 142.251.209.46.

Conclusione: Il DNS in azione e le sue implicazioni

Congratulazioni! Hai appena completato un'analisi pratica del protocollo DNS utilizzando Wireshark. Hai visto in prima persona come il tuo computer invia una richiesta per un nome di dominio e come il server DNS risponde fornendo l'indirizzo IP corrispondente. Questo ciclo di richiesta-risposta è la base di ogni comunicazione su Internet basata sui nomi.

L'analisi DNS con Wireshark non è solo un esercizio accademico. È una competenza preziosa per:

  • Risoluzione dei problemi: Se un sito web non si carica, un problema DNS potrebbe esserne la causa. Analizzare le query e le risposte può rivelare server DNS non raggiungibili, risposte errate o problemi di caching.
  • Sicurezza di rete: Monitorare il traffico DNS può aiutare a identificare tentativi di phishing, malware che comunicano con server malevoli o configurazioni DNS compromesse.
  • Ottimizzazione delle prestazioni: Comprendere il TTL (Time To Live) dei record DNS ti aiuta a capire come la cache DNS influenzi la velocità di risoluzione e, di conseguenza, il tempo di caricamento delle pagine.

Esercizio: ora mettiti alla prova con Wireshark!

Quali sono gli indirizzi IP di alcuni siti web popolari?

  • gmail.com
  • libero.it
  • corriere.it
  • amazon.it