Repository 32bit  Forum
Repository 64bit  Wiki

Djbdns on Slackware: l'alternativa al BIND: differenze tra le versioni

Da Slacky.eu.
(Introduzione)
(Installazione di Dnscache)
Riga 88: Riga 88:
= Installazione di Dnscache =
= Installazione di Dnscache =
  +
Per prima cosa creiamo sul sistema l'utente ed il gruppo con cui girerà il DNS cache server. Questa operazione è
  +
importante e viene descritta in maiera dettagliata sull'HOWTO ufficiale
  +
  +
root@box:/service# groupadd dns
  +
root@box:/service# useradd -g dns -s /bin/false -d /dev/null dnscache
  +
root@box:/service# useradd -g dns -s /bin/false -d /dev/null dnslog
  +
  +
Adesso si può lanciare il dns cache server:
  +
dnscache-conf dnscache dnslog /usr/local/etc/dnscache
  +
  +
Questo crea la dir /usr/local/etc/dnscache in cui vengono depositati tutti i file necessari al funzionamento del cache server.
  +
  +
root@box:/usr/local/etc/dnscache# ls
  +
env/ log/ run* seed
  +
  +
Per poter far partire dns cache basta sfruttare daemontolls creando il link simbolico nella directory /service
  +
ln -s /usr/local/etc/dnscache /service
  +
  +
A questo punto possiamo provare una risoluzione dal nostro sistema
  +
  +
root@box:/usr/local/etc/dnscache/log/main# dig www.linux.it localhost
  +
; <<>> DiG 9.2.1 <<>> www.linux.it localhost
  +
;; QUESTION SECTION:
  +
;www.linux.it. IN A
  +
;; ANSWER SECTION:
  +
www.linux.it 85381 IN CANME picard.linux.it
  +
picard.linux.it 85381 IN A 62.177.1.107
  +
  +
oppure
  +
root@box:/usr/local/etc/dnscache/log/main# nslookup www.linux.it localhost
  +
Server: localhost
  +
Address: 127.0.0.1#53
  +
Non-authoritative answer:
  +
Name: www.linux.com
  +
Address 66.35.250.170
  +
  +
Il nostro dns cache server funziona regolarmente per la risoluzione dei nomi esterni e può essere impostato
  +
nel file resolv.conf del nostro host locale. In questo modo comincerà a funzionare come dns cache server vero e proprio.
  +
