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. 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. err404.numericore.com. (
2021042514 ; Serial
7200 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum
; NAMESERVERS
@ IN NS ns.err404.numericore.com.
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é