Installazione e configurazione di un cluster PowerDNS con funzionalità di DNS steering in caso di failover

da | Mag 26, 2025

 

Una delle modalità più diffuse per effettuare failover su un servizio secondario, ad esempio in caso di Disaster Recovery, consiste nell’utilizzo di record DNS dinamici.

Quando si tratta di DNS pubblico, CloudFlare mette a disposizione ad un prezzo contenuto il servizio di Load Balancing che integra la funzionalità di DNS steering in caso di failover.

Quando, però, si necessita di utilizzare records dinamici sul DNS interno è necessario fare affidamento a prodotti on-premise.

In questo articolo verranno mostrati gli step di installazione e configurazione di base di un cluster PowerDNS con backend Bind e la creazione di records dinamici tramite LUA.

PREREQUISITI

La procedura in questo articolo è stata eseguita su due server Debian 12.
È necessario che entrambi i server PowerDNS possano contattare i servizi di cui devono gestire i records dinamici.
Se si vuole creare un cluster PowerDNS è necessario che i due servers possano contattarsi a vicenda sulla porta 53 TCP e UDP.

INSTALLAZIONE DI POWERDNS

I passaggi eseguiti in questo paragrafo devono essere eseguiti sia sul server master che sui server in replica.

Aggiornare i repositories:

Installare PowerDNS con backend Bind:

CONFIGURAZIONE DEL BACKEND BIND SUL MASTER

Creare la directory per la configurazione delle zone:

Aggiungere il file /etc/powerdns/bind/pizza.dynamic.zone con il seguente contenuto:

Nella configurazione precedente si assume che 10.10.170.245 e 10.10.170.246 siano gli IP di due web server in ascolto sulla porta 8080 e che il server con IP 10.10.170.245 sia il primario.
I due web server si trovano sulla stessa rete, ma questo non è un requisito, basta che PowerDNS possa contattarli entrambi.
Inoltre, “10.10.160.44” è l’IP del server PowerDNS master, “10.10.160.45” è l’IP del server PowerDNS in replica ed è stato utilizzato “pizza.dynamic” come nome della zona.
L’FQDN “admin.pizza.com” identifica il recapito email per la zona, è possibile specificare una qualsiasi email, a patto di sostituire la @ con un punto.
I timers nel record SOA sono indicati in secondi, in particolare bisogna tenere in considerazione il valore per “expire” (1 settimana), dopo tale scadenza il server DNS in replica considerà i records non più validi e smetterà di rispondere; per evitare che i records DNS scadano è necessario che il server in replica contatti il server master almeno una volta prima della scadenza; è sconsigliato incrementare oltre alla settimana il timer “expire”.
Se non si volesse formare un cluster, sarebbe possibile configurare solamente un name server (record NS e relativo record A).

Il record “test1” viene risolto secondo la topologia “active-active” e perciò viene selezionato in modo random un IP dal gruppo fornito nel record.
I records “test2” e “test3”, invece, vengono risolti secondo la topologia “active-passive” e perciò verrà utilizzato l’IP appartenente al secondo gruppo (10.10.170.246) solo se l’IP del server primario (quello nel primo gruppo) non risponde correttamente.
Nello specifico i records “test1” e “test2” utilizzano come health check un controllo sulla porta (in questo caso la 8080); il record “test3”, invece, verifica lo stato di salute del servizio interrogando l’URL fornito come primo parametro e perciò non verifica lo stato di salute dei singoli server (quelli a cui appartengono gli IP dei gruppi).
Affinchè “ifurlup” consideri sano il primo gruppo di IP è necessario PowerDNS riceva come risposta all’URL indicato come primo parametro 200 come response code.
L’utilizzo di “ifportup” e più versatile rispetto a “ifurlup” poichè non necessita di un endpoint HTTP per effettuare gli health checks, tuttavia la possibiltà di specificare due gruppi con priorità diversa (topologia “active-passive”) è stata introdotta in una versione successiva rispetto a quella distribuita tramite package manager di Debian 12.

CONFIGURAZIONE DI POWERDNS SUL MASTER

Aggiungere nel file /etc/powerdns/named.conf la seguente configurazione:

