Mise en place d'un DNS Perso sur Synology

[TUTO] DNS Server
Préambule Lobjectif de ce tutoriel est de vous aider à mettre en place votre propre serveur DNS en interne (dans votre réseau local). Pour ce qui est de l’intérêt de disposer dun serveur DNS en interne, voici quelques exemples : cest plus fiable : vous nêtes plus dépendant de la (non) fiabilité d...

Pour l'exemple, j'ai indiqué des valeurs fictives, il faudra donc les remplacer chez vous :

  • fenrir.tuto : à remplacer par votre nom de domaine
  • 192.168.0.2 : à remplacer par l'adresse IP privée de votre nas
  • 192.0.2.3 : à remplacer par votre adresse IP publique (à ne pas confondre avec 192.168.x.y)
  • www.fenrir.tuto : c'est un enregistrement d'exemple, vous pouvez en créer autant que nécessaire
  • ns.registrar.externe : c'est le nom d'un serveur DNS qui fera office de serveur secondaire
  • 1.2.3.4 : adresse IP d'un serveur qui fera office de serveur secondaire

nb : les exemples sont en IPv4, mais le fonctionnement en IPv6 reste identique (il faut juste changer les adresses et remplacer les A par des AAAA).

Ce tuto comporte 3 parties, par ordre croissant de difficulté :

  • Cache DNS local : tout le monde devrait pouvoir y arriver en quelques cliques
  • Zone DNS locale : cette partie devrait être abordable pour la plupart des utilisateurs
  • Zone DNS publique : on change totalement d’échelle de difficulté ici, le principe est simple, mais la mise en œuvre peut être complexe

Il n'y a aucune raison technique qui nécessite de faire la dernière partie, elle est là pour illustrer un peu plus le fonctionnement d'une architecture DNS, mais elle n'est en aucun cas nécessaire.

Certains points ne seront pas abordés ou détaillés, mais il peut être utile, voir nécessaire de les mettre en œuvre, en particulier les zones de type "esclave" et inverses.

Vous trouverez aussi pas mal d'informations complémentaires dans les commentaires, en particulier un retour très complet de @Mic13710 :  --> cliquez ici <--

######################################################################################

Pré requis

Savoir faire des requêtes DNS, ça peut paraitre bateau dit comme ça, mais ce n'est pas aussi simple qu'un ping. Vous pouvez utiliser la commande "nslookup", elle est présente par défaut sur la plupart des systèmes (y compris les Synology). Je ne vais pas vous faire une doc, mais les 3 commandes importantes sont :

  • demander les informations de zone : nslookup -querytype=SOA fenrir.tuto 192.168.0.2
  • demander la liste des serveurs de zone : nslookup -querytype=NS fenrir.tuto 192.168.0.2
  • demander la valeur d'un enregistrement : nslookup www.fenrir.tuto 192.168.0.2

Pour utiliser votre NAS comme serveur DNS, pour devrez modifier la configuration DNS de vos clients, le plus simple reste de le faire avec votre serveur DHCP, si vous utilisez une "box", ça ne sera surement pas possible, dans ce cas, utilisez le serveur DHCP du NAS (il est intégré par défaut dans tous les Synology depuis DSM 6.0 ou sous forme de paquet dans les versions précédentes).

Si vous souhaitez héberger la résolution de votre domaine du point de vu d'Internet (donc être SOA et/ou NS), vous devez avoir une adresse IP fixe et disposer d'un second serveur DNS ailleurs.

######################################################################################

Cache DNS local

Un cache DNS est un serveur DNS qui garde en mémoire les précédentes résolutions qu'il a du faire afin d'y répondre plus vite lors de nouvelles demandes. L'autre intérêt de disposer de son propre cache local et de s'affranchir des pannes et autres filtrages des serveurs DNS de votre opérateur Internet. Ce cache joue alors le rôle de "résolveur".

C'est très rapide à mettre en place et ça consomme très peu de ressources, donc faites-le !

Commencez par installer et lancer le paquet DNS Server.

Puis allez dans :

01.png

Et configurez les options comme suit :

02.png

nb : j'utilise les DNS de FDN comme "redirecteurs", car ils sont fiables et respectent votre vie privée (contrairement à ceux d'OpenDNS par exemple), mais vous êtes libre d'utiliser les serveurs de votre choix, voir aucun, votre serveur se chargera alors de l’ensemble des résolutions (ce n'est pas toujours très efficace).

Il est primordial de cocher la case "Limiter le service IP source" et de bien configurer son contenu. Si vous ne le faites pas, tout le monde pourra utiliser votre serveur DNS pour résoudre n'importe quel enregistrement, votre NAS en souffrira et sera peut-être utilisé pour des attaques vers d'autres cibles.

Dans la "Liste d'IP source", mettez ces adresses :

03.png

Maintenant il faut tester que ce serveur fonctionne correctement, le plus simple reste de lui poser une question : nslookup nas-forum.com 192.168.0.2

