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.