DNS

From wiki
Jump to: navigation, search

Le Domain Name System (ou DNS, système de noms de domaine) est un service permettant de traduire un nom de domaine en informations de plusieurs types qui y sont associées, notamment en adresses IP de la machine portant ce nom.

/!\ A ne pas confondre un serveur DNS dite "Résolveur" et "d'autorité ! /!\

Contents

Résolveur

Un résolveur va permettre de trouver une identité via un nom. C'est lui qui ira chercher les informations sur les différents serveurs d'autorités.

Bind9

Instalation

apt-get update
apt-get install bind9 dnsutils

Configuration

Il faut mieux garder la configuration par défaut.

cd /etc/bind
mkdir old
cp  named.conf named.conf.default-zones named.conf.local named.conf.options old/

Éditons le fichier "named.conf.options" :

options {
       directory "/var/cache/bind";
       auth-nxdomain no;    # conform to RFC1035
// Accepte l IPV6
//      listen-on-v6 { any; };
// Ecoute seulement en localhost
       listen-on {127.0.0.1; };
//      listen-on { any; };
       allow-query { any; };
       dnssec-enable yes;
       dnssec-validation yes;
};

Restart le service bind9 pour prendre en compte les modifications :

/etc/init.d/bind9 restart

Sécurité

Si vous dropez par défaut toutes vos chaines iptables. Il faut ajouter les règles suivantes :

iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 53 -j ACCEPT

Tester en localhost

dig @127.0.0.1 orange.fr

On devrait voir ceci :

; <<>> DiG 9.9.5-9-Debian <<>> @127.0.0.1 orange.fr
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25356
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 5
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;orange.fr. IN A
;; ANSWER SECTION:
orange.fr. 3600 IN A 193.252.148.60
orange.fr. 3600 IN A 81.52.142.217
;; AUTHORITY SECTION:
orange.fr. 172800 IN NS ns2.orange.fr.
orange.fr. 172800 IN NS ns1.orange.fr.
orange.fr. 172800 IN NS ns3.orange.fr.
orange.fr. 172800 IN NS ns4.orange.fr.
;; ADDITIONAL SECTION:
ns1.orange.fr. 172800 IN A 80.10.201.224
ns2.orange.fr. 172800 IN A 80.10.202.224
ns3.orange.fr. 172800 IN A 80.10.200.224
ns4.orange.fr. 172800 IN A 80.10.203.224
;; Query time: 91 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun May 10 15:39:03 CEST 2015
;; MSG SIZE  rcvd: 206

Ce résultat démontre que votre résolveur en localhost fonctionne très bien ! Il est dangereux de l'ouvrir en public.

Finalisation

Maintenant qu'on sait que le résolveur en localhost fonctionne très bien, il faut l'intégrer à notre Debian. Pour cela, il suffit juste de modifier le fichier "resolv.conf" dans "/etc" :

vi /etc/resolv.conf

Et de mettre en servername :

servername 127.0.0.1 

OpenVPN

Configuration

Si vous avez suivi le tuto d'OpenVPN et souhaitez utiliser votre serveur faisant VPN comme résolveur c'est faisable et en toute sécurité ! Sachant que vous utilisez l'adressage 10.8.0.1/24 seulement pour vous et cette adresse est accessible seulement au personne ayant réussi à s'identifier vous pouvez mettre votre passerelle VPN (10.8.0.1) comme résolveur.

Pour cela, vous devez modifier "listen-on" dans le fichier conf "named.conf.options" par l'adresse IP de votre tunnel:

Tout d'abord, vérifier l'adresse IP :

ifconfig

Pour mon exemple c'est 10.8.0.1 :

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
         inet addr:10.8.0.1

Modifiez le fichier adéquate maintenant :

vi /etc/bind/named.conf.options
...
       listen-on {127.0.0.1; 10.8.0.1; };
...

Redémarrer une nouvelle fois le service bind9

/etc/init.d/bind9 restart

Vérifions : /!\ Avec votre cache DNS n'hésitez pas à tester avec un autre site /!\ Il se peut qui vous affiche un bon résultat mais sans que celui-ci fonctionne réellement /!\

dig @10.8.0.1 orange.fr

On devrait voir ceci :

; <<>> DiG 9.9.5-9-Debian <<>> @10.8.0.1 orange.fr
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25356
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 5
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;orange.fr. IN A
;; ANSWER SECTION:
orange.fr. 3600 IN A 193.252.148.60
orange.fr. 3600 IN A 81.52.142.217
;; AUTHORITY SECTION:
orange.fr. 172800 IN NS ns2.orange.fr.
orange.fr. 172800 IN NS ns1.orange.fr.
orange.fr. 172800 IN NS ns3.orange.fr.
orange.fr. 172800 IN NS ns4.orange.fr.
;; ADDITIONAL SECTION:
ns1.orange.fr. 172800 IN A 80.10.201.224
ns2.orange.fr. 172800 IN A 80.10.202.224
ns3.orange.fr. 172800 IN A 80.10.200.224
ns4.orange.fr. 172800 IN A 80.10.203.224
;; Query time: 91 msec
;; SERVER: 10.8.0.1#53(10.8.0.1)
;; WHEN: Sun May 10 15:39:03 CEST 2015
;; MSG SIZE  rcvd: 206

