Un resolving dns server "puro" fa da solo tutte le queries necessarie per risolvere un nome. Es: se chiedo ad un resolving dns server di risolvermi
http://www.pc-facile.com, lui andrà prima a cercarsi un server
root dal quale otterrà l'indirizzo di un server di riferimento per i domini .com; a quest'ultimo chiederà chi è il riferimento per il dominio pc-facile.com, che a sua volta fornirà l'indirizzo della macchina
http://www.pc-facile.com
Altrimenti si può impostare un proxy dns, che di fatto non fa altro che inoltrare tutte le richieste ricevute dai client ad un resolving server "puro" (es. il dns del tuo provider) che provvederà a risolverle.
La cache dns è utilizzata sia dal resolving server che dal proxy dns, consiste semplicemente nel riproporre ai clients i risultati di queries già effettuate di recente senza ricercarli di nuovo (il che richiede tempo, anche qualche secondo).
In una sitazione analoga a quella di Luva io ho messo su un proxy dns con
bind, che è l'implementazione di server dns più utilizzata in assoluto in rete, ed è open source. Con diverse impostazioni di bind puoi ottenere un resolving server "puro" oppure un proxy.
Ti consiglierei l'utilizzo di un proxy: un server che faccia ogni volta da solo tutte le queries ricorsive può risultare molto lento agli utenti, laddove invece i dns dei provider offrono prestazioni assai migliori perché hanno molti risultati già in cache in virtù delle numerose richieste che ricevono.
Comunque è il caso di notare che se non hai altre esigenze (es. di utilizzare nomi a dominio locali,
non "fully qualified", per le macchie locali), forse ti conviene lasciar perdere e impostare semplicemente che ogni client utilizzi il dns del tuo provider. Meno rogne e prestazioni uguali se non migliori.