DNS Setup · 6 min read · Nov 27, 2025

Impostazione Perfetta di DjbDNS su Ubuntu Server 8.04 (amd64) Hardy

Impostazione Perfetta di DjbDNS su Ubuntu Server 8.04 (amd64) Hardy

DjbDNS è una raccolta di strumenti per il Sistema dei Nomi di Dominio. Include software per tutte le operazioni fondamentali del DNS:

Cache DNS: Trovare indirizzi di host Internet. Quando un browser vuole contattare www.hotwired.com, prima chiede a una cache DNS, come la dnscache di djbdns, di trovare l’indirizzo IP di www.hotwired.com. I fornitori di servizi Internet eseguono dnscache per trovare indirizzi IP richiesti dai loro clienti. Se stai eseguendo un computer domestico o una workstation, puoi eseguire la tua dnscache per velocizzare la navigazione web.

Server DNS: Pubblicare indirizzi di host Internet. L’indirizzo IP di www.hotwired.com è pubblicato dai server DNS di HotWired. djbdns include un server DNS di uso generale, tinydns; gli amministratori di rete eseguono tinydns per pubblicare gli indirizzi IP dei loro computer. djbdns include anche server specializzati per pubblicare firewall DNS e RBL.

Client DNS: Comunicare con una cache DNS. djbdns include una libreria C client DNS e diversi strumenti client DNS da riga di comando. I programmatori usano questi strumenti per inviare richieste alle cache DNS.

DjbDNS include anche diversi strumenti di debug DNS, in particolare dnstrace, che gli amministratori usano per diagnosticare server remoti mal configurati.

Caratteristiche di sicurezza:

  • dnscache viene eseguito come un uid non root dedicato all’interno di una chroot jail, quindi non può toccare il resto della macchina.
  • tinydns viene eseguito come un altro uid non root dedicato all’interno della propria chroot jail.
  • walldns viene eseguito come un altro uid non root dedicato all’interno della propria chroot jail.
  • dnscache scarta le query DNS provenienti da un elenco specificato di indirizzi IP.
  • dnscache e la libreria dns utilizzano un nuovo ID di query e una nuova porta UDP per ogni pacchetto di query. Scartano le risposte DNS da qualsiasi indirizzo IP diverso da quello a cui è stata appena inviata la corrispondente query.
  • dnscache utilizza un generatore crittografico per selezionare numeri di porta e ID imprevedibili.
  • dnscache è immune al poisoning della cache.

tinydns non memorizza mai informazioni nella cache. Non supporta la ricorsione.

Pre-Installazione

apt-get install build-essential  
mkdir /tmp/downloads  
cd $_  
wget -c  HYPERLINK "http://www.thedjbway.org/patches/djb_errno_patches.tgz" http://www.thedjbway.org/patches/djb_errno_patches.tgz  
tar -zxvf djb_errno_patches.tgz  
wget -c   HYPERLINK "http://cr.yp.to/daemontools/daemontools-0.76.tar.gz" http://cr.yp.to/daemontools/daemontools-0.76.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz" http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/djbdns/djbdns-1.05.tar.gz" http://cr.yp.to/djbdns/djbdns-1.05.tar.gz

Installa Tutti I Pacchetti

a. Installa ucspi-tcp-src:

cd /tmp/downloads  
tar -zxvf ucspi-tcp-0.88.tar.gz  
cd ucspi-tcp-0.88  
patch -p1 < /tmp/downloads/ucspi-tcp-0.88.errno.patch  
make  
make setup check

b. daemontools

cd /tmp/downloads  
tar -zxvf  daemontools-0.76.tar.gz  
cd admin/daemontools-0.76/  
touch /etc/inittab  
patch -p1 < /tmp/downloads/daemontools-0.76.errno.patch  
package/install
vi /etc/event.d/svscan
# svscan - daemontools

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /command/svscanboot

Questo installer crea solo collegamenti a tutti i comandi svscan in /command, quindi è meglio copiare questi:

