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.
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
/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
/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
/!\ 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
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é