View Full Version : Bind 9, Split Horizont e Master/Slave
Massimo87
15-01-2008, 15:26
ciao a tutti,
oggi ho configurato con successo su bind9 uno split-horizont per suddividere il resolve del dominio interno in modo diverso da una query esterna..
e fin qui tutto OK, il problema però si pone quando devo fare il transfer delle zone sulla macchina slave :(
siccome il nome del dominio è replicato su due zone diverse (xxx.net sia su internal che esternal) quando il dns slave si sincronizza si prende la configurazione interna in modo giusto, ma quella esterna no!
questa è la configurazione del master
view "internal" {
match-clients { lan_hosts; };
recursion yes;
notify no;
zone "testdomain.net" in {
type master;
file "master/testdomain.net";
notify no;
allow-transfer { xx.xx.xx.xx; };
};
view "external" {
match-clients { !localnets; any; };
recursion no;
allow-transfer { xx.xx.xx.xx; };
zone "testdomain.net" in {
type master;
file "external/testdomain.net";
};
};
questa dello slave
view "internal" {
match-clients { lan_hosts; };
recursion yes;
notify no;
zone "testdomain.net" in {
type slave;
file "slave/testdomain.net";
masters { xx.xx.xx.xx; };
notify no;
};
view "external" {
match-clients { !localnets; any; };
recursion no;
zone "testdomain.net" in {
type slave;
file "external/testdomain.net";
masters { xx.xx.xx.xx; };
};
};
dove sbaglio? :(
grazie per qualsiasi info..
rizhwupgrade
15-01-2008, 15:41
Ciao,
perchè neghi la "localnets" nella vista "external" ?
match-clients { !localnets; any; };
Non funziona semplicemente usando
view "external"
match-clients { any; };
Cosi', in ogni caso, funziona:
view "internal" {
match-clients { localnets; };
recursion yes;
zone "dominio.it" {
type master;
file "dominio.it.internal";
allow-transfer { any; }; /* se non va bene any, usa l' ip */
};
};
view "external" {
match-clients { any; };
recursion no;
zone "dominio.it" {
type master;
file "dominio.it.external";
allow-transfer { xxx.xxx.xxx.xxx; }; /* oppure any, oppure none */
};
};
Per lo slave, piu' o meno il concetto è lo stesso:
view "internal" {
match-clients { localnets; };
recursion yes;
zone "dominio.it" {
type slave;
file "dominio.it.internal";
};
};
view "external" {
match-clients { any; };
recursion no;
zone "dominio.it" {
type slave;
file "dominio.it.external"
};
};
Altra cosa: nella view internal dello slave, hai due volte la direttiva "notify no" : una globale e una per il singolo dominio, non ha senso. O la specifichi dominio per dominio o la metti globale.
Ciao.
Massimo87
15-01-2008, 16:00
sull'external le reti locali non devono fare il resolve (dato che dentro ci sono ip pubblici)
cmq anche mettendo any non funziona, si prende sempre il file della parte interna :(
forse mi sono spiegato male prima.. il transfer di entrambi i file (int ed ext) avviene correttamente, è il contenuto del file ext che è sbagliato (è uguale a quello interno..) :muro:
rizhwupgrade
15-01-2008, 16:23
Ah ok, ora è chiaro :)
Allora cambia un pochino la cosa. Devi usare la direttiva transfer-source sullo slave, altrimenti diventano uguali per forza :)
Slave
view "internal" {
match-clients { localnets; };
recursion yes;
zone "dominio.it" {
type slave;
masters { 192.168.0.1; }; /* cambialo col tuo */
transfer-source 192.168.0.2; /* primo ip sorgente */
file "internal/dominio.it";
allow-transfer { any; };
};
};
view "external" {
match-clients { any; };
recursion no;
zone "dominio.it" {
type slave;
masters { 192.168.0.1; }; /* cambialo col tuo */
transfer-source 192.168.0.3; /* secondo ip sou */
file "external/dominio.it";
allow-transfer { none; };
};
};
E nel master, nega il 192.168.0.3 come avevi fatto giustamente prima:
view "internal" {
match-clients { !192.168.0.3; localnets; };
recursion yes;
zone "dominio.it" {
type master;
file "internal/dominio.it";
allow-transfer { any; };
};
};
right ?
Massimo87
15-01-2008, 16:54
interessante..
peccato che non si fili quella direttiva, quando fa le query al master, usa sempre il primo IP e non il secondo :(
rizhwupgrade
15-01-2008, 17:43
Quanti ip ha lo slave ?
Massimo87
15-01-2008, 18:05
Quanti ip ha lo slave ?
1 sulla eth0 e 3 alias
rizhwupgrade
15-01-2008, 18:25
Natuaralmente, gli ip virtuali li hai configurati sullo slave, giusto ?
In ogni caso, nella view "internal" dello slave, metti il fisico.
Nella view "external" dello slave, metti il virtuale.
E ricordati di modificare anche il master con la negazione dell' ip virtuale.
Cosi' deve funzionare.
Se non funziona ancora, iniziamo a vedere i log.
Ciao
Massimo87
17-01-2008, 14:16
ho fatto delle prove con il transfer-source ma senza successo :(
o meglio, se faccio un tcpdump sul DNS slave, noto che le query le manda con il source modificato, peccato che non arriva nessuna query al dns master, nemmeno un pacchetto.. e non c'è nessun firewall in mezzo :(
Massimo87
17-01-2008, 15:00
questa è la risposta del BIND slave
Jan 17 14:59:33 www2 /usr/sbin/named[28632]: refresh_callback: zone testdomain.net/IN: failure for 10.100.3.32#53: timed out
ovviamente è una cazzata, perchè sia l'IP che la porta sono aperte e perfettamente raggiungibili..
è il master che non mi si fila :(
rizhwupgrade
18-01-2008, 10:41
Dice poco e dice male (a quanto pare...)
Sul master, nessun log significativo ?
Prova a modificare il SOA di un dominio, a cancellare la zona sullo slave e restartare bind..
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.