Differences

This shows you the differences between two versions of the page.

Link to this comparison view

bind_trabalhando_com_multi-view_master_slave_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalação e configuração do Bind Trabalhando com Views Master/​Slave no Debian Squeeze ======
  
 +
 +Configurando o DNS no Debian Squeeze com MultiView do mesmo domínio e fazendo replicação.
 +Problema: Quando era efetuado replicação e as zonas tinham o mesmo nome ele sempre replicava a zona da view interna ou o primeiro arquivo de referência dentro do named.conf.
 +
 +Solução dentro de cada View vamos forçar para quem tem que ser a replica e no slave receber a replica que foi forçada por View. Precisamos de 2 endereços ip para o servidor Slave.
 +  - IP do slave que vai receber a view interna: 10.0.0.27
 +  - IP do slave que vai receber a view externa: 10.0.0.28
 +  - IP do servidor master 10.0.0.25.
 +
 +Prepare o seu sistema com o seguinte script [[https://​github.com/​douglasqsantos/​easy-debian|Easy-Debian]] para que não falte nenhum pacote ou configuração.
 +
 +Vamos primeiro configurar o Servidor Master
 +
 +Instalando os pacotes
 +
 +<sxh bash>
 +
 +aptitude update
 +aptitude install bind9 dnsutils -y
 +</​sxh>​
 +
 +Agora vamos parar o nosso Bind para poder efetuar as modificações
 +
 +<sxh bash>
 +
 +/​etc/​init.d/​bind9 stop
 +</​sxh>​
 +
 +Agora vamos ter que criar a nossa jaula
 +<sxh bash>
 +
 +mkdir -p /​var/​lib/​named/​etc
 +mkdir -p /​var/​lib/​named/​dev
 +mkdir -p /​var/​lib/​named/​var/​log
 +mkdir -p /​var/​lib/​named/​var/​cache/​bind
 +mkdir -p /​var/​lib/​named/​var/​cache/​bind/​dynamic
 +mkdir -p /​var/​lib/​named/​var/​run/​bind/​run
 +mknod /​var/​lib/​named/​dev/​null c 1 3
 +mknod /​var/​lib/​named/​dev/​random c 1 8
 +mknod /​var/​lib/​named/​dev/​zero c 1 5
 +</​sxh>​
 +
 +Agora vamos ajustar as permissões
 +<sxh bash>
 +
 +chmod 666 /​var/​lib/​named/​dev/​{null,​random,​zero}
 +chown -R bind:bind /​var/​lib/​named/​var/​*
 +</​sxh>​
 +Agora vamos ajustar as configurações
 +<sxh bash>
 +
 +mv /etc/bind /​var/​lib/​named/​etc
 +ln -sf /​var/​lib/​named/​etc/​bind /etc/bind
 +cp /​etc/​localtime /​var/​lib/​named/​etc
 +chown -R bind:bind /​var/​lib/​named/​etc/​bind
 +chown -R root:bind /​var/​lib/​named/​var/​cache/​bind/​dynamic
 +chmod -R 775 /​var/​lib/​named/​var/​cache/​bind/​dynamic
 +</​sxh>​
 +
 +Agora vamos ajustar o arquivo de configuração do bind para ele reconhecer a jaula vamos editar o arquivo /​etc/​default/​bind9 ​
 +
 +<sxh bash>
 +
 +vim /​etc/​default/​bind9
 +RESOLVCONF=yes
 +OPTIONS="​-u bind -t /​var/​lib/​named"​
 +</​sxh>​
 +Agora vamos ajustar o /​etc/​resolv.conf o arquivo tem que ficar como abaixo
 +<sxh bash>
 +
 +vim /​etc/​resolv.conf
 +domain douglasqsantos
 +nameserver 127.0.0.1
 +</​sxh>​
 +Vamos acertar o arquivo /​etc/​bind/​named.conf.options deixe ele como abaixo eu estou definindo a minha rede interna como 10.0.0.0/23 mude ela conforme a necessidade
 +
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf.options
 +#/​etc/​bind/​named.conf.options
 +options {
 + ​directory "/​var/​cache/​bind";​
 + ​managed-keys-directory "/​var/​cache/​bind/​dynamic";​
 + ​auth-nxdomain no;
 + ​listen-on-v6 { any; };
 + ​listen-on { 127.0.0.1/​32;​ 10.0.0.0/​23;​ };
 + ​allow-query { any; };
 + ​recursion no;
 + ​version "Nao Disponivel";​
 +### DNSSEC ###
 +dnssec-enable no;
 +dnssec-validation no;
 +dnssec-lookaside auto;
 +};
 +
 +#​Controles ​
 +include "/​etc/​bind/​rndc.key";​
 +controls {
 +        inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; };
 +};
 +
 +#LOGS
 +logging {
 + ​channel xfer-log {
 + file "/​var/​log/​named.log";​
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time yes;
 + ​severity info;
 + };
 + ​category xfer-in { xfer-log; };
 + ​category xfer-out { xfer-log; };
 + ​category notify { xfer-log; };
 +
 + ​channel update-debug {
 + file "/​var/​log/​named-update-debug.log";​
 + ​severity ​ debug 3;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​channel security-info ​   {
 + file "/​var/​log/​named-auth-info.log";​
 + ​severity ​ info;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​category update { update-debug;​ };
 + ​category security { security-info;​ };
 + };
 +
 +#Controle de ancoras de DNSSEC
 +include "/​etc/​bind/​bind.keys";​
 +</​sxh>​
 +
 +Agora vamos acertar o nosso arquivo /​etc/​bind/​named.conf deixe ele como abaixo
 +
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf
 +include "/​etc/​bind/​named.conf.options";​
 +include "/​etc/​bind/​named.conf.local";​
 +include "/​etc/​bind/​named.conf.internal-zones";​
 +include "/​etc/​bind/​named.conf.external-zones";​
 +</​sxh>​
 +
 +Agora vamos configurar a nossa view interna o arquivo /​etc/​bind/​named.conf.internal-zones como já comentado estou utilizando a rede 10.0.0.0/23 para a minha rede interna mude conforme a necessidade. ​
 +
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf.internal-zones
 +#Definindo quem vão ser os nossos hosts internos, ex: a nossa rede e a maquina local
 +acl "​internal_hosts"​ {
 + ​10.0.0.0/​23;​
 + ​127.0.0.1/​32;​
 +};
 +
 +#Definindo qual vai ser o ip do servidor slave que vai poder receber a replicação da view internal
 +acl "​internal_slave"​ {
 + ​10.0.0.27;​
 +};
 +
 +#​Definição da View interna
 +view "​internal"​ {
 +
 +#Definindo quais clientes vão poder consultar essa view
 + ​match-clients {
 + ​!10.0.0.28;​
 + ​internal_hosts;​
 + };
 +
 +#O nossos clientes da view interna vão poder efetuar consultas recursivas
 + ​recursion yes;
 +
 +#Para qual servidor vai ser liberado a transferencia dessa view.
 + ​allow-transfer {
 + ​internal_slave;​
 + };
 +
 +#Quem o bind vai notificar em caso de alterações de zona.
 + ​also-notify {
 + ​10.0.0.27;​
 + };
 +
 +#Zonas hint aonde temos as definições dos root masters
 + zone "​."​ {
 + type hint;
 + file "/​etc/​bind/​db.root";​
 + };
 +
 +#Zonas internas
 + zone "​localhost"​ {
 + type master;
 + file "/​etc/​bind/​db.local";​
 + };
 +
 +zone "​127.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.127";​
 + };
 +
 + zone "​0.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.0";​
 + };
 +
 + zone "​255.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.255";​
 + };
 +
 +#Meu dominio de teste.
 + zone "​douglasqsantos"​ {
 + type master;
 + file "​db.douglasqsantos.internal";​
 + };
 +
 +};
 +</​sxh>​
 +
 +Agora vamos configurar a View Externa /​etc/​bind/​named.conf.external-zones
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf.external-zones
 +#Definindo os clientes locais o nome dessa acl tem que ser diferente da acl da view interna
 +acl "​rede_local"​ {
 + ​10.0.0.0/​23;​
 + ​127.0.0.1/​32;​
 +};
 +
 +#Defindo o ip do servidor slave para a view externa
 +acl "​external_slave"​ {
 + ​10.0.0.28;​
 +};
 +
 +#​Definição da View externa
 +view "​external"​ {
 +
 + #​Definição dos clientes que vão poder consultar essa view
 + ​match-clients {
 + ​external_slave;​
 + ​!rede_local;​
 + any;
 + };
 +
 + #Os clientes dessa view não vão poder efetuar consultas recursivas
 + ​recursion no;
 +
 + #Para qual servidor vai ser liberada a transferencia dessa view
 + ​allow-transfer {
 + ​external_slave;​
 + };
 +
 + #Quem o bind vai notificar quando for efetuada alguma alteração nas zonas
 + ​also-notify {
 + ​10.0.0.28;​
 + };
 +
 + #A minha zona de teste.
 + zone "​douglasqsantos"​ {
 + type master;
 + file "​db.douglasqsantos.external";​
 + };
 +};
 +</​sxh>​
 +
 +Vamos agora criar os arquivos das zonas /​var/​lib/​named/​var/​cache/​bind/​db.douglasqsantos.internal
 +<sxh dns>
 +
 +vim /​var/​lib/​named/​var/​cache/​bind/​db.douglasqsantos.internal
 +$TTL 86400
 +@ IN SOA  dns.douglasqsantos. root.dns.douglasqsantos. (
 + ​2011061703 ​ ; Serial
 + ​3600 ​      ; Refresh
 + ​1800 ​       ; Retry
 + ​1209600 ​     ; Expire
 + 3600 )     ; Minimum
 +
 +;
 +@               ​IN ​     NS   ​douglasqsantos.
 +douglasqsantos. IN TXT "​v=spf1 a mx ip4:​10.0.0.0/​23 -all"
 +mail.douglasqsantos IN TXT "​v=spf1 a -all"
 +
 +@               ​IN ​     NS   ​ns1.douglasqsantos.
 +@               ​IN ​     NS   ​ns2.douglasqsantos.
 +@               ​IN ​     MX   0 mail.douglasqsantos.
 +
 +;NAME SERVERS
 +@               ​IN ​     A    10.0.0.25
 +ns1             ​IN ​     A    10.0.0.25
 +ns2             ​IN ​     A    10.0.0.27
 +dns             ​IN ​     A    10.0.0.25
 +
 +;MAIL SERVERS
 +mail            IN      A    10.0.0.25
 +imap            IN      CNAME mail
 +pop             ​IN ​     CNAME mail
 +smtp            IN      CNAME mail
 +webmail ​        ​IN ​     CNAME mail
 +
 +;WEB SERVERS
 +www             ​IN ​     A    10.0.0.27
 +ftp             ​IN ​     CNAME www
 +mailadmin ​      ​IN ​     CNAME www
 +</​sxh>​
 +
 +Agora vamos configurar o arquivo da view externa /​var/​lib/​named/​var/​cache/​bind/​db.douglasqsantos.external
 +<sxh dns>
 +
 +vim /​var/​lib/​named/​var/​cache/​bind/​db.douglasqsantos.external
 +$TTL 86400
 +@ IN SOA  dns.douglasqsantos. root.dns.douglasqsantos. (
 + ​2011061703 ​ ; Serial
 + ​3600 ​      ; Refresh
 + ​1800 ​       ; Retry
 + ​1209600 ​     ; Expire
 + 3600 )     ; Minimum
 +
 +;
 +@               ​IN ​     NS   ​douglasqsantos.
 +douglasqsantos. IN TXT "​v=spf1 a mx ip4:​200.200.200.0/​23 -all"
 +mail.douglasqsantos IN TXT "​v=spf1 a -all"
 +
 +@               ​IN ​     NS   ​ns1.douglasqsantos.
 +@               ​IN ​     NS   ​ns2.douglasqsantos.
 +@               ​IN ​     MX   0 mail.douglasqsantos.
 +
 +;NAME SERVERS
 +@               ​IN ​     A    200.200.200.25
 +ns1             ​IN ​     A    200.200.200.25
 +ns2             ​IN ​     A    200.200.200.27
 +dns             ​IN ​     A    200.200.200.25
 +
 +;MAIL SERVERS
 +mail            IN      A    200.200.200.25
 +imap            IN      CNAME mail
 +pop             ​IN ​     CNAME mail
 +smtp            IN      CNAME mail
 +webmail ​        ​IN ​     CNAME mail
 +
 +;WEB SERVERS
 +www             ​IN ​     A    200.200.200.27
 +ftp             ​IN ​     CNAME www
 +mailadmin ​      ​IN ​     CNAME www
 +</​sxh>​
 +
 +
 +Agora já podemos reiniciar o nosso bind
 +<sxh bash>
 +
 +/​etc/​init.d/​bind9 restart
 +</​sxh>​
 +Vamos dar uma olhada nos logs
 +<sxh bash>
 +
 +tail -f /​var/​log/​syslog
 +Jun 17 15:46:28 dns1 named[1834]:​ zone douglasqsantos/​IN/​external:​ loaded serial 2011061703
 +Jun 17 15:46:28 dns1 named[1834]:​ managed-keys-zone ./​IN/​external:​ loading from master file 3c4623849a49a53911c4a3e48d8cead8a1858960bccdea7a1b978d73ec2f06d7.mkeys failed: file not found
 +Jun 17 15:46:28 dns1 named[1834]:​ managed-keys-zone ./​IN/​external:​ loaded serial 0
 +Jun 17 15:46:28 dns1 named[1834]:​ running
 +Jun 17 15:46:28 dns1 named[1834]:​ zone 0.in-addr.arpa/​IN/​internal:​ sending notifies (serial 1)
 +Jun 17 15:46:28 dns1 named[1834]:​ zone localhost/​IN/​internal:​ sending notifies (serial 2)
 +Jun 17 15:46:28 dns1 named[1834]:​ zone 127.in-addr.arpa/​IN/​internal:​ sending notifies (serial 1)
 +Jun 17 15:46:28 dns1 named[1834]:​ zone 255.in-addr.arpa/​IN/​internal:​ sending notifies (serial 1)
 +Jun 17 15:46:28 dns1 named[1834]:​ zone douglasqsantos/​IN/​internal:​ sending notifies (serial 2011061703)
 +Jun 17 15:46:28 dns1 named[1834]:​ zone douglasqsantos/​IN/​external:​ sending notifies (serial 2011061703)
 +</​sxh>​
 +
 +Como pode ser notado acima está faltando um arquivo por enquanto porém ele não existia quando iniciamos o bind, após iniciar o bind que este arquivo vai ser gerado podemos visualizar os arquivos em
 +<sxh bash>
 +
 +ls /​var/​lib/​named/​var/​cache/​bind/​dynamic
 +3bed2cb3a3acf7b6a8ef408420cc682d5520e26976d354254f528c965612054f.mkeys ​     3c4623849a49a53911c4a3e48d8cead8a1858960bccdea7a1b978d73ec2f06d7.mkeys
 +3bed2cb3a3acf7b6a8ef408420cc682d5520e26976d354254f528c965612054f.mkeys.jnl ​ 3c4623849a49a53911c4a3e48d8cead8a1858960bccdea7a1b978d73ec2f06d7.mkeys.jnl
 +</​sxh>​
 +
 +Caso esteja trabalhando com somente uma view que é a default vamos ter o arquivo managed-keys.bind e para cada nova view vai ser acrescentado um novo arquivo *.mkeys
 +
 +Caso os arquivo *.mkyes já estejam criados no diretório /​var/​lib/​named/​var/​cache/​bind/​dynamic podemos mandar reiniciar novamente o bind para ele carregar estes arquivo
 +<sxh bash>
 +
 +/​etc/​init.d/​bind9 restart
 +</​sxh>​
 +
 +Após reiniciar podemos acompanhar nos logs
 +<sxh bash>
 +
 +tail -f /​var/​log/​syslog
 +Jun 17 15:48:28 dns1 named[9583]:​ set up managed keys zone for view internal, file '/​var/​cache/​bind/​dynamic/​3bed2cb3a3acf7b6a8ef408420cc682d5520e26976d354254f528c965612054f.mkeys'​
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: 254.169.IN-ADDR.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: 2.0.192.IN-ADDR.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: 100.51.198.IN-ADDR.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: 113.0.203.IN-ADDR.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: 255.255.255.255.IN-ADDR.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: D.F.IP6.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: 8.E.F.IP6.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: 9.E.F.IP6.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: A.E.F.IP6.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: B.E.F.IP6.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ automatic empty zone: view internal: 8.B.D.0.1.0.0.2.IP6.ARPA
 +Jun 17 15:48:28 dns1 named[9583]:​ set up managed keys zone for view external, file '/​var/​cache/​bind/​dynamic/​3c4623849a49a53911c4a3e48d8cead8a1858960bccdea7a1b978d73ec2f06d7.mkeys'​
 +</​sxh>​
 +
 +Vamos efetuar alguns teste de consultas
 +
 +Vamos consultar o registro www do domínio douglasqsantos
 +<sxh bash>
 +
 +nslookup www
 +Server: ​        ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 +
 +Name:   ​www.douglasqsantos
 +Address: 10.0.0.27
 +</​sxh>​
 +Vamos agora consultar o registro ns1.douglasqsantos
 +<sxh bash>
 +
 +nslookup ns1.douglasqsantos
 +Server: ​        ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 +
 +Name:   ​ns1.douglasqsantos
 +Address: 10.0.0.25
 +</​sxh>​
 +
 +====== Configuração do Servidor Slave ======
 +
 +Instalando os pacotes
 +<sxh bash>
 +
 +aptitude update
 +aptitude install bind9 dnsutils -y
 +</​sxh>​
 +
 +Agora vamos parar o nosso Bind para poder efetuar as modificações
 +<sxh bash>
 +
 +/​etc/​init.d/​bind9 stop
 +</​sxh>​
 +
 +Agora vamos ter que criar a nossa jaula
 +<sxh bash>
 +
 +mkdir -p /​var/​lib/​named/​etc
 +mkdir -p /​var/​lib/​named/​dev
 +mkdir -p /​var/​lib/​named/​var/​log
 +mkdir -p /​var/​lib/​named/​var/​cache/​bind
 +mkdir -p /​var/​lib/​named/​var/​cache/​bind/​slave
 +mkdir -p /​var/​lib/​named/​var/​cache/​bind/​dynamic
 +mkdir -p /​var/​lib/​named/​var/​run/​bind/​run
 +mknod /​var/​lib/​named/​dev/​null c 1 3
 +mknod /​var/​lib/​named/​dev/​random c 1 8
 +mknod /​var/​lib/​named/​dev/​zero c 1 5
 +</​sxh>​
 +
 +Agora vamos ajustar as permissões
 +<sxh bash>
 +
 +chmod 666 /​var/​lib/​named/​dev/​{null,​random,​zero}
 +chown -R bind:bind /​var/​lib/​named/​var/​*
 +</​sxh>​
 +
 +Agora vamos ajustar as configurações
 +<sxh bash>
 +
 +mv /etc/bind /​var/​lib/​named/​etc
 +ln -sf /​var/​lib/​named/​etc/​bind /etc/bind
 +cp /​etc/​localtime /​var/​lib/​named/​etc
 +chown -R bind:bind /​var/​lib/​named/​etc/​bind
 +chown -R root:bind /​var/​lib/​named/​var/​cache/​bind/​dynamic
 +chmod -R 775 /​var/​lib/​named/​var/​cache/​bind/​dynamic
 +</​sxh>​
 +
 +Agora vamos ajustar o arquivo /​etc/​default/​bind9 de configuração do bind para ele reconhecer a jaula
 +<sxh bash>
 +
 +vim /​etc/​default/​bind9
 +RESOLVCONF=yes
 +OPTIONS="​-u bind -t /​var/​lib/​named"​
 +</​sxh>​
 +Agora vamos ajustar o /​etc/​resolv.conf o arquivo tem que ficar como abaixo
 +<sxh bash>
 +
 +vim /​etc/​resolv.conf
 +domain douglasqsantos
 +nameserver 127.0.0.1
 +</​sxh>​
 +Vamos acertar o arquivo /​etc/​bind/​named.conf.options deixe ele como abaixo eu estou definindo a minha rede interna como 10.0.0.0/23 mude ela conforme a necessidade
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf.options
 +#/​etc/​bind/​named.conf.options
 +options {
 + ​directory "/​var/​cache/​bind";​
 + ​managed-keys-directory "/​var/​cache/​bind/​dynamic";​
 + ​auth-nxdomain no;
 + ​listen-on-v6 { any; };
 + ​listen-on { 127.0.0.1/​32;​ 10.0.0.0/​23;​ };
 + ​allow-query { any; };
 + ​recursion no;
 + ​version "Nao Disponivel";​
 +### DNSSEC ###
 +dnssec-enable no;
 +dnssec-validation no;
 +dnssec-lookaside auto;
 +};
 +
 +#​Controles ​
 +include "/​etc/​bind/​rndc.key";​
 +controls {
 +        inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; };
 +};
 +
 +#LOGS
 +logging {
 + ​channel xfer-log {
 + file "/​var/​log/​named.log";​
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time yes;
 + ​severity info;
 + };
 + ​category xfer-in { xfer-log; };
 + ​category xfer-out { xfer-log; };
 + ​category notify { xfer-log; };
 +
 + ​channel update-debug {
 + file "/​var/​log/​named-update-debug.log";​
 + ​severity ​ debug 3;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​channel security-info ​   {
 + file "/​var/​log/​named-auth-info.log";​
 + ​severity ​ info;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​category update { update-debug;​ };
 + ​category security { security-info;​ };
 + };
 +
 +#Controle de ancoras de DNSSEC
 +include "/​etc/​bind/​bind.keys";​
 +</​sxh>​
 +
 +Agora vamos acertar o nosso arquivo /​etc/​bind/​named.conf deixe ele como abaixo
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf
 +#/​etc/​bind/​named.conf
 +include "/​etc/​bind/​named.conf.options";​
 +include "/​etc/​bind/​named.conf.local";​
 +include "/​etc/​bind/​named.conf.internal-zones";​
 +include "/​etc/​bind/​named.conf.external-zones";​
 +</​sxh>​
 +Agora vamos configurar a nossa view interna /​etc/​bind/​named.conf.internal-zones como já comentado estou utilizando a rede 10.0.0.0/23 para a minha rede interna mude conforme a necessidade.
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf.internal-zones
 +#Vamos definir quem é o nosso servidor master
 +acl "​dns_masters"​ {
 + ​10.0.0.25;​
 +};
 +
 +#Vamos definir quais são os nossos hosts internos
 +acl "​internal_hosts"​ {
 + ​10.0.0.0/​23;​
 + ​127.0.0.0/​32;​
 +};
 +
 +#Vamos definir a nossa view interna
 +view "​internal"​ {
 +
 + #​Vamos definir quais são os clientes dessa view
 + ​match-clients {
 + ​internal_hosts;​
 + };
 +
 + #Os clientes dessa view vão poder efetuar consultas recursvas
 + ​recursion yes;
 +
 + #​Quais os servidores que vão ser noficados caso ocorra alterações nas zonas.
 + ​allow-notify {
 + ​dns_masters;​
 + };
 +
 + #Nao disponibiliza transferencia de zona do servidor SLAVE
 + ​allow-transfer {
 + none;
 + };
 +
 +
 + #Zona que define os root masters
 + zone "​."​ {
 + type hint;
 + file "/​etc/​bind/​db.root";​
 + };
 +
 + #​Zonas locais
 + zone "​localhost"​ {
 + type master;
 + file "/​etc/​bind/​db.local";​
 + };
 +
 + zone "​127.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.127";​
 + };
 +
 +zone "​0.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.0";​
 + };
 +
 + zone "​255.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.255";​
 + };
 +
 + #​Minha zona teste que vai ser replicada do servidor master na view interna.
 + zone "​douglasqsantos"​ {
 + type slave;
 + ​masters { 10.0.0.25; }; #Ip do nosso servidor master
 + ​transfer-source ​ 10.0.0.27; #​Especificando qual transferencia do master que eu vou poder receber nessa view
 + file "​slave/​db.douglasqsantos.internal";​
 + };
 +};
 +</​sxh>​
 +Agora vamos configurar a view externa /​etc/​bind/​named.conf.external-zones ​
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf.external-zones
 +#Definindo qual vai ser o nosso servidor master não esquecendo que o nome dessa acl não pode ser o mesmo da acl internal
 +acl "​master"​ {
 + ​10.0.0.25;​
 +};
 +
 +#Definindo os nossos hosts locais
 +acl "​rede_local"​ {
 + ​10.0.0.0/​23;​
 + ​127.0.0.1/​32;​
 +};
 +
 +#​Definição da nossa view externa
 +view "​external"​ {
 +
 + #​Definindo quais os clientes que podem efetuar consultas nessa view e quais não podem
 + # o simbolo ''​ define que é uma negação então a rede local não pode pesquisar nessa view
 + ​match-clients {
 + ​!rede_local;​
 + any;
 + };
 +
 + #Os clientes dessa zona não podem efetuar consultas recursivas
 + ​recursion no;
 +
 + #Quem vai receber notificações de modificações dessa zona 
 + ​allow-notify {
 + ​master;​
 + };
 + 
 + #Nao disponibiliza transferencia de zona do servidor SLAVE
 + ​allow-transfer {
 + none;
 + };
 +
 + #​Minha zona teste que vai ser replicada do servidor master na view externa.
 + zone "​douglasqsantos"​ {
 + type slave;
 + ​masters { 10.0.0.25; }; #Definindo quem é o nosso servidor master
 + ​transfer-source 10.0.0.28; #​Especificando qual transferencia do master que eu vou poder receber nessa view
 + file "​slave/​db.douglasqsantos.external";​
 + };
 +
 +};
 +</​sxh>​
 +
 +Agora já podemos reiniciar o nosso bind
 +<sxh bash>
 +
 +/​etc/​init.d/​bind9 restart
 +</​sxh>​
 +
 +Vamos dar uma olhada nos logs
 +<sxh bash>
 +
 +tail -f /​var/​log/​syslog
 +Jun 17 16:26:56 dns2 named[1643]:​ zone douglasqsantos/​IN/​internal:​ Transfer started.
 +Jun 17 16:26:56 dns2 named[1643]:​ transfer of '​douglasqsantos/​IN/​internal'​ from 10.0.0.25#​53:​ connected using 10.0.0.27#​36763
 +Jun 17 16:26:56 dns2 named[1643]:​ zone douglasqsantos/​IN/​internal:​ transferred serial 2011061703
 +Jun 17 16:26:56 dns2 named[1643]:​ transfer of '​douglasqsantos/​IN/​internal'​ from 10.0.0.25#​53:​ Transfer completed: 1 messages, 20 records, 489 bytes, 0.001 secs (489000 bytes/sec)
 +Jun 17 16:26:56 dns2 named[1643]:​ zone douglasqsantos/​IN/​internal:​ sending notifies (serial 2011061703)
 +Jun 17 16:26:56 dns2 named[1643]:​ zone douglasqsantos/​IN/​external:​ Transfer started.
 +Jun 17 16:26:56 dns2 named[1643]:​ transfer of '​douglasqsantos/​IN/​external'​ from 10.0.0.25#​53:​ connected using 10.0.0.28#​54526
 +Jun 17 16:26:56 dns2 named[1643]:​ zone douglasqsantos/​IN/​external:​ transferred serial 2011061703
 +Jun 17 16:26:56 dns2 named[1643]:​ transfer of '​douglasqsantos/​IN/​external'​ from 10.0.0.25#​53:​ Transfer completed: 1 messages, 20 records, 494 bytes, 0.002 secs (247000 bytes/sec)
 +Jun 17 16:26:56 dns2 named[1643]:​ zone douglasqsantos/​IN/​external:​ sending notifies (serial 2011061703)
 +</​sxh>​
 +Como pode ser notado esta tudo ok
 +
 +Em caso de problemas com chaves mkeys como ex:
 +<sxh bash>
 +
 +Sep 27 10:16:12 ldap named[9710]:​ managed-keys-zone ./​IN/​internal:​ loading from master file /​var/​cache/​bind/​dynamic/​3bed2cb3a3acf7b6a8ef408420cc682d5520e26976d354254f528c965612054f.mkeys failed: file not found
 +Sep 27 10:16:12 ldap named[9710]:​ managed-keys-zone ./​IN/​internal:​ loaded serial 0
 +Sep 27 10:16:12 ldap named[9710]:​ zone douglasqsantos/​IN/​external:​ loaded serial 2011061703
 +Sep 27 10:16:12 ldap named[9710]:​ managed-keys-zone ./​IN/​external:​ loading from master file /​var/​cache/​bind/​dynamic/​3c4623849a49a53911c4a3e48d8cead8a1858960bccdea7a1b978d73ec2f06d7.mkeys failed: file not found
 +</​sxh>​
 +
 +Como pode ser notado acima está faltando dois arquivo por enquanto porém ele não existia quando iniciamos o bind, após iniciar o bind que este arquivo vai ser gerado podemos visualizar os arquivos em
 +<sxh bash>
 +
 +ls /​var/​lib/​named/​var/​cache/​bind/​dynamic
 +3bed2cb3a3acf7b6a8ef408420cc682d5520e26976d354254f528c965612054f.mkeys ​     3c4623849a49a53911c4a3e48d8cead8a1858960bccdea7a1b978d73ec2f06d7.mkeys
 +3bed2cb3a3acf7b6a8ef408420cc682d5520e26976d354254f528c965612054f.mkeys.jnl ​ 3c4623849a49a53911c4a3e48d8cead8a1858960bccdea7a1b978d73ec2f06d7.mkeys.jnl
 +</​sxh>​
 +
 +Caso esteja trabalhando com somente uma view que é a default vamos ter o arquivo managed-keys.bind e para cada nova view vai ser acrescentado um novo arquivo *.mkeys
 +
 +Caso os arquivo *.mkyes já estejam criados no diretório /​var/​lib/​named/​var/​cache/​bind/​dynamic podemos mandar reiniciar novamente o bind para ele carregar estes arquivo
 +<sxh bash>
 +
 +/​etc/​init.d/​bind9 restart
 +</​sxh>​
 +
 +
 +Vamos agorar verificar se os arquivos estão certos temos que ter um com os endereçõs de ip 10.0.0.x e outro com 200.200.200.x
 +<sxh bash>
 +
 +cat /​var/​lib/​named/​var/​cache/​bind/​slave/​db.douglasqsantos.internal
 +$ORIGIN .
 +$TTL 86400      ; 1 day
 +douglasqsantos ​            IN SOA  dns.douglasqsantos. root.dns.douglasqsantos. (
 + ​2011061703 ; serial
 + ​3600 ​      ; refresh (1 hour)
 + ​1800 ​      ; retry (30 minutes)
 + ​1209600 ​   ; expire (2 weeks)
 + ​3600 ​      ; minimum (1 hour)
 + )
 + ​NS ​     ns1.douglasqsantos.
 + ​NS ​     ns2.douglasqsantos.
 + ​NS ​     douglasqsantos.
 + ​A ​      ​10.0.0.25
 + ​MX ​     0 mail.douglasqsantos.
 + ​TXT ​    "​v=spf1 a mx ip4:​10.0.0.0/​23 -all"
 +$ORIGIN douglasqsantos.
 +dns                     ​A ​      ​10.0.0.25
 +ftp                     ​CNAME ​  www
 +imap                    CNAME   mail
 +mail.douglasqsantos ​       TXT     "​v=spf1 a -all"
 +mail                    A       ​10.0.0.25
 +mailadmin ​              ​CNAME ​  www
 +ns1                     ​A ​      ​10.0.0.25
 +ns2                     ​A ​      ​10.0.0.27
 +pop                     ​CNAME ​  mail
 +smtp                    CNAME   mail
 +webmail ​                ​CNAME ​  mail
 +www                     ​A ​      ​10.0.0.27
 +</​sxh>​
 +Agora vamos consultar o outro arquivo
 +<sxh bash>
 +
 +cat /​var/​lib/​named/​var/​cache/​bind/​slave/​db.douglasqsantos.external
 +$ORIGIN .
 +$TTL 86400      ; 1 day
 +douglasqsantos ​            IN SOA  dns.douglasqsantos. root.dns.douglasqsantos. (
 + ​2011061703 ; serial
 + ​3600 ​      ; refresh (1 hour)
 + ​1800 ​      ; retry (30 minutes)
 + ​1209600 ​   ; expire (2 weeks)
 + ​3600 ​      ; minimum (1 hour)
 + )
 + ​NS ​     ns1.douglasqsantos.
 + ​NS ​     ns2.douglasqsantos.
 + ​NS ​     douglasqsantos.
 + ​A ​      ​200.200.200.25
 + ​MX ​     0 mail.douglasqsantos.
 + ​TXT ​    "​v=spf1 a mx ip4:​200.200.200.0/​23 -all"
 +$ORIGIN douglasqsantos.
 +dns                     ​A ​      ​200.200.200.25
 +ftp                     ​CNAME ​  www
 +imap                    CNAME   mail
 +mail.douglasqsantos ​       TXT     "​v=spf1 a -all"
 +mail                    A       ​200.200.200.25
 +mailadmin ​              ​CNAME ​  www
 +ns1                     ​A ​      ​200.200.200.25
 +ns2                     ​A ​      ​200.200.200.27
 +pop                     ​CNAME ​  mail
 +smtp                    CNAME   mail
 +webmail ​                ​CNAME ​  mail
 +www                     ​A ​      ​200.200.200.27
 +</​sxh>​
 +Vamos efetuar alguns teste de consultas
 +
 +Vamos consultar o registro www do domínio douglasqsantos
 +<sxh bash>
 +
 +nslookup www
 +Server: ​        ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 +
 +Name:   ​www.douglasqsantos
 +Address: 10.0.0.27
 +</​sxh>​
 +Vamos consultar o registro ns1.douglasqsantos
 +<sxh bash>
 +
 +nslookup ns1.douglasqsantos
 +Server: ​        ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 +
 +Name:   ​ns1.douglasqsantos
 +Address: 10.0.0.25
 +</​sxh>​
 +
 +** Tipo de erro abaixo as vezes o bind se perde então temos que mudar o /​etc/​resolv.conf de 127.0.0.1 para o ip do servidor ex: 10.0.0.28 **
 +<sxh bash>
 +
 +nslookup www.terra.com.br
 +Server: ​  ​127.0.0.1
 +Address: ​ 127.0.0.1#​53
 +
 +** server can't find www.terra.com.br.douglasqsantos:​ REFUSED
 +</​sxh>​
 +
 +Agora uma consultar com o resolv.conf mudado ​
 +<sxh bash>
 +
 +nslookup www.terra.com.br
 +Server: ​  ​10.0.0.28
 +Address: ​ 10.0.0.28#​53
 +
 +Non-authoritative answer:
 +Name: www.terra.com.br
 +Address: 200.154.56.80
 +</​sxh>​
 +
 +====== Referências ======
 +
 +  - http://​www.isc.org/​software/​bind
 +  - http://​www.isc.org/​software/​bind/​history
 +  - http://​www.isc.org/​software/​bind/​whatis
 +  - http://​www.isc.org/​software/​bind/​versions
 +  - http://​ftp.isc.org/​isc/​bind9/​
 +  - http://​www.isc.org/​software/​bind/​documentation