NSD DNS autoritativo
Un'alternativa a BIND, NSD (Name Server Daemon) è un moderno server DNS authoritative-only gestito da NLnet Labs.
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 NSD¶
Per prima cosa, installare EPEL:
dnf install epel-release
Successivamente, installare NSD:
dnf install nsd
Configurazione di NSD¶
Prima di apportare modifiche a qualsiasi file di configurazione, copiare il file originale installato e funzionante, nsd.conf
:
cp /etc/nsd/nsd.conf /etc/nsd/nsd.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 nsd.conf. L'autore usa vi, ma si può sostituirlo con l'editor a riga di comando preferito:
vi /etc/nsd/nsd.conf
Andare in fondo al file e inserire quanto segue:
zone:
name: example.com
zonefile: /etc/nsd/example.com.zone
Sostituire example.com
con il nome del dominio per il quale si gestisce un nameserver.
Quindi, creare i file di zona:
vi /etc/nsd/example.com.zone
I file DNS zone 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 zone file.
Salvare le modifiche.
Abilitare NSD¶
Quindi, consentire le porte DNS in firewalld
e abilitare NSD:
firewall-cmd --add-service=dns --zone=public
firewall-cmd --runtime-to-permanent
systemctl enable --now nsd
Verificare che il DNS riesca a risolvere l'host-name 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.
%
Server DNS secondario¶
La gestione di uno o più server DNS autoritativi secondari è generalmente la norma. Questo è particolarmente utile quando il server primario si guasta. La funzione NSD consente di sincronizzare i record DNS da un server primario a uno o più server di backup.
Per abilitare un server di backup, generare le chiavi di firma sulla zona primaria:
nsd-control-setup
È necessario copiare i seguenti file sul server di backup nella directory /etc/nsd/
:
nsd_control.key
nsd_control.pem
nsd_server.key
nsd_server.pem
Su tutti i server DNS, aggiungere quanto segue prima della direttiva zone:
:
remote-control:
control-enable: yes
control-interface: 0.0.0.0
control-port: 8952
server-key-file: "/etc/nsd/nsd_server.key"
server-cert-file: "/etc/nsd/nsd_server.pem"
control-key-file: "/etc/nsd/nsd_control.key"
control-cert-file: "/etc/nsd/nsd_control.pem"
Inoltre, attivare le voci del firewall:
firewall-cmd --zone=public --add-port=8952/tcp
firewall-cmd --runtime-to-permanent
Sul server primario, modificare la zone in modo che corrisponda a quanto segue:
zone:
name: example.com
zonefile: /etc/nsd/example.com.zone
allow-notify: NS2_IP NOKEY
provide-xfr: NS2_IP NOKEY
outgoing-interface: NS1_IP
Sostituire NS1_IP1
e NS2_IP2
con gli indirizzi IP pubblici dei nameserver primario e secondario.
Sul server secondario, aggiungere la zone:
zone:
name: fourplex.net
notify: NS1_IP NOKEY
request-xfr: NS1_IP NOKEY
outgoing-interface: NS2_IP
Sostituire NS1_IP1
e NS2_IP2
con gli indirizzi IP pubblici dei nameserver primario e secondario.
Riavviare NSD su entrambi i server dei nomi:
NS1# systemctl restart --now nsd
Per scaricare il file di zona sul nameserver secondario da quello primario:
nsd-control notify -s NS2_IP
Sostituire NS2_IP2
con gli indirizzi IP pubblici del server dei nomi secondario.
Conclusione¶
La maggior parte delle persone utilizza servizi DNS di terze parti. Tuttavia, ci sono scenari in cui è auspicabile un DNS self-hosting. Ad esempio, le società di telecomunicazioni, hosting e social media mantengono le proprie voci DNS quando i servizi DNS di terze parti sono indesiderati.
NSD è uno dei tanti strumenti open source che rendono possibile l'hosting DNS.
Author: Neel Chauhan
Contributors: Steven Spencer, Ganna Zhyrnova