La résolution DNS inverse, ça vous dit quelque chose ? Elle permet de retrouver un nom de domaine associé à une adresse IP, et c’est un moyen communément utilisé par les serveurs de mail pour montrer patte blanche. En effet le domaine se porte garant des activités de l’adresse IP, et via la base whois on peut directement contacter le responsable.
Introduction
DNS est un système communément utilisé sur internet, et pourtant sa compréhension reste superficielle par l’ensemble des internautes, mais probablement également par une bonne partie de professionnels. A croire que plus un protocole est la base de tout, moins on lui accorde d’importance. Il n’y a qu’à voir le succès très faible que rencontrent DNSSEC le successeur de DNS, et IPv6, le successeur d’IPv4.
Ce que tout le monde sais, c’est que DNS fait la relation entre un nom de domaine demandé par l’utilisateur, et une adresse IP publique pour se connecter au bon serveur. Voyons maintenant comment tester la résolution DNS inverse, c’est à dire demander un nom de domaine associé à une adresse IP.
Tester la résolution DNS inverse
Le champ PTR directement
Par construction, la requête DNS de résolution inverse se compose de l’adresse IP écrite à l’envers (pourquoi pas) et du suffixe in-addr.arpa.
Grâce à l’outil dig, voici que que cela donne en interrogeant le domaine associé à l’adresse IP 8.8.4.4 qui est un résolveur DNS public de Google.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30  | 
						root@ordinateur:~# dig 4.4.8.8.in-addr.arpa PTR ; <<>> DiG 9.9.5-3ubuntu0.7-Ubuntu <<>> 4.4.8.8.in-addr.arpa PTR ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5648 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4 ;; QUESTION SECTION: ;4.4.8.8.in-addr.arpa.        IN    PTR ;; ANSWER SECTION: 4.4.8.8.in-addr.arpa.    86400    IN    PTR    google-public-dns-b.google.com. ;; AUTHORITY SECTION: 4.8.8.in-addr.arpa.    3600    IN    NS    ns4.google.com. 4.8.8.in-addr.arpa.    3600    IN    NS    ns1.google.com. 4.8.8.in-addr.arpa.    3600    IN    NS    ns3.google.com. 4.8.8.in-addr.arpa.    3600    IN    NS    ns2.google.com. ;; ADDITIONAL SECTION: ns1.google.com.        153337    IN    A    216.239.32.10 ns2.google.com.        269603    IN    A    216.239.34.10 ns3.google.com.        269603    IN    A    216.239.36.10 ns4.google.com.        306887    IN    A    216.239.38.10 ;; Query time: 53 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Thu Mar 10 10:15:46 CET 2016 ;; MSG SIZE  rcvd: 218  | 
					
La sortie de l’outil dig est explicite, avec la partie QUESTION SECTION et ANSWER SECTION. Le format de requête est plutôt bien fait car il autorise les administrateurs réseau à définir des règles de résolution DNS par groupes d’adresses IP, comme si chaque portion de l’adresse IP (séparée par des points) était une zone DNS. On peut ainsi envisager un enregistrement DNS sur le serveur qui ressemble à aaa.bbb.ccc.in-addr.arpa. 3600 IN PTR mon.domaine.com .
Requête de résolution inverse
L’utilisation du suffixe in-addr.arpa est licite mais un peu lourde. Pour faciliter l’opération on peut utiliser l’option -x de dig comme suit.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35  | 
						root@ordinateur:~# dig -x 8.8.4.4 ; <<>> DiG 9.9.5-3ubuntu0.7-Ubuntu <<>> -x 8.8.4.4 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21773 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;4.4.8.8.in-addr.arpa.		IN	PTR ;; ANSWER SECTION: 4.4.8.8.in-addr.arpa.	21542	IN	PTR	google-public-dns-b.google.com. ;; AUTHORITY SECTION: .			870	IN	NS	j.root-servers.net. .			870	IN	NS	g.root-servers.net. .			870	IN	NS	m.root-servers.net. .			870	IN	NS	b.root-servers.net. .			870	IN	NS	f.root-servers.net. .			870	IN	NS	i.root-servers.net. .			870	IN	NS	e.root-servers.net. .			870	IN	NS	c.root-servers.net. .			870	IN	NS	k.root-servers.net. .			870	IN	NS	a.root-servers.net. .			870	IN	NS	h.root-servers.net. .			870	IN	NS	d.root-servers.net. .			870	IN	NS	l.root-servers.net. ;; Query time: 2 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Thu Mar 10 10:16:43 CET 2016 ;; MSG SIZE  rcvd: 304  | 
					
La même chose avec nslookup.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  | 
						root@ordinateur:~# nslookup 8.8.4.4 Server:		127.0.1.1 Address:	127.0.1.1#53 Non-authoritative answer: 4.4.8.8.in-addr.arpa	name = google-public-dns-b.google.com. Authoritative answers can be found from: .	nameserver = a.root-servers.net. .	nameserver = l.root-servers.net. .	nameserver = j.root-servers.net. .	nameserver = k.root-servers.net. .	nameserver = f.root-servers.net. .	nameserver = c.root-servers.net. .	nameserver = d.root-servers.net. .	nameserver = h.root-servers.net. .	nameserver = b.root-servers.net. .	nameserver = i.root-servers.net. .	nameserver = m.root-servers.net. .	nameserver = e.root-servers.net. .	nameserver = g.root-servers.net.  | 
					
Configurer la résolution DNS coté serveur
On rentre dans la partie difficile du sujet, configurer ses zones de résolution DNS inverse correctement pour que votre propre serveur DNS se comporte comme décrit plus haut. Pour l’heure je vais me contenter de quelques ressources utiles sur le sujet.