cd /command  
rm -rf *  
cp /tmp/downloads/admin/daemontools/command/* /command/

Ecco tutto… poi (potresti dover riavviare) …

initctl start svscan

c. djbdns

cd /tmp/downloads  
tar -zxvf djbdns-1.05.tar.gz  
cd djbdns-1.05  
echo gcc -O2 -include /usr/include/errno.h > conf-cc   
make  
make setup check

Configura i Pacchetti

Crea utenti (se non sono stati creati automaticamente):

adduser --no-create-home --disabled-login --shell /bin/false dnscache  
adduser --no-create-home --disabled-login --shell /bin/false dnslog  
adduser --no-create-home --disabled-login --shell /bin/false tinydns

Configura dnscache:

Nel nostro scenario, abbiamo bisogno che ciascun server master e slave sia sia “autoritario” che “caching”. Quindi è molto importante capire come raggiungere questi obiettivi con djbdns. A differenza di bind, djbdns utilizza un IP individuale per ciascun tipo di servizio DNS. Per impostazione predefinita, ogni sistema è pronto con 2 IP => un host-IP e l’altro è loopback-IP. Quindi, qualsiasi sistema sulla LAN dovrebbe utilizzare la cache DNS, quindi l’host-IP per la cache-dns. E eseguiremo l’autoritario su loopback-IP, e successivamente lo collegheremo alla cache-dns, quindi gli host LAN possono interrogare anche i record host autoritativi.

mkdir /var/lib/svscan  
dnscache-conf dnscache dnslog /var/lib/svscan/dnscache   
ln -sf /var/lib/svscan/dnscache /service

Controlla che la directory “supervise” sia stata creata in /service/dnscache
Per controllare se è in esecuzione: aggiungi solo una singola voce come ‘nameserver ’ in /etc/resolv.conf e controlla alcune query di siti web pubblici usando ‘nslookup’ o ‘dig’ dalla riga di comando.

Ora devi consentire agli host LAN di interrogare da esso. Quindi crea semplicemente un file vuoto chiamato come la tua rete o sottorete:

touch /etc/dnscache/root/ip/

Ecco fatto. Ora puoi interrogare da qualsiasi host di quella . Allo stesso modo, puoi abilitare più host, reti o sottoreti per la query.
A differenza di bind, puoi regolare la dimensione della cache del nameserver modificando il file /etc/dnscache/env/CACHESIZE. Inoltre, puoi aggiornare manualmente o svuotare la cache eseguendo il seguente comando:

svc -t /service/dnscache

Temporaneamente puoi fermare e avviare dnscache con i seguenti comandi:

svc -d /service/dnscache => per fermare il servizio dnscache  
svc -u /service/dnscache => per avviare il servizio dnscache

Configura tinydns:

tinydns-conf tinydns dnslog /var/lib/svscan/tinydns   
ln -sf /var/lib/svscan/tinydns /service

Controlla che la directory “supervise” sia stata creata in /service/tinydns.

Non contengono ancora alcuna voce di zona per domini, ma ci arriveremo tra poco. A differenza di bind, le informazioni sulla zona sono scritte in un singolo file (anche per più zone, comprese le zone inverse) e quel file è /var/lib/svscan/tinydns/root/data. Questo è un file scrivibile dall’uomo che viene successivamente convertito in formato binario utilizzando un comando tinydns e quel binario è chiamato formato cdb, quindi quel file binario è /var/lib/svscan/tinydns/root/data.cdb da cui tinydns risponde a tutte le query. La sintassi per i record di zona è molto breve e compatta rispetto a bind. Ecco alcuni esempi:

a. Per voce del server dei nomi:

  .in.domain.com:10.20.0.10:ns1.in.domain.com  
  .in.domain.com:10.20.0.12:ns2.in.domain.com

b. Per reverse-dns per il server dei nomi sopra:

  .10.in-addr.arpa::ns1.in.domain.com  
  .10.in-addr.arpa::ns2.in.domain.com

c. Per record MX:

  @in.domain.com:165.212.65.113:mx.usa.net:10  
  @in.domain.com:10.20.0.12:mail.in.domain.com:20

d. Record A:

  =host0001.in.domain.com:10.10.0.101

e. Record Alias per host:

  +host01.in.domain.com:10.10.0.101  
  +mysql01.in.domain.com:10.10.0.101

E infine converti /var/lib/svscan/tinydns/root/data in formato cdb con

tinydns-data

oppure

cd /var/lib/svscan/tinydns/root  
make

Alla fine, per collegare queste informazioni di zona al server caching-dns, crea file chiamati come 10.in-addr.arpa, in.domain.com e domain.com ecc. nella directory /var/lib/svscan/dnscache/root/servers/, i cui contenuti dovrebbero essere 127.0.0.1 (l’IP di loopback). Ecco fatto. È tutto configurato.

Nota: ogni volta che apporti modifiche ai dati e crei un file data.cdb modificato, non dimenticare di aggiornare o svuotare la cache.

svc -t /services/*

Configurazione del Server Slave Utilizzando Djbdbs

Basta seguire http://www.seebq.com/dns-replication-using-rsync e alcune modifiche su alcuni file di Master e Slave.

a. Modifiche al /var/lib/svscan/tinydns/root/Makefile del master: Modifica il file come

remote: data.cdb
  rsync -az -e ssh data.cdb :/service/tinydns/root/data.cdb
  ssh  'svc -t /service/dnscache'
data.cdb: data
  /usr/local/bin/tinydns-data
  svc -t /service/dnscache

b. Modifiche al file /var/libsvscan/tinydns/root/data dello slave come

# Non modificare i dati su questo computer! data.cdb è copiato dal MASTER.
# La seguente riga protegge data.cdb fermando make.
9

Quindi, se per errore qualcuno digita il comando make nella directory /etc/tinydns/root o il comando tinydns-data, questo semplicemente svuoterà la cache poiché non ci sarà alcun file di dati negli slave.

E sì, basta impostare un login auto-ssh tra master e slave in modo che le modifiche sopra automatizzino il processo. Le modifiche sopra spingeranno solo il file data.cdb sugli slave. Quindi nessuna possibilità di dati diversi tra i server dei nomi, significa coerenza in tutti.

Backup e Ripristino

Come minimo abbiamo solo bisogno di una copia del file /var/lib/svscan/tinydns/root/data o al massimo dell’intero /var/lib/svscan/dnscache e /var/lib/svscan/tinydns. Ecco tutto.

Per il ripristino, basta impostare dnscache o tinydns, ci vorrà poco tempo, e copiare i dati di backup. Infine, crea un collegamento simbolico a /service. Ecco tutto.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.