DNS Debian · 3 min read · Oct 02, 2025

Costruire un sistema DNS Debian

Costruire un sistema DNS Debian

Versione 1.0
Autore: Joe Topjian

OK, questo è l’ultimo articolo DNS… per un po’, almeno.

Questo articolo ti mostrerà come costruire un sistema DNS completo con Debian. Questo include un server Master, un server Slave, DDNS e un sacco di DNSSEC. Userò BIND 9 per il server.

Il Server Master

Prima di tutto, mettiamo in funzione il nostro server Master. Poiché si sa che BIND ha la sua giusta dose di exploit, lo metteremo in una chroot jail. Non ne parlerò poiché Falko ha scritto una guida eccellente a riguardo qui.

Dopo averlo messo in prigione, fai funzionare RNDC. RNDC è un piccolo strumento da riga di comando per controllare BIND. Per usarlo, copia il contenuto di /etc/bind/rndc.key in /etc/bind/named.conf. Riavvia BIND e sei a posto. Ora puoi usare RNDC per interfacciarti con BIND invece di lavorare direttamente con BIND. Per ulteriori informazioni sui comandi RNDC, vedi qui.

Ora è il momento di creare il file di zona. Per questo esempio, userò il TLD fittizio hemingway. Non c’è un motivo particolare – solo perché posso e so per certo che non entrerà mai in conflitto con un vero nome di dominio.

Per organizzazione, ho creato due directory per memorizzare i file di zona, una master e una slave – per memorizzare rispettivamente i file di zona master e slave.

/etc/bind/zones/master
/etc/bind/zones/slave

Non dimenticare di modificare /etc/bind/named.conf.options e cambiare l’opzione directory in “/etc/bind”.

Il file di zona avrà questo aspetto ( /etc/bind/zones/master/master.hemingway):

| $ORIGIN hemingway $TTL 1d @ IN SOA ns1 hostmaster ( 2005103008 ; serial 43200 900 604800 10800 ) NS hemingway. A 127.0.0.1 |

La zona inversa per il 192.168.1.0/24 ( /etc/bind/zones/192.168.1.rev) avrà questo aspetto:

| $TTL 1d ; $ORIGIN 1.168.192.IN-ADDR.ARPA. @ IN SOA ns1.hemingway. hostmaster.hemingway. ( 2005103001 2h 15m 2w 3h ) IN NS ns1.hemingway. IN NS ns2.hemingway. |

Ora modifica /etc/bind/named.conf.local con le nuove zone:

| zone "hemingway" { type master; file "zones/master/master.hemingway"; }; |

| zone "1.168.192.IN-ADDR.ARPA" { type master; file "zones/192.168.1.rev"; }; |

Ricarica DNS e controlla i tuoi log. Non dovresti avere errori, ma non si sa mai…

rndc reload

Ora che BIND sa quale dominio ospitare, è tempo di aggiungere alcuni nomi host. Useremo DDNS per questo. Per configurare DDNS, puoi seguire i miei articoli DDNS qui.

Per aggiungere effettivamente gli host con DDNS, userò il mio script ddns.py.

ddns.py add jake.hemingway A 192.168.1.11
ddns.py add bill.hemingway A 192.168.1.12
ddns.py add robert.hemingway A 192.168.1.13
ddns.py add brett.hemingway A 192.168.1.14

I file PTR corrispondenti sono stati aggiunti, ma salto questo per risparmiare spazio.

Ora abbiamo un server DNS Master completamente funzionante che risolve qualsiasi nome host gli diamo.

Il Server Slave

Ora che il server Master è impostato, è tempo di passare allo Slave. Su un’altra macchina, imposta un’installazione di BIND in prigione proprio come il Master.

Lo Slave preleverà i trasferimenti di zona dal Master. Poiché questi trasferimenti di zona avvengono sulla rete in testo semplice, vogliamo proteggerli.

In entrambi i file /etc/bind/named.conf.options del master e dello slave, aggiungi quanto segue

| dnssec-enable yes; |

Utilizzando il comando dnssec-keygen descritto qui, crea una chiave. Aggiungi l’hash MD5 a una nuova dichiarazione di chiave in entrambi i file /etc/bind/named.conf:

| key "TRANSFER" { algorithm hmac-md5; secret "jXc2Lreaw4QHHTb/MjiHAw=="; }; |

Sul master, aggiungi la seguente dichiarazione del server a /etc/bind/named.conf:

| server IP-OF-SLAVE { keys { TRANSFER; }; }; |

Sul slave, fai il contrario:

| server IP-OF-MASTER { keys { TRANSFER; }; }; |

Sul master, aggiungi quanto segue ai blocchi di zona in /etc/bind/named.conf.local:

| allow-transfer { key TRANSFER; }; |

Il blocco di zona sullo Slave dovrebbe avere questo aspetto:

| zone hemingway { type slave; file "zones/slave/slave.hemingway"; masters { IP-OF-MASTER; }; allow-notify { IP-OF-MASTER; }; }; |

Infine, assicurati che entrambi i server abbiano i loro orologi sincronizzati. I trasferimenti di zona non avranno luogo se non lo sono.

Una volta terminato, avvia il server slave. Dovresti ora avere un nuovo file in /etc/bind/zones/slave/ dal trasferimento di zona. Se non lo hai, controlla i tuoi log – sono molto dettagliati con gli errori.

Conclusione

Questo è tutto! È un sacco di lavoro e l’ho davvero sbrigato, ma questo dovrebbe farti partire. Per riferimento e ulteriori informazioni, leggi i miei articoli DDNS qui e fai riferimento al meraviglioso libro Pro DNS e BIND (non è una pubblicità – è davvero un buon libro!).

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.