I log delle richieste dns possono essere analizzati nella directory '''/usr/local/etc/dnscache/log/main
  +
Il dns in questo modo è utilizzabile solo dal localhost, ma se volessimo aprire il servizio a host esterni, ad esempio ai client
  +
della rete locale, occore effettuare l'operazione di <<external cache for your network>>,
  +
come viene definita nella documentazione ufficiale consultabile su:
  +
http://cr.yp.to/djbdns/run-cache-x.html
  +
  +
L'operazione è simile alla precedente, occore solo avere l'indirizzo del network verso cui effettuare l'apertura e l'indirizzo IP
  +
del server, per cui avremo:
  +
dnscache-conf dnscache dnslog /usr/local/etc/dnscache_external 192.168.17.224
  +
In questo caso viene anche specificato l'indirizzo IP del dns cache server per la rete locale.
  +
Ovviamente per attivare il servizio occore creare il solito link simbolico:
  +
ln -s /usr/local/etc/dnscache_external /service
  +
Per ultimo occore abilitare le richieste dei client della rete per cui occore creare un file
  +
touch /usr/local/etc/dnscache_external/root/ip/192.168.17
  +
Nella directory ip era ovviamente presente solo il file 127.0.0.1 ora invece tutti gli host del network 192.168.17 possono
  +
effettuare richieste al server dns e sfruttarne appieno le potenzialità di risolutore.
  +
  +
  +
root@box:/usr/local/etc/dnscache/log/main# nslookup www.ibm.com 192.168.17.224
  +
Server: 192.168.17.224
  +
Address: 192.168.17.224#53
  +
Non-authoritative answer:
  +
Name: www.ibm.com
  +
Address 129.42.19.99
  +
Name: www.ibm.com
  +
Address 129.42.16.99
  +
Name: www.ibm.com
  +
Address 129.42.17.99
  +
Name: www.ibm.com
  +
Address 129.42.18.99
  +
= Installazione di Tinydns =
= Installazione di Tinydns =
= Note =
= Note =

Versione delle 22:25, 9 nov 2006

Indice

Introduzione

Mi è capitato di dover utilizzare su di sistema con distribuzione 9.0 Djbdns, programma alter alternativo al BIND scritto dal noto Daniel J. Bernstein. Mi sono un pò documentato e ho inizialmente pensato che gestire questo programma come dns server fosse complesso ( i DNS in genere lo sono, almeno per me!). In realtà la complessità di questo programma è dovuta alla poca documentazione e alla sua scarsa diffusione, ma in realtà il suo funzionamento è abbastanza semplice specie per chi ha dimestichezza con i programmi del noto Daniel J. Bernstein, come Qmail e daemontools ad esempio. E' vero, rispetto al Bind manca di molte features, e la sua licenza non è GPL (un limite non da poco), ma chi volesse utilizzarlo potrebbe puntare su di un aspetto non secondario, la sicurezza. Sul sito ufficiale trovate una pagina "The djbdns security guarantee" dove DJB offre in maniera esplicita 500$ a chi gli segnala dei bugs di sicurezza del programma, citto testualmente: http://cr.yp.to/djbdns/guarantee.html

"I offer $500 to the first person to publicly report a verifiable security hole in the latest version of djbdns."

Questo sembra essere un buon motivo, anche se in realtà credo che molto dipenda dalle abitudini e dalle necessità di chi attiva il servizio, il quale sceglie il programma che meglio conosce o che meglio si adatta alla situazione che deve affrontare. In realtà alla fine della configurazione, mi sono accorto che questo programma è abbastanza semplice (almeno per un uso standard) e molto leggero per il sistema, inoltre abbinandolo a daemontools abbiamo la sicurezza che in caso di caduta, il servizio venga rilanciato.

Un pò al pari di Qmail, altro prodotto famoso di DJB, djbdns si caratterizza per un'archetettura strutturale completamente diversa al BIND, che con un solo demone e alcuni file di configurazione fa tutto. Qui invece, come per lo stesso Qmail, abbiamo diversi programmi, ognuno per una funzione specifica. Prima di iniziare mi sono letto l'HOWTO pubblicato da Luca Morettoni

http://morettoni.net/docs/djbdns.html

indispensabile per capèirne il funzionamento, da cui ho tratto alcuni spunti per scrivere questo breve documento.

Il mio interesse era semplificare al minimo i passaggi e quindi la documentazione necessaria per arrivare a raggiungere il mio obbiettivo, ovvero quello di impostare un resolver per una rete locale che fosse anche autoritativo su di un dominio interno (zona). Autoritativo per una zona, come sappiamo, significa essere il responsabile della risoluzione finale degli host per quel dominio. Quindi il compito è duplice il primo forse più semplice del secondo, prevede un pò più di conoscenze teoriche sull'utilizzo dei DNS. Per far funzionare il tutto nella maniera più coretta, le risorse necessarie sono rappresentate da due pacchetti: djbdns e daemontools reperibili su http://cr.yp.to/djbdns.html http://cr.yp.to/daemontools.html

Daemontoools è necessario per l'avvio e la gestione del demone, consente di monitorarlo e di averlo sempre attivo. L'uso di daemontools è già descritto in questo breve documento che trovate su http://www.sistemistiindipendenti.org/modules/news/article.php?storyid=47

Installare daemontools

L'istallazione di daemontools è semplice dopo aver scompattato il pacchetto basta eseguire

root@box:/usr/src/admin/daemontools-0.76# ./package/install

In pratica daemontools fa partire in modalità "respawn" dall'inttab il programma svscanboot (per tutti i run level), il quale a sua volta esegue e controlla il programma svscan. Quest'ultimo analizza il contenuto della directory /service, che viene creata anch'essa sul sistema all'atto dell'installazione di daemontools, e grazie al programma supervise potrà controllare i processi che abbiamo deciso di monitorare e li rieseguirà nel caso in cui questi non dovessero più essere in esecuzione. Ovviamente il fatto di utilizzare l'inittab è legato al fatto che init il padre di tutti i processi, riavvia in automatico tutti i processi che sono sotto il suo diretto controllo

SV:123456:respawn:/command/svscanboot

Questo programma controlla ogni 5 secondi le directory (link simbolici alle directory radice dei programmi da monitorare) contenute in /service che contengono, a loro volta, i file di configurazione per eseguire i vari servizi. Appena svscan trova una nuova directory e quindi un nuovo servizio da gestire, svscan lancia un nuovo processo, supervice. Ogni demone supervice esegue il servizio cui è associato e lo fa ripartire nel caos in cui questo terminasse in modo imprevisto.

Installare Djbdns

L'installazione di djbdns non è complessa, ma al pari della sua configurazione, molto diversa dal bind.

cd /usr/src
tar zxvf djbdns-1.05.tar.gz
make - compila
make setup check - installa

Gli eseguibili vengono installati in /usr/local/bin

root@box:/service# which tinydns
/usrlocal/bin/tinydns
tinydns tinydns-conf tinydns-data tinydns-edit tinydns-get

L'uso del servizio si basa sostanzialmente su due di questi eseguibili:

  • dnscache: è un DNS cache server che consente la risoluzione di domini esterni effettuandone la cache sul sistema
  • tinydns: è il DNS vero e proprio con cui poter gestire le zone di un dominio.

Il nostro obbiettivo preveda come prima cosa l'installazione di un resolver (dns cache server) in grado di fornire il servizio per i client della rete locale. Per prima cosa abbiamo installato e configurato dnscache, il programma che nel pacchetto consente di abilitare questo servizio

Installazione di Dnscache

Per prima cosa creiamo sul sistema l'utente ed il gruppo con cui girerà il DNS cache server. Questa operazione è importante e viene descritta in maiera dettagliata sull'HOWTO ufficiale

root@box:/service# groupadd dns
root@box:/service# useradd -g dns -s /bin/false -d /dev/null dnscache
root@box:/service# useradd -g dns -s /bin/false -d /dev/null dnslog

Adesso si può lanciare il dns cache server:

dnscache-conf dnscache dnslog /usr/local/etc/dnscache

Questo crea la dir /usr/local/etc/dnscache in cui vengono depositati tutti i file necessari al funzionamento del cache server.

 root@box:/usr/local/etc/dnscache# ls
env/ log/ run* seed

Per poter far partire dns cache basta sfruttare daemontolls creando il link simbolico nella directory /service

ln -s /usr/local/etc/dnscache /service

A questo punto possiamo provare una risoluzione dal nostro sistema

root@box:/usr/local/etc/dnscache/log/main# dig www.linux.it localhost
; <<>> DiG 9.2.1 <<>> www.linux.it localhost
;; QUESTION SECTION:
;www.linux.it.		IN	A
;; ANSWER SECTION:
www.linux.it	85381   	IN	CANME picard.linux.it
picard.linux.it     85381	IN	A	62.177.1.107

oppure

root@box:/usr/local/etc/dnscache/log/main# nslookup www.linux.it localhost
Server:		localhost
Address: 	127.0.0.1#53
Non-authoritative answer:
Name: www.linux.com
Address 66.35.250.170

Il nostro dns cache server funziona regolarmente per la risoluzione dei nomi esterni e può essere impostato nel file resolv.conf del nostro host locale. In questo modo comincerà a funzionare come dns cache server vero e proprio. I log delle richieste dns possono essere analizzati nella directory /usr/local/etc/dnscache/log/main Il dns in questo modo è utilizzabile solo dal localhost, ma se volessimo aprire il servizio a host esterni, ad esempio ai client della rete locale, occore effettuare l'operazione di <<external cache for your network>>, come viene definita nella documentazione ufficiale consultabile su: http://cr.yp.to/djbdns/run-cache-x.html

L'operazione è simile alla precedente, occore solo avere l'indirizzo del network verso cui effettuare l'apertura e l'indirizzo IP del server, per cui avremo:

dnscache-conf dnscache dnslog /usr/local/etc/dnscache_external 192.168.17.224

In questo caso viene anche specificato l'indirizzo IP del dns cache server per la rete locale. Ovviamente per attivare il servizio occore creare il solito link simbolico:

ln -s /usr/local/etc/dnscache_external /service

Per ultimo occore abilitare le richieste dei client della rete per cui occore creare un file

touch /usr/local/etc/dnscache_external/root/ip/192.168.17

Nella directory ip era ovviamente presente solo il file 127.0.0.1 ora invece tutti gli host del network 192.168.17 possono effettuare richieste al server dns e sfruttarne appieno le potenzialità di risolutore.


root@box:/usr/local/etc/dnscache/log/main# nslookup www.ibm.com 192.168.17.224
Server:		192.168.17.224
Address: 	192.168.17.224#53
Non-authoritative answer:
Name: www.ibm.com
Address 129.42.19.99
Name: www.ibm.com
Address 129.42.16.99
Name: www.ibm.com
Address 129.42.17.99
Name: www.ibm.com
Address 129.42.18.99

Installazione di Tinydns

Note

Note finali

Strumenti personali
Namespace

Varianti