# Risoluzione DNS inversa

La risoluzione DNS inversa, meglio nota nella notazione inglese Reverse DNS lookup (rDNS), permette di risalire al nome dell'host connesso ad internet conoscendone l'indirizzo IP.

## Introduzione

Il Domain Name System (DNS) è utilizzato per determinare quale indirizzo IP è associato ad un certo nome di dominio. Allo stesso modo, con la risoluzione DNS inversa, si può risalire al nome di dominio facendo una ricerca in base all'indirizzo IP. La risoluzione DNS inversa – spesso chiamata semplicemente risoluzione inversa – si ottiene inserendo un record "reverse IN-ADDR" nella cosiddetta zona DNS di reverse. Tale record è di tipo PTR.

## Necessità del DNS inverso

La sezione "INSTRUCTIONS" della RFC 1033 e la sezione 2.1 della successiva RFC 1912 specificano che "ciascun host raggiungibile su internet deve avere un nome" e che "ciascuno deve verificare che i propri record PTR e record A siano coerenti".

## Risoluzione DNS inversa in IPv4

La risoluzione DNS inversa, ove si utilizzi un indirizzamento IPv4, utilizza un particolare dominio DNS: in-addr.arpa. Un indirizzo IPv4 è rappresentato, nel dominio in-addr.arpa, da una sequenza di byte in ordine inverso, in rappresentazione decimale con la separazione di un punto fra ciascun numero e terminante con il suffisso .in-addr.arpa.
Ad esempio, il nome di dominio per la risoluzione DNS inversa dell'indirizzo 10.12.13.140 è 140.13.12.10.in-addr.arpa. Il nome dell'host con indirizzo IP 1.2.3.4 può essere ottenuto effettuando una richiesta DNS per un record PTR corrispondente a 4.3.2.1.in-addr.arpa.
Per gli indirizzi multicast è stato creato un apposito dominio utilizzabile in alternativa a in-addr.arpa: mcast.net.

### Risoluzione DNS inversa Classless

Storicamente un indirizzo IP di 32 bit viene diviso in 4 byte così l'indirizzo si scrive in 4 numeri da 0 a 255. In questo modo gli indirizzi vengono raggruppati in gruppi di 256 ed è stato semplice scrivere i record PTR in quanto i punti separano ciascun blocco; applicare i meccanismi di delega a ciascun gruppo è stato, quindi, altrettanto semplice.
La mancanza di indirizzi IP su internet ha però portato a una suddivisione più piccola dato che, normalmente, alle aziende vengono assegnati 8, 16 o 32 indirizzi IP. Per superare questo problema è stata pubblicata l'RFC 2317 che, mediante l'uso di record CNAME, permette di suddividere ulteriormente i gruppi di indirizzi in modo che ciascun utente possa ricevere la delega per gestire i propri indirizzi, anche se ne ha meno di 256.

## Risoluzione DNS inversa in IPv6

La risoluzione DNS inversa in IPv6 utilizza analogamente lo speciale nome di dominio ip6.arpa ed è formato da una sequenza di nibble (gruppi di 4 bit) in ordine inverso, rappresentati da una cifra esadecimale, ciascuna delle quali separata da un punto. Ad esempio, il nome per la risoluzione DNS inversa dell'indirizzo IPv6 4321:0:1:2:3:4:567:89ab è b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.ip6.arpa.

## Record PTR multipli

Sebbene la maggior parte delle voci rDNS hanno un solo record PTR, è perfettamente legittimo avere più record PTR diversi.
In ogni modo, utilizzare più record PTR per lo stesso indirizzo IP generalmente non è consigliato, tranne in caso di specifiche necessità. Per esempio, se un webserver supporta molti virtual host, può esserci un record PTR per ciascun virtual host. Esistono sistemi operativi e dei software di gestione che automaticamente aggiungono un record PTR per ciascun host e, quindi, anche per ciascun virtual host.
L'utilizzo di record PTR multipli può causare due problemi:
* mettere in crisi alcune applicazioni che si aspettano di ricevere un unico record PTR;
* creare pacchetti DNS di risposta più grandi del normale.

## Altri tipi di record diversi da PTR

Anche se non sono molto frequenti se paragonati con i record PTR, esistono altri tipi di record che è possibile inserire nell'albero del dominio della risoluzione DNS inversa. Ad esempio si possono inserire delle chiavi di criptazione per IPsec (RFC 4025), SSH (RFC 4255) e IKE (RFC 4322). Vi sono poi anche record meno standardizzati, come il TXT per inserire commenti e il LOC per identificare la localizzazione di un indirizzo IP.

## Utilizzi

Gli usi più frequenti della risoluzione DNS inversa sono:
* la diagnostica della rete (ping, traceroute, il messaggio "Received:" del record dei messaggi e-mail SMTP, la localizzazione degli utenti collegati ad un server web, ecc.), che è lo scopo principale per cui fu inventata;
* una tecnica di controllo dello spamming, verificando che il nome di dominio nei record PTR corrisponda al nome del server SMTP (la maggior parte dello spam proviene da computer con un rDNS assegnato in automatico e generico, che è spesso rifiutato dai server di posta);
* l'applicazione della tecnica Forward Confirmed reverse DNS (FCrDNS, non molto sicura ma sufficiente per stabilire delle whitelist di controllo contro spammer e phishers, che utilizzano "computer zombie" non appartenenti allo stesso dominio);
* nelle connessioni SSH, rifiutate dai server quando le richieste provengono da client con indirizzo IP il cui record PTR appartiene ad un dominio sconosciuto.