Questa guida mostrerà come installare e configurare un server DNS in RHEL 8 / CentOS 8 solo in modalità cache o come server DNS singolo, nessuna configurazione master-slave. Viene fornito un esempio di zona inversa e in avanti.
In questo tutorial imparerai:
- Come installare un server DNS in RHEL 8 / CentOS 8
- Come configurare un server per memorizzare nella cache solo il server DNS
- Come configurare un server come server DNS singolo
Client che risolve una query tramite il server DNS.
Requisiti e convenzioni software utilizzati
Categoria | Rete |
---|---|
Sistema | RHEL 8 / CentOS 8 |
Software | legare |
Altro | Accesso privilegiato al tuo sistema Linux come root o tramite sudo comando. |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Prerequisiti
Prima di iniziare si presuppone che:
- Tu o la tua organizzazione avete già creato un account in Red Hat
- RHEL 8 / CentOS 8 è già stato scaricato e installato
- Il sistema è già stato registrato tramite il Subscription
Manager - Hai già configurato un repository locale o remoto
Installazione del server DNS
- Installazione Bind
Installeremo il pacchetto BIND, il più famoso Server DNS Open Source, attraverso ildnf
strumento a cui orayum
è basato.
Il comando da eseguire è:# dnf -y install bind*
Quale dovrebbe installare tutti questi pacchetti:
Elenco dei pacchetti di rilegatura
Configurazione del server DNS comune
- Configurazione del firewall
Dobbiamo abilitare il servizio DNS:# firewall-cmd --permanent --zone=public --add-service=dns
e ricarica la configurazione:
# firewall-cmd --reload
- Backup dei file di configurazione principali
È sempre una buona abitudine fare una copia di backup iniziale dei file di configurazione di bind principali; anche prima di qualsiasi modifica.# cp /etc/named.conf /etc/named.conf.org # cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.org
- Verifica della configurazione di rete
Un Server DNS deve avere un indirizzo IP statico, verifichiamo che sia il caso:$ cat /etc/sysconfig/network-scripts/ifcfg-enp0s3|egrep -i "boot|ipaddr|mask|gateway"
Che, ad esempio, produce i seguenti risultati:
BOOTPROTO=static ONBOOT=yes IPADDR=10.0.0.63 NETMASK=255.255.255.0 GATEWAY=10.0.0.1
Ovviamente la tua configurazione di rete potrebbe essere diversa, ancora una volta l'indirizzo IP deve essere statico.
- Scelta del nome di dominio
Per impostare un nome di dominio completo o un FQDN# hostnamectl set-host name dns-srv.vulcansys-local.com
Ovviamente puoi scegliere un altro nome, qui ho inventato un nome di dominio che sembra non essere stato registrato in nessuna organizzazione.
- Configurazione del resolver
Stiamo per configurare ilresolv.conf
file. Le prime righe devono essere:search vulcansys-local.com nameserver 10.0.0.63
Questo è sia nel server che in qualsiasi client che interroga il nostro DNS; ovviamente devi aggiungere un secondo name server per risolvere siti internet o qualsiasi altro dominio.
- Disabilitazione della configurazione automatica DNS di Network Manager
Non vogliamo che Network Manager modifichiresolv.conf
file. Per farlo aggiungiamo semplicemente la riga
:dns=none
nel file/etc/NetworkManager/NetworkManager.conf
e ricarichiamo il servizio:# systemctl reload NetworkManager
- Abilitazione del servizio di collegamento all'avvio
Dobbiamo assicurarci che il servizio DNS sia avviato con il sistema, quindi:# systemctl enable named
Tipi di server DNS
È possibile configurare un server DNS per funzionare in una delle seguenti modalità, solo una alla volta:
- Server radice
- Server singolo
- Server secondario
- Server di sola memorizzazione nella cache
- Server di inoltro
In questo articolo descriveremo solo come configurare un server di sola memorizzazione nella cache e un server singolo.
Un server DNS di sola memorizzazione nella cache non ospita alcuna zona e non è autorevole per un particolare dominio; quando il server viene avviato inizialmente, non ha informazioni memorizzate nella cache e le informazioni vengono ottenute nel tempo man mano che le richieste dei client sono
soddisfatte.
Un server DNS primario o singolo è autorevole per un dominio, ma non abbiamo alta disponibilità e quindi se è inattivo o irraggiungibile nessuna query DNS per il dominio funzionerà, a meno che non sia memorizzata nella cache o duplicata nel file statico /etc/hosts
.
Quello che abbiamo configurato finora è comune qualunque sia la “modalità di configurazione” che sceglieremo.
- Memorizzazione nella cache solo del server DNS
Ci assicuriamo che le seguenti righe siano modificate/configurate innamed.conf
file:listen-on port 53 { 127.0.0.1; 10.0.0.63; }; #listen-on-v6 port 53 { ::1; }; allow-query { 127.0.0.1; 10.0.0.0/24; }; recursion yes; allow-recursion { 127.0.0.1; 10.0.0.0/24; };
Per semplicità qui il server non sarà in ascolto su un indirizzo IPv6 ( la riga relativa è quindi commentata ). Per verificare se la configurazione è OK possiamo eseguire il comando:
# named-checkconf
se tutto va bene non viene restituito alcun output. Infine abbiamo bisogno che il servizio ricarichi la sua configurazione:
# systemctl reload named
- Server DNS singolo
Nel caso in cui scegliamo questo tipo, sarà il nostro server DNS autorevole incaricato di qualsiasi risoluzione dei nomi nel dominio che abbiamo scelto. Anche qui modificheremo/etc/named.conf
:listen-on port 53 { localhost; 10.0.0.63; }; #listen-on-v6 port 53 { ::1; }; allow-query { 127.0.0.1; 10.0.0.0/24; }; recursion no;
In questa guida, per semplicità, non stiamo impostando il servizio di binding per l'ascolto su un indirizzo IPv6.
L'opzione
recursion no
si assicura che il DNS non faccia tutto il lavoro per fornire una risposta a una particolare query, ma delegherà ai server root se necessario e ad altri server autorevoli l'attività per quei nomi sconosciuti o IP. In altre parole:un server autorevole non deve essere ricorsivo .Successivamente dobbiamo specificare i nostri file di zona; qui configureremo una zona diretta (per risolvere un IP da un nome) e una zona inversa (per risolvere un nome dato un indirizzo IP) ciascuno nel suo file specifico, aggiungendo le seguenti righe al file
named.rfc1912.zones
file:zone "vulcansys-local.com" IN { type master; file "forward.zone"; allow-update { none; }; }; zone "63.0.0.10.in-addr.arpa" IN { type master; file "reverse.zone"; allow-update { none; }; };
L'opzione
allow-update
si riferisce agli aggiornamenti dinamici DNS, ciò significa che un'applicazione in un host può aggiungere un record DNS; per motivi di sicurezza questo è disabilitato di default e quindi solo l'amministratore di sistema può aggiungere record e manualmente.Ora dobbiamo creare i file
forward.zone
ereverse.zone
. Di solito i file di zona si trovano all'interno della
directory/var/named
come possiamo dedurre dalladirectory
opzione nelnamed.conf
file di configurazione.Il nostro
forward.zone
il file conterrà:$TTL 1D @ IN SOA dns-srv.vulcansys-local.com. root.vulcansys-local.com. ( 2019022400 ; serial 3h ; refresh 15 ; retry 1w ; expire 3h ; minimum ) IN NS dns-srv.vulcansys-local.com. dns-srv IN A 10.0.0.63
E il
reverse.zone
file:$TTL 1D @ IN SOA dns-srv.vulcansys-local.com. root.vulcansys-local.com. ( 2019022400 ; serial 3h ; refresh 15 ; retry 1w ; expire 3h ; minimum ) IN NS dns-srv.vulcansys-local.com. 63 IN PTR dns-srv.vulcansys-local.com
Nei file di configurazione menzionati
SOA
(Start Of Authority) definisce i parametri globali per la zona (dominio); può essere specificato un solo Resource Record (la riga con la parola chiave SOA con il nostro nome di dominio completo). Il tempo di partenza ($TTL) è per impostazione predefinita 1 giorno (o 86400 secondi) e dovrebbe essere temporaneamente ridotto se si modifica una voce in questo file di configurazione poiché indica al server DNS per quanto tempo memorizzare nella cache le informazioni recuperate. La cosa più importante è ricordare di terminare qualsiasi nome di dominio completo in questi file di configurazione con un punto .Qui
root.vulcansys-local.com
è l'indirizzo e-mail e2019022400
un campo seriale che in pratica serve per tenere traccia di qualsiasi modifica nel file di zona e convenzionalmente è nella formaYYYYmmddss
, dovess
è un numero a due cifre.Nel file inverso potresti aver notato che tutto sembra uguale tranne l'ultima riga. Lì specifichiamo con
PTR
una ricerca inversa che si risolverà in10.0.0.63
; basta digitare l'ultima cifra63
che identifica l'host (poiché netmask è255.255.255.0
).Ora ci assicuriamo di avere le autorizzazioni corrette:
# chgrp named /var/named/reverse.zone # chgrp named /var/named/forward.zone
Per verificare che i file di zona siano configurati correttamente puoi impartire i comandi:
# named-checkzone vulcansys-local.com /var/named/forward.zone # named-checkzone 10.0.0.63 /var/named/reverse.zone
E per verificare la configurazione complessiva:
# named-checkconf -v
Se tutto va bene possiamo ricaricare il servizio:
# systemctl reload named
Configurazione client
- Configurazione del firewall
Dobbiamo configurare il firewall come spiegato sopra con il server. Per semplicità presumo che il client sia anche un RHEL 7 o 8. - Configurazione del resolver
Il primo nameserver deve essere il nostro server DNS, anche qui assicurati che il Network Manager non alteri il file resolv.conf. - Impostazione del nome host
Per coerenza, a qualsiasi client nel dominio verrà assegnato un nome host FQDN.
Infine verifichiamo che la nostra configurazione DNS funzioni, da un client, provando a eseguire il ping del server DNS per nome.
Client che risolve una query tramite il server DNS.Conclusione
La configurazione di un server DNS è un compito che qualsiasi amministratore serio dovrebbe aver svolto almeno una volta e in RHEL 8 il modo per farlo non è difficile.