Abilitare l’utilizzo di records LUA nel file /etc/powerdns/pdns.conf modificando o aggiungendo la seguente riga:

Inoltre, per configurare la replica, è necessario modificare o aggiungere le seguenti configurazioni nel file /etc/powerdns/pdns.conf (solo se si vuole formare un cluster):

Modificare “10.10.160.45” con l’IP del server PowerDNS in replica.

AVVIARE ED ABILITARE IL SERVIZIO

Riavviare il servizio PowerDNS:

Se viene mostrato un errore è possibile che siano presenti degli errori di permessi.

Analizzare i logs con il seguente comando:

Se viene mostrato un errore come il seguente significa che potrebbero essere presenti dei problemi con i permessi:

In questo caso correggere il gruppo a cui appartiene il file di configurazione di PowerDNS:

Verificare che gli errori siano stati corretti riavviando il serivzio nuovamente:

Infine, abilitare il servizio:

VERIFICARE IL FUNZIONAMENTO

Per verificare il funzionamento di un record DNS è possibile eseguire il seguente comando:

In caso di errore di configurazione potrebbe venir mostrato il codice “SERVFAIL”.

Per monitorare l’aggiornamento di un record DNS durante un test di failover è possibile utilizzare “watch”:

CONFIGURAZIONE DI UN SERVER POWERDNS IN REPLICA

PowerDNS integra nativamente la replica, perciò è possibile configurare uno o più servers slaves che verranno automaticamente sincronizzati con il master.

Sul server in replica eseguire gli step descritti nei capitoli INSTALLAZIONE DI POWERDNS e AVVIARE ED ABILITARE IL SERVIZIO per installare PowerDNS.
I passaggi mostrati in questo paragrafo bisogna eseguirli solo sul server in replica.

Creare la struttura di directories necessarie ed assegnare loro i permessi:

Aggiungere nel file /etc/powerdns/named.conf la seguente configurazione:

Sostituire “10.10.160.44” con l’IP del server master.

Modificare o aggiungere le seguenti configurazioni nel file /etc/powerdns/pdns.conf:

Assicurarsi di aver aggiunto le configurazioni necessarie per la replica sul server master.

Riavviare il servizio PowerDNS:

Infine, verificare nei logs che la replica sia stata effettuata:

Per forzare la replica, è possibile eseguire il seguente comando sul server secondario:

Se si effettuano modifiche alla zona sul primario, assicurarsi di modificare il seriale della configurazione, che tipicamente è nel formato YYYYMMDDXX, dove YYYY è l’anno, MM il mese, DD il giorno e XX un numero incrementale (esempio 2025042601).

CONFIGURAZIONE DEI CONDITIONAL FORWARDERS

Per integrare PowerDNS con la propria infrastruttura DNS è possibile creare una zona con conditional forwarder verso i server installati durante i passaggi dei paragrafi precedenti.
A scopo dimostrativo verrà descritto come effettuare la procedura con dei server DNS Windows integrati con Active Directory, tuttavia è possibile configurare i conditional forwarder sulla maggior parte dei server DNS.

Accedere allo snap-in DNS Manager, selezionare Conditional Forwarders, effettuare click con il tasto destro e navigare su New Conditional Forwarder….
Assegnare il nome DNS alla zona e aggiungere gli IP dei servers PowerDNS, inoltre, è possibile abilitare la replica sui server DNS appartenenti alla foresta Active Directory:

Salvare cliccando su Ok e verificare da CMD o PowerShell con nslookup il funzionamento dei records dinamici.

 

Articoli Recenti

Veeam Backup

Monitoring

Friends

  • My English Lab  English School
  • ChrSystem   Servizi ICT
  • Since 01  Kreative Graphics

Database

Networking

Autori

  • Raffaele Chiatto  Amministratore
  • Marco Valle  Autore
  • Angelo Lauria  Autore
  • Edoardo Prot  Autore
  • Davide D’Urso  Autore
Marco Valle

Marco Valle

Mi chiamo Marco Valle e da sempre sono appassionato di Cybersicurezza e Linux. Per lavoro implemento soluzioni open source.

Related Post

0 commenti

Invia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Virtualizzazione

Linux

Microsoft

Apple

Backup

Database

Security

Automazione