Outils pour utilisateurs

Outils du site


Panneau latéral

dns

DNS et PowerDNS

C'est quoi un DNS ?

Le Dynamic Name System est un dispositif permettant de retrouver l'adresse IP (178.167.45.32) d'un serveur en connaissant son nom (server1.example.com).

Il existe les serveur de type Authoritative, c'est à dire qu'ils ont l'autorité pour répondre sur un domaine défini, et les serveurs Recursive dont le rôle est de retransmettre à d'autres serveurs les requêtes.

Authoritave-server Recursive-server

Et PowerDNS dans tout ça ?

PowerDNS est une suite logicielle comprenant entre autres :

  • pdns-server qui est un serveur authoritative
  • pdns-recursor qui est un serveur recursif
  • pdnsutil un utilitaire en cli pour configurer pdns-server

pdns-server et pdns-recursor peuvent fonctionner en même temps sur une même machine pour servir un domaine privé et adresser le grand internet.

Config mise en place

Nous allons mettre en place une config pour un lan, avec des ressources locales (non-accessibles depuis internet), et en donnant un accès internet. Un peu comme expliqué ici.

scenario

Installation et configuration Authoritative server : ''pdns-server''

Dispo dans les paquets debian apt install pdns-server pdns-backend-sqlite3.

On édite le fichier de conf, étant donné la taille réduite, on va utiliser le backend sqlite3 (parce que le BIND de base ne marche pas chez moi, pkoi ?)

vim /etc/powerdns/pdns.conf

# ne répondre qu'aux requêtes locales et sur un port custom :
local-address=127.0.0.1
local-port=5300

launch=gsqlite3
gsqlite3-database=/etc/powerdns/powerdns.sqlite3

Ensuite, on initialise la database :

sqlite3 /etc/powerdns/powerdns.sqlite3 < /usr/share/doc/pdns-backend-sqlite3/schema.sqlite3.sql
NOTE : sur certaines machines, par exemple Alpine Linux, il convient que le dossier contenant la bdd sqlite soit accessible en écriture par le uid du serveur pdns. En conséquence, il peut être nécessaire de placer le fichier dans un dossier spécifique, par exemple /var/lib/pdns/ et rendre ce dossier en rw à l'user pdns via un chown par exemple

Ajouter les entrées dns des ressources locales : ''pdnsutil''

On va maintenant ajouter des entrées dns correspondant à des ressources locales source:

# On commence par créer une zone dns, c'est à dire un espace pour lequel ce serveur aura autorité 
pdnsutil create-zone example.com
 
# Ensuite, on ajoute les entrées une à une
pdnsutil add-record example.com serveur1 A 192.168.1.2
 
# Pour vérifier ce qui est enregistré, on a 2 commandes :
pdnsutil list-all-zones
pdnsutil list-zone example.com

Les gens recommandent d'avoir un nom de domaine à soi, comme ça on est sur qu'il n'y a pas de conflit avec les recherches sur internet, notamment quand on est plus dans le LAN.
Sinon, on peut utiliser .local ou .lan.
Problème avec .local, c'est utilisé par un autre système de résolution de noms sans serveur, mdns.

Pour valider toute la config, ne pas oublier de relancer le serveur systemctl restart pdns.service

Installer et configurer le serveur recursif : ''pdns-recursor''

Ce sera lui en interface principale, il utilisera donc le port dédié 53.
Sur la même machine, installer le paquet apt install pdns-recursor
Editer le fichier de conf vim /etc/powerdns/recursor.conf

# pour autoriser tout le monde à faire des requêtes (je sais, c'est pas secure mais on est dans un LAN inaccessible depuis l'extérieur)
local-address=0.0.0.0
local-port=53

# rediriger vers notre serveur Authoritative pour nos ressources locales, il faut renseigner l'espace défini précédemment
forward-zones=example.com=127.0.0.1:5300, autreexemple.com=127.0.0.1:5300

# rediriger toutes les autres requetes vers un autre serveur recursif (la box par exemple)
forward-zones-recurse=.=192.168.0.1

Ne pas oublier de redémarrer le service pour prendre en compte la config systemctl restart pdns-recursor

Et voilà =)

Config des clients

Il y a 2 choses à configurer :

  • le serveur DNS : diriger vers cette machine
  • la gateway : renseigner l'ip du routeur/box
dns.txt · Dernière modification: 2023/11/30 17:33 de luc