Il faut modifier une valeur dans le fichier d'OpenVPN pour mettre ce nouveau résolveur serveur.conf, soit

push "dhcp-option DNS 10.8.0.1"

IPV6

Vous n'arrivez pas à résoudre youtube.fr ? Vous avez ceci qui s'affiche par exemple :

dig @10.8.0.1 youtube.com
; <<>> DiG 9.9.5-9-Debian <<>> @10.8.0.1 youtube.fr
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 63792
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;youtube.fr.                   IN      A
;; Query time: 4828 msec
;; SERVER: 10.8.0.1#53(10.8.0.1)
;; WHEN: Mon May 11 14:26:41 CEST 2015
;; MSG SIZE  rcvd: 40

Vous pouvez voir dans les logs :

tail -f /var/log/syslog
May 11 14:26:03 backup named[5879]: error (network unreachable) resolving 'f.ext.nic.fr/AAAA/IN': 2001:7fe::53#53
May 11 14:26:03 backup named[5879]: error (network unreachable) resolving 'youtube.fr/A/IN': 2001:678:c::1#53
May 11 14:26:03 backup named[5879]: error (network unreachable) resolving 'youtube.fr/A/IN': 2001:500:2e::2#53

Votre serveur essaie de résoudre en Ipv6, mais si vous n'avez pas d'adresse Ipv6 ça ne risque pas de fonctionner !

Pour cela il faut editer le fichier "named.conf.option" et mettre :

...
      listen-on-v6 { none; };
...

Mais également modifier le fichier bind9 :

vi /etc/default/bind9

et ajouter la ligne suivante :

OPTIONS="-4"

Puis restart le service bind9. Attention, cela risque de te montrer la même erreur. Attention à ton cache !

/etc/init.d/bind9 restart

On test de nouveau :

dig @10.8.0.1 youtube.fr
; <<>> DiG 9.9.5-9-Debian <<>> @10.8.0.1 youtube.fr
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59186
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 5
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;youtube.fr.                    IN      A
;; ANSWER SECTION:
youtube.fr.             300     IN      A       216.58.208.206
;; AUTHORITY SECTION:
youtube.fr.             172798  IN      NS      ns1.google.com.
youtube.fr.             172798  IN      NS      ns2.google.com.
youtube.fr.             172798  IN      NS      ns4.google.com.
youtube.fr.             172798  IN      NS      ns3.google.com.
;; ADDITIONAL SECTION:
ns1.google.com.         345600  IN      A       216.239.32.10
ns2.google.com.         345600  IN      A       216.239.34.10
ns3.google.com.         345600  IN      A       216.239.36.10
ns4.google.com.         345600  IN      A       216.239.38.10
;; Query time: 4882 msec
;; SERVER: 10.8.0.1#53(10.8.0.1)
;; WHEN: Mon May 11 14:44:52 CEST 2015
;; MSG SIZE  rcvd: 201

Windows client

Si vous avez un windows comme client VPN, je vous conseille d'ajouter l'adresse IP de votre VPN (ici 10.8.0.1) comme DNS principale et celui de votre choix en secondaire.

Voici la liste de mes choix :
- 10.8.0.1 : @IP de mon VPN
- 192.168.1.1 : @IP de ma box faisant résolveur
- 8.8.8.8 : @IP appartenant à Google
- 4.4.4.4 : @IP appartenant à Google

Explication du fonctionnement :

Si je ne suis pas connecté via mon VPN, mon résolveur privé ne sera pas accessible, donc ma machine ne pourra pas résourdre le nom avec l'adresse 10.8.0.1. Du coup, elle essaiera avec l'adresse IP suivant, soit 192.168.1.1, si celle-ci fonctionne, elle le gardera sinon rebelote avec la suivante.

Cette configuration permet d'être sûr d'utiliser votre résolveur lorsque vous être connecté à votre VPN.

légende

Tester

Une fois cette manipulation faite. Je vous encourage à tester le fonctionnement de votre configuration. Pour cela, rendez-vous à la page suivante : IPLEAK

Si vous avez bien suivi l'ensemble des tutos, l'adresse IP utilisée devrait être celle de votre VPN (@IP public et non l'adresse privé 10.8.0.1 .. bien évidemment). Et la même pour le "DNS address detection".

Le fait d'avoir votre propre résolveur vous immunise contre les boites noires !

Serveur d'autorité

Personal tools
Namespaces

Variants
Actions
Navigation
Système UNIX
Cisco
Tools