Table des matières

Knot DNS est un serveur DNS permettant de servir des zones (comme maître ou esclave).

Installation

On l'installe simplement via apt :

apt install knot knot-dnsutils bind9utils

(Le paquet bind9utils permet de disposer de la commande named-checkzone pour vérifier un fichier de zone avant utilisation.)

Si la machine dispose également d'un serveur DNS récursif en écoute sur le port 53, il faut limiter Knot aux interfaces publique, en éditant /etc/knot/knot.conf. On utilise également un utilisateur avec des droits limités… Ainsi, pour dodecagon, on a :

/etc/knot/knot.conf
server:
    # Listen on all configured IPv4 interfaces.
    listen: 62.210.81.204@53
    # Listen on all configured IPv6 interfaces.
    listen: 2001:bc8:273e::@53
    listen: 2001:bc8:273e:0:ec4:7aff:fe0e:d846@53
    # User for running the server.
    # user: knot:knot
    # Hide version
    version: ""
    # Hide server name
    identity: ""

log:
    # Log info and more serious events to syslog.
  - target: syslog
    any: info

remote:
  - id: parangon
    address: 2a0c:700::1:67:e5ff:fee9:5@53
    address: 138.231.142.239@53
  - id: saigon
    address: 193.48.225.201@53

acl:
  - id: acl_slaves
    address: 138.231.142.239                # parangon
    address: 2a0c:700:0:1:67:e5ff:fee9:5 # parangon
    address: 193.48.225.201 # saigon
    action: transfer

Administration

Création d'une zone

On édite le fichier de configuration de Knot pour avoir le contenu suivant :

/etc/knot/knot.conf
zone:
  - domain: federez.net
    file: /etc/knot/zones/db.federez.net
    notify: [parangon, saigon]
    acl: acl_slaves
    dnssec-signing: on
    dnssec-policy: default

…

Si l'on ne veut pas que la zone soit signée avec DNSSEC, on ajoute à la zone la directive : dnssec-enable: off;, et on adapte le nom du fichier.

Dans le cas contraire, on met à on. La gestion des clef est automatique, cf le tuto suivant https://www.swordarmor.fr/gestion-automatique-de-dnssec-avec-knot.html

Il suffit donc de mettre dnssec-enable à yes, puis de récupérer la clef avec

  knotc zone-read federez.net @ DNSKEY

Enfin on la publie sur l'interface ovh et c'est bon.

Modification d'une zone

Attention, la génération du dns est gérée par re2o, ne pas éditer le fichier de zone à la main. La documentation est laissée ici dans un but uniquement pédagogique.

On édite le fichier non-signé, par exemple /etc/knot/zones/federez.net.

On vérifie que l'on a bien mis à jour le serial (la première valeur numérique de l'enregistrement SOA, qui doit être de la forme AAAAMMJJXX et croissant à chaque modification).

Pour s'assurer que ce soit bien le cas, faire un backup de la configuration actuelle et vérifier la zone avant de la recharger dans knot, il suffit de lancer le script /etc/knot/zones/update_zone.sh avec en argument la zone, par exemple :

/etc/knot/zones/update_zone.sh federez.net

On peut vérifier que la zone est bien gérée par knot :

knotc zone-status federez.net
knotc status

Si l'on ne veut pas utiliser le script, on peut lancer :

cat /etc/knot/zones/db.federez.net >| /etc/knot/zones/db.federez.net.signed
knotc zone-check federez.net
knotc zone-reload federez.net