Integrazione in Dnsmasq della risoluzione dei nomi da Samba4 per Active Directory

Questo matrimonio difficile si puo` consumare in piu` modi. Nello specifico:

Nota bene: Se si usa samba come resolver per i client, c'e` un problema. Quando il DHCP (dnsmasq) fornisce un ip dinamico ad un client, automaticamente imposta anche nel suo DNS interno i record A e PTR in modo che sia possibile risolvere l' ip assegnato dinamicamente con il nome del client DHCP (fornito dal client stesso al momento della richiesta DHCP). Se lasciamo che sia Samba il DNS per i client, allora i nomi NON VERRANNO RISOLTI perche` Samba non inoltra a dnsmasq nessuna richiesta per gli host che sono parte del dominio interno di samba, che tipicamente coincide con quello locale del DNS. Samba di per se` riceve dai client windows joinati al dominio la richiesta di aggiornamento della zona DNS, e quindi risolve correttamente i client windows associati al dominio, ma comunque non risolve qualsiasi altro host che sia client del DHCP ma che non sia un pc windows joinato al dominio. La soluzione piu` ovvia per evitare questo problema e` usare una configurazione in cui dnsmasq e` il resolver DNS per i client, e samba viene interrogata da dnsmasq quando serve.

Due macchine, Dnsmasq come resolver per i client che inoltra le richieste a Samba e/o al DNS upstream del provider

La configurazione semplice per integrare il DNS fornito da Samba 4 per AD dentro al sistema della risoluzione dei nomi e` quella che prevede che Dnsmasq (o altro resolver) sia l' upstream per Samba, e che i client facciano le richieste DNS a Samba. Questo pero` non mi piace, perche` sono un vecchio rompicoglioni che vuole sempre fare di testa sua.

La mia idea e` quella di lasciare Dnsmasq come DNS per i client, e istruirlo a comportarsi come segue:

Una configurazione adatta e` questa: (/etc/dnsmasq.conf)

# per integrare Samba AD (notare il punto all'inizio della stringa del dominio)
server=/.dominio.locale/10.66.1.10

E` importante che alcune impostazioni non siano definite, altrimenti Dnsmasq non inoltra le query al server Samba. Le opzioni che non devono essere usate sono:

local=/<dominio>/
filterwin2k
stop-dns-rebind 

Se si vuole usare stop-dns-rebind occorre consentire con "rebind-ok" la zona che inoltriamo a Samba.

Per fare un test, abilitare il log delle query e poi vedere se Dnsmasq inoltra correttamente a Samba le richieste fatte come indicato nella sezione "Test" della pagina ../ConfigAD

Notare che la risoluzione dovrebbe essere tentata anche dal file hosts locale, e nei log questo si vede quando si abilita il log delle query.

Due macchine, Samba come resolver per i client che inoltra le richieste a Dnsmasq il quale le inoltra al DNS upstream del provider

In questa configurazione, che e` parecchio semplice, Dnsmasq ha il ruolo di server DHCP (volendo) e di cache DNS. Samba ha il ruolo di DNS per la rete interna (i client usano Samba come DNS) e si appoggia a Dnsmasq.

In questo modo Samba rispondera` alle query a cui sa rispondere, e inoltrera` il resto a Dnsmasq. I client chiederanno a Samba di risolvere i nomi. Il limite di questa soluzione e` che se Samba ha problemi anche l'accesso a internet di fatto smette di funzionare, e che Samba e` molto limitata nella configurabilita` del DNS interno (dove "molto limitata" significa che NON C'E` ALCUNA CONFIGURAZIONE POSSIBILE).

Una sola macchina, Dnsmasq come resolver per i client che inoltra le richieste a Samba e/o al DNS upstream del provider

Qui la difficolta` e` che dobbiamo fare convivere Dnsmasq con Samba sulla stessa macchina. Come per il primo caso, Dnsmasq ha il ruolo di server DHCP (volendo) e di DNS per i client sulla rete interna, e inoltra a Samba le richieeste di risoluzione dei nomi che riguardano il funzionamento di AD.

Dato che i due convivono sulla stessa macchina, devo prima di tutto dare un alias alla scheda di rete della macchina che serve i client, in modo che Samba possa bindarsi a un alias e Dnsmasq all'altro alias. Non posso usare un paio di alias locali (127.0.0.x) perche` Dnsmasq, per fare da DHCP, deve potersi bindare alla scheda di rete sulla quale si trovano i client. Configuriamo quindi due alias:

Una sola macchina, Samba come resolver per i client che inoltra le richieste a Dnsmasq il quale le inoltra al DNS upstream del provider

Qui la difficolta` e` che dobbiamo fare convivere Dnsmasq con Samba sulla stessa macchina. Dnsmasq ha il ruolo di server DHCP (volendo) e di cache DNS. Samba ha il ruolo di DNS per la rete interna (i client usano Samba come DNS) e si appoggia a Dnsmasq.

Dato che i due convivono sulla stessa macchina, devo prima di tutto dare un alias alla scheda di rete della macchina che serve i client, in modo che Samba possa bindarsi a un alias e Dnsmasq all'altro alias. Non posso usare un paio di alias locali (127.0.0.x) perche` Dnsmasq, per fare da DHCP, deve potersi bindare alla scheda di rete sulla quale si trovano i client. Configuriamo quindi due alias:

Samba4/IntegrazioneSambaDnsmasq (last edited 2016-01-03 17:05:42 by Kurgan)