Table of Contents

un serveur dns authoritaire (dns SOA) va être utilisé pour déclarer que le serveur fait autorité sur certains noms de domaines.
ce qui permettra de définir facilement plein de sous-domaines sans avoir à changer les parametres chez le registrar.

j'ai choisi d'utiliser nsd, mais j'aurais pu utiliser knot
il est préférable d'installer le serveur de nom de domaine dans une machine virtuelle plutôt que dans l'hyperviseur de façon à faciliter les sauvegardes.

et dans mon cas j'ai choisi d'installer le serveur dns autoritaire dans la même machine qui fait reverse proxy SNI


nsd

on installe le paquet nsd disponible dans Debian
aptitude install nsd

on va avoir quelques fichiers à éditer, puis éditer un fichier supplémentaire par zone dns

nsd.conf

/etc/nsd/nsd.conf:

# NSD configuration file for Debian.
#
# See the nsd.conf(5) man page.
#
# See /usr/share/doc/nsd/examples/nsd.conf for a commented
# reference config file.
 
server:
        # log only to syslog.
        log-only-syslog: yes
 
ip-address: 2a02:8428:753:5002:97dc:9048:0:53
ip-address: 192.168.1.7
 
# use this number of cpu cores
server-count: 1
 
# We recommend leaving this empty, otherwise use "/var/db/nsd/nsd.db"
database: ""
 
#  the default file used for the nsd-control addzone and delzone commands
# zonelistfile: "/var/db/nsd/zone.list"
# The unprivileged user that will run NSD, can also be set to "" if
# user privilige protection is not needed
username: nsd
 
# Default file where all the log messages go
#logfile: "/var/log/nsd.log"
 
# Use this pid file instead of the platform specific default
pidfile: "/var/run/nsd.pid"
 
# don't answer VERSION.BIND and VERSION.SERVER CHAOS class queries
hide-version: yes
hide-identity: yes
 
 
# Enable if privilege "jail" is needed for unprivileged user. Note
# that other file paths may break when using chroot
# chroot: "/etc/nsd/"
# The default zone transfer file
# xfrdfile: "/var/db/nsd/xfrd.state"
# The default working directory before accessing zone files
# zonesdir: "/etc/nsd"
 
 
 
# The following line includes additional configuration files from the
# /etc/nsd/nsd.conf.d directory.
 
include: "/etc/nsd/nsd.conf.d/*.conf"

on ajoute un fichier de zone, dans mon cas j'ai une zone pour err404.numericore.com et les sous-domaines comme visio.err404.numericore.com et une autre zone pour ikce.numericore.com

zones.conf

/etc/nsd/nsd.conf.d/zones.conf:

zone:
    name: ikce.numericore.com
    zonefile: /etc/nsd/nsd.conf.d/ikce.numericore.com.zone
 
zone:
    name: err404.numericore.com
    zonefile: /etc/nsd/nsd.conf.d/err404.numericore.com.zone

err404.numericore.com.zone

/!\ Attention, il y a un piège qui m'a bloqué assez longtemps:
dans la ligne @ IN SOA ns. err404.numericore.com. ( le champs err404.numericore.com. est en réalité une adresse email

d'autre part il faut faire bien attention à ne pas oublier le point final après les noms de domaines

j'utilise les ip publiques:

la ligne contenant Sérial est simplement un numéro de série qui doit être strictement croissant à chaque mise à jour du fichier, donc souvent on va utiliser une date du jour et incrémenter
/etc/nsd/nsd.conf.d/err404.numericore.com.zone:

$ORIGIN err404.numericore.com.
$TTL 7200
 
@       IN      SOA    ns. err404.numericore.com. (
                                                2021042514 ; Serial
                                                7200       ; Refresh
                                                1800       ; Retry
                                                1209600    ; Expire
                                                86400 )    ; Minimum
 
; NAMESERVERS
 
@                   IN                NS                   ns.
 
ns                  IN                A                    77.129.238.159
ns                  IN                AAAA                 2a02:8428:753:5002:97dc:9048:0:53
 
 
; A RECORDS
@                                   A          77.129.238.159
@                                   AAAA       2a02:8428:753:5002:fcb3:ff:fe8a:3b80
visio                               A          77.129.238.159
visio                               AAAA       2a02:8428:753:5002:fcb3:ff:fe8a:3b80

$ORIGIN err404.numericore.com. va être utilisé comme variable pour le reste du fichier
@ va être remplacé par la variable $ORIGIN
donc on va définir des ip pour err404.numericore.com et visio.err404.numericore.com

la box

et enfin sur la box il faut rediriger les ports 53 vers l'ip de la machine qui héberge le serveur dns –autoritaire– qui fait autorité