Vai al contenuto

Knot Authoritative DNS

Un'alternativa a BIND, Knot DNS, è un moderno server DNS autoritativo gestito dal registry dei domini ceco CZ.NIC.

Prerequisiti e presupposti

  • Un server con Rocky Linux
  • In grado di utilizzare firewalld per la creazione di regole firewall
  • Un nome di dominio o un server DNS ricorsivo interno che punta al server DNS autoritativo.

Introduzione

I server DNS esterni, o pubblici, mappano gli hostname in indirizzi IP e, nel caso dei record PTR (noti come “pointer” o “reverse”), mappano gli indirizzi IP in hostname. È una parte essenziale di Internet. Fa sì che il server di posta, il server web, il server FTP o molti altri server e servizi funzionino come previsto, indipendentemente da dove ci si trovi.

Installazione e abilitazione di Knot

Per prima cosa, installare EPEL:

dnf install epel-release

Quindi, installare Knot:

dnf install knot

Configurazione di Knot

Prima di apportare modifiche a qualsiasi file di configurazione, spostare il file originale installato e funzionante, knot.conf:

mv /etc/knot/knot.conf /etc/knot/knot.conf.orig

Questo aiuterà in futuro se si verificano errori nel file di configurazione. È sempre una buona idea fare una copia di backup prima di apportare modifiche.

Modificare il file knot.conf. L'autore usa vi, ma potete sostituirlo con il vostro editor a riga di comando preferito:

vi /etc/knot/knot.conf

Inserire quanto segue:

server:
    listen: 0.0.0.0@53
    listen: ::@53

zone:
  - domain: example.com
    storage: /var/lib/knot/zones
    file: example.com.zone

log:
  - target: syslog
    any: info

Sostituire example.com con il nome del dominio per il quale si gestisce un nameserver.

Quindi, creare i file di zona:

mkdir /var/lib/knot/zones
vi /var/lib/knot/zones/example.com.zone

I file di zona DNS sono compatibili con BIND. Nel file, inserire:

$TTL    86400 ; How long should records last?
; $TTL used for all RRs without explicit TTL value
$ORIGIN example.com. ; Define our domain name
@  1D  IN  SOA ns1.example.com. hostmaster.example.com. (
                              2024061301 ; serial
                              3h ; refresh duration
                              15 ; retry duration
                              1w ; expiry duration
                              3h ; nxdomain error ttl
                             )
       IN  NS     ns1.example.com. ; in the domain
       IN  MX  10 mail.another.com. ; external mail provider
       IN  A      172.20.0.100 ; default A record
; server host definitions
ns1    IN  A      172.20.0.100 ; name server definition     
www    IN  A      172.20.0.101 ; web server definition
mail   IN  A      172.20.0.102 ; mail server definition

Se avete bisogno di aiuto per personalizzare i file di zona in stile BIND, Oracle ha una buona introduzione ai file di zona.

Salvare le modifiche.

Abilitare Knot

Quindi, consentire le porte DNS in firewalld e abilitare Knot DNS:

firewall-cmd --add-service=dns --zone=public
firewall-cmd --runtime-to-permanent
systemctl enable --now knot

Verificare la risoluzione DNS con il comando host:

% host example.com 172.20.0.100
Using domain server:
Name: 172.20.0.100
Address: 172.20.0.100#53
Aliases: 

example.com has address 172.20.0.100
example.com mail is handled by 10 mail.another.com.
%

Conclusione

Sebbene la maggior parte delle persone utilizzi servizi di terze parti per il DNS, ci sono scenari in cui si desidera un DNS self-hosting. Ad esempio, le società di telecomunicazioni, hosting e social media ospitano molte voci DNS in cui i servizi ospitati sono indesiderati.

Knot è uno dei tanti strumenti open-source che rendono possibile l'hosting DNS. Congratulazioni, avete il vostro server DNS personale!

Author: Neel Chauhan

Contributors: Steven Spencer, Ganna Zhyrnova