Monter un server esclave Dns

-------------------------------------------------

[01/12/2018] - ~5mins - #dns #knot #adminsys #autohebergement

-------------------------------------------------

Si vous avez un nom de domaine à vous (et j'espère que si vous êtes sensibilisé à votre identité numérique vous en avez un) il y a deux possibilités :

- soit vous laissez la tâche d'héberger votre zone à un prestataire (souvent celui qui vous a vendu le nom de domaine)

- soit vous l'hébergez vous-même.

Bon, personnellement *je pense qu'il vaut mieux que vous l'hébergiez vous-même*.

Soit dit en passant, je vous ai déjà concocté un joli guide concernant DNS [1] plutôt complet.

J'ai rien contre le fait de laisser un prestataire le faire.

Je n'ai, à vraie dire, jamais vraiment entendu d'histoire de magouille/mauvaise gestion/d'usurpation ou autre saloperie à ce propos.

C'est vraiment le B.A.BA de l'auto-hébergement.

Et qui dit auto-hébergement, dit ?

Panne.

Merci de suivre !

Bref, *un jour où l'autre votre serveur se viandera* et vous serez marron.

Par chance, comme la plupart des anciens protocoles de l'Internet, *DNS a été pensé pour être vraiment résilient*.

Il est très facile d'avoir plusieurs serveurs à même de répondre pour votre zone.

C'est une architecture Maître-Esclave où vous allez avoir votre serveur Maître qui connaît les informations concernant votre nom de domaine et qui les enverra aux serveurs esclaves qui recopieront ces informations et les communiqueront aux clients.

Il arrive d'ailleurs parfois que le Master ne soit pas joignable depuis Internet mais uniquement par un réseau privé et que donc seul les serveurs esclaves soit utilisés par les clients.

Vous pouvez avoir autant de serveur esclave que vous le voulez.

Si jamais le maître tombe les serveurs esclaves seront toujours à même de fonctionner et vice versa.

Dans la suite je vais plutôt utiliser le terme zone DNS à la place de domaine.

Allez on met ça en place !

Knot sur le master

On commence par modifier le serveur maître.

Rajouter un remote

Un remote est tout simplement un serveur distant avec lequel on interagira.

Rien de bien méchant :

{{}}

address: 123.321.123.321

{{}}

C'est tout.

Ajouter une ACL

Les ACL sont les régles définissants les droits que vous allez attribuer à une zone.

En gros vous voulez autoriser votre zone à envoyer les modifs vers le serveur esclave.

{{}}

- id: acl_slave

address: 123.321.123.321

action: ["transfer","notify"]

{{}}

Confer la zone

Bon jusqu'à présent vous avez ajouté des options globales à votre configuration Knot.

Maintenant il faut affecter des options sur votre zone.

Soit vous mettez toutes les options dans un template que vous affecterez à vos zones, soit vous mettez les options à chacune de vos zones (le template permet d'appliquer les mêmes réglages à plusieurs zones d'un coup).

{{}}

template:

- id default

acl: [ "acl_localupdate", "acl_slave"]

notify: slave_server

{{}}

Là c'est un extrait du template par défaut où on affecte l'ACL que l'on a créé précédemment.

Et ensuite on indique qu'il faut notifier le remote créé précédemment.

Le notify permet à votre master d'indiquer au slave qu'il doit rafraîchir ses infos car le master vient de modifier la zone.

C'est bon

Ouai c'est tout mais faut penser à reload avec un ptit **knotc reload**.

Knot sur le slave

Et maintenant on configure votre serveur esclave.

Rajouter un remote

Ça ressemble beaucoup à la même chose que tout à l'heure vous allez me dire !

Bha ouai.

{{}}

address: 123.321.123.321

{{}}

Ce coup-ci le remote est obligatoire et n'est pas là juste pour que ce soit clair.

Ajouter une ACL

{{}}

- acl: acl_master

address: 123.321.123.321

action: notify

{{}}

Confer la zone

{{}}

- domain: mon.domaine

master: master_server

acl: acl_master

{{}}

Et on reload !

Le master et le slave sont prêts et maintenant ?

Voilà c'est fait votre zone est maintenant répliquée sur un autre serveur qui peut prendre la main si votre serveur tombe en panne.

Vous pouvez le tester avec l'outil **Dig** pour voir si le serveur esclave répond : **dig votre.domaine @serveur.esclave**

Bon si vous voulez que ça fonctionne il reste deux étapes capitales :

1. *Rajouter un enregistrement* **NS** *dans votre zone pointant vers votre serveur esclave*.

2. *Informer également votre registrar pour que ça soit pris en compte*.

C'est super mais…

Haa non pas d'objection !

J'ai pas les moyens de me payer un autre serveur !

Ha bha il suffit de demander à vos amis geeks.

Héberger une zone pour un pote ça coûte absolument rien.

Et si vous avez pas d'amis bha… demandez-moi !

Ha mais c'est gentil mais j'utilise Bind…

Vous pouvez avoir du *Bind* et du *Knot* et du *NSD* par exemple.

C'est d'ailleurs pas mal d'avoir des implémentations différentes (en cas de bugs, tous les serveurs ne seront pas impactés).

Vous trouverez des tutos pour faire de même avec Bind dans le pire des cas ;-)

Beurk c'est pas secure !

Rhaaa mais si c'est possible !

Juste que j'ai pas envie de vous faire un article fleuve mais la doc existe [2].

Hey mais mon DNSsec est foireux sur le slave !

Ouai.

Et pour l'instant j'ai pas la solution car non il ne faut pas filer sa KSK au slave (on ne peut pas avoir autant confiance envers le slave).

Liens

[1] joli guide concernant DNS ({{}})

[2] la doc existe (https://www.knot-dns.cz/docs/2.7/singlehtml/#slave-zone)

------------------------------------

🏠 Retour à la home

------------------------------------

[01/12/2018] - #dns #knot #adminsys #autohebergement

------------------------------------

[>> Suivant >>] ⏭ Eternal Jukebox

[<< Précédent <<] ⏮ Le HTTP Black Header