Vous devriez obtenir une adresse IP (au moment de la rédaction de ce tuto, c'est 5.196.244.24).

  • Si vous n'obtenez pas de réponse ("timeout" ou encore "No response from server") c'est que vous n'arrivez pas à contacter le serveur DNS, dans ce cas il faut vérifier qu'il est bien lancé, que c'est la bonne IP, que le firewall autorise bien le trafic ...)
  • Si vous obtenez une réponse du type "Query refused" c'est qu'il y a bien un serveur DNS en face, mais qu'il refuse votre question, donc soit vous lui parlez mal, soit il n'est pas autorisé à vous répondre (cf "Liste d'IP source" juste au dessus)

Si le serveur vous répond correctement, vous en avez terminé pour le cache DNS et vous disposez maintenant d'un résolveur DNS local utilisable par tous vos clients (y compris ceux en VPN).

N'oubliez pas de modifier votre serveur DHCP pour qu'il renseigne vos clients sur l'adresse de votre serveur DNS.

######################################################################################

Zone DNS locale

Une zone DNS est un fichier dans lequel sont inscrits les enregistrements DNS d'un domaine. Un des avantages d'une zone locale c'est qu'elle n'a pas besoin d'exister sur Internet. Un usage courant de ce type de zone est de s'en servir pour donner des noms à ses équipements, plus simple facile à retenir que des adresses IP.

Vous pouvez par exemple créer une zone "maison", elle sera fonctionnelle dans votre réseau pour faire nas.maison, routeur.maison, ... Vous pouvez aussi créer un domaine enfant du premier (par exemple cam.maison qui contiendrait vos caméras IP, comme salon.cam.maison) et qui sera soumis à d'autres restrictions.

  • Néanmoins, je vous déconseille fortement d'utiliser un nom de domaine que vous ne possédez pas car ça risque de créer des problèmes de sécurité.
  • Préférez l'usage d'un domaine que vous possédez, si vous n'en avez pas ça ne coute que quelques euros par an (on en trouve à 1€/an), même si vous n'avez pas prévu de vous en servir sur Internet.

nb : il ne faut jamais utiliser le suffixe ".local", même en interne

Si vous ne souhaitez pas acheter un nom de domaine, vous pouvez utiliser sans risques les noms suivants : .test, .example, .invalid et .localhost

Pour la suite, j'ai utilisé le gTLD .tuto car il n'est pas enregistré au moment de la rédaction de cet article, mais rien ne dit qu'il ne le sera pas quand vous lirez ces lignes.

Allez dans :

04.png

Puis "Créez" => "Zone master" :

05.png

Et configurez-la comme suit :

06.png

Pour la "Liste d'IP source", mettez ceci :

03.png

Puis sélectionnez votre zone et faites "Modifier" => "Enregistrement de ressource" :

08.png

Enfin, créez une (ou plusieurs) ressource(s) du type CNAME :

09.png

Par exemple :

10.png

Vous devriez obtenir ça :

11.png

Le nom www.fenrir.tuto renverra l'adresse de ns.fenrir.tuto, donc l'adresse IP privée de votre nas.

Voici un exemple plus complet :

34.png

Il se lit comme suit :

  1. fenrir.tuto de type NS : cet enregistrement indique que le serveur de nom (NS) pour le domaine "fenrir.tuto" est ns.fenrir.tuto
  • ici j'ai gardé le nom créé par Synology, ns.fenrir.tuto, mais si vous souhaitez que votre NS s’appelle ratatouille.fenrir.tuto, aucun soucis (il faudra juste modifier le type A correspondant)
  1. nas.fenrir.tuto : il s'agit d'un "alias" qui renvoi la même chose que ns.fenrir.tuto
  • c'est plus parlant que ns pour un nas
  1. wordpress.fenrir.tuto : un autre alias
  • pour l'utiliser avec WebStation (vhost) ou avec un reverse proxy
  1. tv.fenrir.tuto : j'ai donné un nom à la tv
  • on se demande bien pourquoi faire ?
  1. mail.fenrir.tuto : adresse du serveur de messagerie pour vos utilisateurs
  • c'est un type A (pas un alias) car c'est important pour les enregistrements MX
  1. ns.fenrir.tuto : l'adresse du serveur DNS (l'enregistrement de la première ligne)
  • il doit toujours s'agir d'un type A
  1. fenrir.tuto : il indique l'adresse du serveur de messagerie pour les autres serveurs de messagerie
  • un MX doit pointer sur un type A

Vous pouvez voir que j'ai indiqué plusieurs enregistrements avec le même nom mais un type différent ou encore plusieurs noms différents qui pointent sur la même IP, c'est parfaitement valable et ne pose aucun problème si vous restez cohérents. J'aurai aussi pu mettre des IP publique pour "nommer" des ressources externes (par exemple donner un nom à un autre nas hébergé je ne sais où). Notez aussi que les TTL ne sont pas tous les mêmes.

nb : avant d'aller plus loin, faites des tests avec "nslookup" pour vérifier que tout fonctionne correctement.

C'est terminé pour cette zone, mais nous allons lui associer une vue pour plus de sécurité et de contrôle.

######################################################################################

Vue DNS locale

Pour simplifier, considérez qu'une vue DNS est un mécanisme permettent de donner des réponses différentes en fonction de l'adresse des clients. Ça revient à peu près à disposer de plusieurs serveurs DNS au même endroit, mais avec des données et des droits différents.

Nous allons créer une vue pour nos clients locaux (ou vpn), ce n'est pas une obligation, mais ça simplifiera les choses pour la suite tout en ajoutant un peu de sécurité.

Allez dans :

12.png

Puis "Créer" :

13.png

Ici on va limiter cette vue aux seuls clients locaux (ou vpn).

14.png

Enfin, on sélectionne les zones qui seront dans cette vue :

15.png

nb : encore une fois, il faut tester que tout fonctionne avant de continuer.

Voilà, vous avez maintenant un serveur DNS local pleinement fonctionnel pour les rôles de cache, de résolveur et de serveur de zone.

Mais vous pouvez faire pleins d'autres choses, tout dépend de votre niveau de connaissances et de compétences comme par exemple du filtrage de contenu indésirable (pub, facebook, malware, ...), du MitM, un annuaire, ...

nb : vous pouvez aussi créer une vue dédiée à vos clients VPN afin qu'ils puissent atteindre votre nas via son adresse en 10.x (cf tuto vpn) simplement en entrant un nom DNS, il faudra juste bien penser à le limiter aux adresses VPN (en 10.x).