Differences

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

Link to this comparison view

bind_trabalhando_com_multi-view_master_slave_openbsd_5.2_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 OpenBSD 5.2 ======
  
 +
 +Configurando o DNS no OpenBSD 5.2 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: 192.168.1.72
 +  - IP do slave que vai receber a view externa: 192.168.1.73
 +  - IPS do servidor master 192.168.1.71
 +
 +
 +Aqui no OpenBSD o Bind já vem instalado no sistema por default e ele vem enjaulado em /var/named com isso somente precisamos configurar ele para funcionar de acordo com a nossa necessidade,​ vamos lá então.
 +
 +Vamos fazer um backup do arquivo de configuração ​
 +<sxh bash>
 +cd /​var/​named/​etc
 +cp named.conf named.conf.old
 +</​sxh>​
 +
 +Agora vamos deixar o arquivo /​var/​named/​etc/​named.conf como abaixo, aqui estou utilizando a rede 192.168.1.0/​24 como minha rede local para exemplo, mude conforme necessário. ​
 +<sxh bash>
 +vim /​var/​named/​etc/​named.conf
 +#Criando acl para definir as nossas redes internas.
 +acl "​trusted"​ {
 + ​192.168.1.0/​24;​
 + ​127.0.0.1;​
 +};
 +
 +#Acl que define qual vai ser o slave que vai receber a view interna
 +acl "​internal_slave"​ {
 + ​192.168.1.72;​
 +};
 +
 +#Acl que define qual vai ser o slave que vai receber a view externa
 +acl "​external_slave"​ {
 + ​192.168.1.73;​
 +};
 +
 +#Algumas opções do Bind
 +options {
 + ​listen-on port 53 { 127.0.0.1; 192.168.1.0/​24;​ };
 + ​directory ​      "/";​
 + ​dump-file ​      "/​log/​data/​cache_dump.db";​
 + ​statistics-file "/​log/​data/​named_stats.txt";​
 + ​memstatistics-file "/​log/​data/​named_mem_stats.txt";​
 + ​allow-query ​    { any; };
 + ​recursion no;
 + ​version "Não Disponível";​
 +};
 +
 +#Controles
 +include "/​etc/​rndc.key";​
 +
 +controls {
 +        inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; };
 +};
 +
 +#LOGS
 +logging {
 + ​channel xfer-log {
 + file "/​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 "/​log/​named-update-debug.log";​
 + ​severity ​ debug 3;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​channel security-info ​   {
 + file "/​log/​named-auth-info.log";​
 + ​severity ​ info;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​category update { update-debug;​ };
 + ​category security { security-info;​ };
 +
 + };
 +
 +#Incluir os nossos arquivos externos que vão conter as configurações das Views
 +include "/​etc/​named.conf.internal-zones";​
 +include "/​etc/​named.conf.external-zones";​
 +</​sxh>​
 +
 +Agora vamos criar os diretórios que vão armazenas os logs e vamos acertar as permissões deles.
 +<sxh bash>
 +mkdir -p /​var/​named/​log/​data
 +chown -R root:named /​var/​named/​log
 +chmod -R 775 /​var/​named/​log
 +</​sxh>​
 +
 +Agora vamos gerar a chave do rndc
 +<sxh bash>
 +rndc-confgen -a -c /​var/​named/​etc/​rndc.key -k rndc-key -b 256
 +</​sxh>​
 +
 +Agora precisamos acertar as permissões dos arquivos ​
 +<sxh bash>
 +chown root:named /​var/​named/​etc/​rndc.key
 +chmod 640 /​var/​named/​etc/​rndc.key
 +</​sxh>​
 +
 +
 +Agora vamos criar o nosso arquivo da View Interna /​var/​named/​etc/​named.conf.internal-zones onde somente os nossos clientes da rede local e o nosso servidor local vão poder consultar.
 +<sxh bash>
 +vim /​var/​named/​etc/​named.conf.internal-zones
 +#Definindo a nossa View interna
 +view "​internal"​ {
 +
 +#Definindo quais clientes vão poder consultar esta view, então vão ser a nossa rede interna mesmo o servidor external_slave
 + ​match-clients { !external_slave;​ trusted; };
 +
 +#Definindo que os clientes dessa view vão poder efetuar consultas recursivas.
 + ​recursion yes;
 +
 +#Qual servidor vai poder receber a replica dessa view
 +allow-transfer {
 + ​internal_slave;​
 +};
 +
 +#Quem vai ser notificado aqui temos que informar os endereços ips.
 +also-notify {
 + ​192.168.1.72;​
 +};
 +
 +#Zonas default do bind
 +zone "​."​ {
 +        type hint;
 +        file "​etc/​root.hint";​
 +};
 +
 +zone "​localhost"​ {
 +        type master;
 +        file "​standard/​localhost";​
 +        allow-transfer { localhost; };
 +};
 +
 +zone "​127.in-addr.arpa"​ {
 +        type master;
 +        file "​standard/​loopback";​
 +        allow-transfer { localhost; };
 +};
 +
 +zone "​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"​ {
 +        type master;
 +        file "​standard/​loopback6.arpa";​
 +        allow-transfer { localhost; };
 +};
 +
 +
 +#Nosso domínio de teste.
 +zone "​douglasqsantos.com.br"​ {
 + type master;
 + file "​master/​db.douglasqsantos.com.br.internal";​
 +};
 +
 +};
 +</​sxh>​
 +
 +Agora vamos criar a nossa View Externa /​var/​named/​etc/​named.conf.external-zones aonde qualquer um vai poder consultar não sendo a nossa rede local e nem o nosso servidor local
 +<sxh bash>
 +vim /​var/​named/​etc/​named.conf.external-zones
 +#​Definição da nossa view Externa
 +view "​external"​ {
 +
 +#Definindo quais clientes vão poder consultar esta view
 + ​match-clients { external_slave;​ !trusted; any; };
 +
 +#Os clientes dessa view não poderão efetuar consultas recursivas
 + ​recursion no;
 +
 +#Quam vai poder receber replica dessa view
 + ​allow-transfer {
 + ​external_slave;​
 + };
 +
 +#Quem vai ser notificado aqui temos que informar o endereço ip
 + ​also-notify {
 + ​192.168.1.73;​
 + };
 +
 +#Nosso dominio de teste.
 +zone "​douglasqsantos.com.br"​ {
 + type master;
 + file "​master/​db.douglasqsantos.com.br.external";​
 + };
 +
 +};
 +</​sxh>​
 +
 +Agora vamos criar o arquivo que os nossos clientes internos vão consultar /​var/​named/​master/​db.douglasqsantos.com.br.internal ​
 +<sxh dns>
 +vim /​var/​named/​master/​db.douglasqsantos.com.br.internal
 +$TTL 86400
 +@ IN SOA  dns.douglasqsantos.com.br. root.dns.douglasqsantos.com.br. (
 + ​2012111601 ​ ; Serial
 + ​3600 ​      ; Refresh
 + ​1800 ​       ; Retry
 + ​1209600 ​     ; Expire
 + 3600 )     ; Minimum
 +
 +;
 +@               ​IN ​     NS   ​douglasqsantos.com.br.
 +douglasqsantos.com.br. IN TXT "​v=spf1 a mx ip4:​192.168.1.0/​24 -all"
 +mail.douglasqsantos.com.br IN TXT "​v=spf1 a -all"
 +
 +@               ​IN ​     NS   ​ns1.douglasqsantos.com.br.
 +@               ​IN ​     NS   ​ns2.douglasqsantos.com.br.
 +@               ​IN ​     MX   0 mail.douglasqsantos.com.br.
 +
 +;NAME SERVERS
 +@               ​IN ​     A    192.168.1.71
 +ns1             ​IN ​     A    192.168.1.71
 +ns2             ​IN ​     A    192.168.1.72
 +dns             ​IN ​     A    192.168.1.71
 +
 +;MAIL SERVERS
 +mail            IN      A    192.168.1.71
 +imap            IN      CNAME mail
 +pop             ​IN ​     CNAME mail
 +smtp            IN      CNAME mail
 +webmail ​        ​IN ​     CNAME mail
 +
 +;WEB SERVERS
 +www             ​IN ​     A    192.168.1.72
 +ftp             ​IN ​     CNAME www
 +mailadmin ​      ​IN ​     CNAME www
 +</​sxh>​
 +
 +Agora vamos criar o arquivo que os clientes externos vão consultar /​var/​named/​master/​db.douglasqsantos.com.br.external ​
 +<sxh dns>
 +vim /​var/​named/​master/​db.douglasqsantos.com.br.external
 +$TTL 86400
 +@ IN SOA  dns.douglasqsantos.com.br. root.dns.douglasqsantos.com.br. (
 + ​2012111601 ​ ; Serial
 + ​3600 ​      ; Refresh
 + ​1800 ​       ; Retry
 + ​1209600 ​     ; Expire
 + 3600 )     ; Minimum
 +
 +;
 +@               ​IN ​     NS   ​douglasqsantos.com.br.
 +douglasqsantos.com.br. IN TXT "​v=spf1 a mx ip4:​200.200.200.0/​23 -all"
 +mail.douglasqsantos.com.br IN TXT "​v=spf1 a -all"
 +
 +@               ​IN ​     NS   ​ns1.douglasqsantos.com.br.
 +@               ​IN ​     NS   ​ns2.douglasqsantos.com.br.
 +@               ​IN ​     MX   0 mail.douglasqsantos.com.br.
 +
 +;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>​
 +
 +Vamos agora ajustar o arquivo /​etc/​resolv.conf para que o nosso servidor consiga encontrar a zona do dominio.com.br
 +<sxh apache>
 +vim /​etc/​resolv.conf
 +search douglasqsantos.com.br
 +domain douglasqsantos.com.br
 +nameserver 127.0.0.1
 +nameserver 192.168.1.72
 +</​sxh>​
 +
 +Agora precisamos habilitar o named em /​etc/​rc.conf.local da seguinte forma
 +<sxh apache>
 +vim /​etc/​rc.conf.local
 +named_flags=""​
 +pkg_scripts="​named"​
 +</​sxh>​
 +
 +Vamos agora iniciar o serviço e testar.
 +<sxh bash>
 +/​etc/​rc.d/​named start
 +</​sxh>​
 +
 +Agora vamos fazer alguns testes.
 +
 +Vamos consultar o endereço do host www
 +<sxh bash>
 +nslookup www
 +Server: ​              ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 +
 +Name:   ​www.douglasqsantos.com.br
 +Address: 192.168.1.72
 +</​sxh>​
 +
 +Agora vamos consultar o endereço do host mail.douglasqsantos.com.br aqui poderíamos consultar somente por mail dai ele completaria com o parâmetro domain do resolv.conf ​
 +<sxh bash>
 +nslookup mail.douglasqsantos.com.br
 +Server: ​             127.0.0.1
 +Address: ​       127.0.0.1#​53
 +
 +Name:   ​mail.douglasqsantos.com.br
 +Address: 192.168.1.71
 +</​sxh>​
 +
 +Vamos consultar os registros do tipo A do nosso domínio.
 +<sxh bash>
 +dig -t A douglasqsantos.com.br
 +
 +; <<>>​ DiG 9.4.2-P2 <<>>​ -t A douglasqsantos.com.br
 +;; global options: ​ printcmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 9558
 +;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 2
 +
 +;; QUESTION SECTION:
 +;​douglasqsantos.com.br. ​              ​IN ​     A
 +
 +;; ANSWER SECTION:
 +douglasqsantos.com.br. ​       86400   ​IN ​     A       ​192.168.1.71
 +
 +;; AUTHORITY SECTION:
 +douglasqsantos.com.br. ​       86400   ​IN ​     NS      ns2.douglasqsantos.com.br.
 +douglasqsantos.com.br. ​       86400   ​IN ​     NS      ns1.douglasqsantos.com.br.
 +douglasqsantos.com.br. ​       86400   ​IN ​     NS      douglasqsantos.com.br.
 +
 +;; ADDITIONAL SECTION:
 +ns1.douglasqsantos.com.br. ​   86400   ​IN ​     A       ​192.168.1.71
 +ns2.douglasqsantos.com.br. ​   86400   ​IN ​     A       ​192.168.1.72
 +
 +;; Query time: 5 msec
 +;; SERVER: 127.0.0.1#​53(127.0.0.1)
 +;; WHEN: Fri Nov 16 10:56:20 2012
 +;; MSG SIZE  rcvd: 131
 +</​sxh>​
 +
 +Vamos agora consultar todos os registros do nosso domínio.
 +<sxh bash>
 +dig -t axfr douglasqsantos.com.br
 +
 +; <<>>​ DiG 9.4.2-P2 <<>>​ -t axfr douglasqsantos.com.br
 +;; global options: ​ printcmd
 +; Transfer failed.
 +</​sxh>​
 +
 +Como pode ser notado não temos permissão para efetuar a transferência da zona, porém já permitimos a transferência para o servidor slave.
 + 
 +Como pode ser notado o nosso servidor estar funcionando corretamente em MultiView, agora vamos fazer os ajustes para ele efetuar a replicação como precisamos.
 +
 +====== Agora vamos configurar o servidor Slave ======
 +
 +
 +Agora vamos fazer um backup do arquivo de configuração do nosso bind.
 +<sxh bash>
 +cd /​var/​named/​etc
 +cp named.conf named.conf.old
 +</​sxh>​
 +
 +Agora vamos deixar o arquivo /​var/​named/​etc/​named.conf como abaixo, aqui estou utilizando a rede 192.168.1.0/​24 como minha rede local para exemplo, mude conforme necessário.
 +<sxh bash>
 +vim /​var/​named/​etc/​named.conf
 +#Criando acl para definir as nossas redes internas.
 +acl "​trusted"​ {
 + ​192.168.1.0/​24;​
 + ​127.0.0.1;​
 +};
 +
 +#Acl que define qual vai ser o dns master
 +acl "​dns_master"​ {
 + ​192.168.1.71;​
 +};
 +
 +#Algumas opções do Bind
 +options {
 + ​listen-on port 53 { 127.0.0.1; 192.168.1.0/​24;​ };
 + ​directory ​      "/";​
 + ​dump-file ​      "/​log/​data/​cache_dump.db";​
 + ​statistics-file "/​log/​data/​named_stats.txt";​
 + ​memstatistics-file "/​log/​data/​named_mem_stats.txt";​
 + ​allow-query ​    { any; };
 + ​recursion no;
 + ​version "Não Disponível";​
 +};
 +
 +#Controles
 +include "/​etc/​rndc.key";​
 +
 +controls {
 +        inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; };
 +};
 +
 +#LOGS
 +logging {
 + ​channel xfer-log {
 + file "/​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 "/​log/​named-update-debug.log";​
 + ​severity ​ debug 3;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​channel security-info ​   {
 + file "/​log/​named-auth-info.log";​
 + ​severity ​ info;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​category update { update-debug;​ };
 + ​category security { security-info;​ };
 +
 + };
 +
 +#Incluir os nossos arquivos externos que vão conter as configurações das Views
 +include "/​etc/​named.conf.internal-zones";​
 +include "/​etc/​named.conf.external-zones";​
 +</​sxh>​
 +
 +Agora vamos criar os diretórios que vão armazenas os logs e vamos acertar as permissões deles.
 +<sxh bash>
 +mkdir -p /​var/​named/​log/​data
 +chown -R root:named /​var/​named/​log
 +chmod -R 775 /​var/​named/​log
 +</​sxh>​
 +
 +Agora vamos gerar a chave do rndc isso demora um pouco ;)
 +<sxh bash>
 +rndc-confgen -a -c /​var/​named/​etc/​rndc.key -k rndc-key -b 256
 +</​sxh>​
 +
 +Agora precisamos acertar as permissões dos arquivos ​
 +<sxh bash>
 +chown root:named /​var/​named/​etc/​rndc.key
 +chmod 640 /​var/​named/​etc/​rndc.key
 +</​sxh>​
 +
 +Agora vamos criar o arquivo da nossa View interna /​var/​named/​etc/​named.conf.internal-zones ​
 +<sxh bash>
 +vim /​var/​named/​etc/​named.conf.internal-zones
 +#Definindo a nossa View interna
 +view "​internal"​ {
 +
 +#Definindo quais clientes vão poder consultar esta view, então vão ser a nossa rede interna mesmo o servidor external_slave
 + ​match-clients { trusted; };
 +
 +#Definindo que os clientes dessa view vão poder efetuar consultas recursivas.
 + ​recursion yes;
 +
 +#Qual servidor vai poder receber a replica dessa view
 +allow-notify {
 + ​dns_master;​
 +};
 +
 +#Nao disponibiliza transferencia de zona do servidor SLAVE
 + ​allow-transfer {
 + none;
 +};
 +
 +#Zonas default do named
 +zone "​."​ {
 +        type hint;
 +        file "​etc/​root.hint";​
 +};
 +
 +zone "​localhost"​ {
 +        type master;
 +        file "​standard/​localhost";​
 +        allow-transfer { localhost; };
 +};
 +
 +zone "​127.in-addr.arpa"​ {
 +        type master;
 +        file "​standard/​loopback";​
 +        allow-transfer { localhost; };
 +};
 +
 +zone "​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"​ {
 +        type master;
 +        file "​standard/​loopback6.arpa";​
 +        allow-transfer { localhost; };
 +};
 +
 +
 +#Nosso domínio de teste.
 +zone "​douglasqsantos.com.br"​ {
 +type slave;
 +masters { 192.168.1.71;​ };
 +transfer-source 192.168.1.72;​ #​Especificando qual transferencia do master que eu vou poder receber nessa view
 +file "​slave/​db.douglasqsantos.com.br.internal";​
 +};
 +
 +};
 +</​sxh>​
 +
 +Vamos agora configurar a View Externa /​var/​named/​etc/​named.conf.external-zones ​
 +<sxh bash>
 +vim /​var/​named/​etc/​named.conf.external-zones
 +#​Definição da nossa view Externa
 +view "​external"​ {
 +
 +#Definindo quais clientes vão poder consultar esta view
 + ​match-clients { !trusted; any; };
 +
 +#Os clientes dessa view não poderão efetuar consultas recursivas
 + ​recursion no;
 +
 +#Quem vai ser notificado aqui temos que informar o endereço ip
 + ​allow-notify {
 + ​dns_master;​
 + };
 +
 +#Nao disponibiliza transferencia de zona do servidor SLAVE
 + ​allow-transfer {
 + none;
 +};
 +
 +
 +#Nosso dominio de teste.
 +zone "​douglasqsantos.com.br"​ {
 + type slave;
 + ​masters { 192.168.1.71;​ };
 + ​transfer-source 192.168.1.73;​ #​Especificando qual transferencia do master que eu vou poder receber nessa view.
 + file "​slave/​db.douglasqsantos.com.br.external";​
 + };
 +
 +};
 +</​sxh>​
 +Agora vamos ajustar o /​etc/​resolv.conf
 +<sxh apache>
 +vim /​etc/​resolv.conf
 +search douglasqsantos.com.br
 +domain douglasqsantos.com.br
 +nameserver 127.0.0.1
 +nameserver 192.168.1.71
 +</​sxh>​
 +
 +Agora vamos acertar o /​etc/​rc.conf.local
 +<sxh apache>
 +vim /​etc/​rc.conf.local
 +named_flags=""​
 +pkg_scripts="​named"​
 +</​sxh>​
 +
 +Agora vamos iniciar o serviço
 +<sxh bash>
 +/​etc/​rc.d/​named start
 +</​sxh>​
 +
 +Agora podemos acompanhar os logs em 
 +<sxh bash>
 +tail -f /​var/​named/​log/​named.log
 +16-Nov-2012 10:​55:​32.422 notify: info: client 192.168.1.71#​33458:​ view internal: received notify for zone '​localhost'​
 +16-Nov-2012 10:​55:​32.927 notify: info: client 192.168.1.71#​33458:​ view internal: received notify for zone '​127.in-addr.arpa'​
 +16-Nov-2012 10:​55:​32.927 notify: info: client 192.168.1.71#​33458:​ view internal: received notify for zone '​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'​
 +16-Nov-2012 10:​55:​32.928 notify: info: client 192.168.1.71#​33458:​ view internal: received notify for zone '​douglasqsantos.com.br'​
 +16-Nov-2012 10:​55:​32.929 notify: info: client 192.168.1.71#​33458:​ view internal: received notify for zone '​douglasqsantos.com.br'​
 +16-Nov-2012 10:​55:​32.931 xfer-in: info: transfer of '​douglasqsantos.com.br/​IN/​internal'​ from 192.168.1.71#​53:​ connected using 192.168.1.72#​11286
 +16-Nov-2012 10:​55:​33.129 xfer-in: info: transfer of '​douglasqsantos.com.br/​IN/​internal'​ from 192.168.1.71#​53:​ end of transfer
 +16-Nov-2012 10:​55:​33.129 notify: info: zone douglasqsantos.com.br/​IN/​internal:​ sending notifies (serial 2012111601)
 +16-Nov-2012 11:​07:​06.011 notify: info: zone douglasqsantos.com.br/​IN/​internal:​ sending notifies (serial 2012111601)
 +16-Nov-2012 11:​07:​06.011 notify: info: zone douglasqsantos.com.br/​IN/​external:​ sending notifies (serial 2011061704)
 +</​sxh>​
 +
 +Vamos conferir o arquivo com a zona interna.
 +<sxh dns>
 +cat /​var/​named/​slave/​db.douglasqsantos.com.br.internal
 +$ORIGIN .
 +$TTL 86400      ; 1 day
 +douglasqsantos.com.br ​        IN SOA  dns.douglasqsantos.com.br. root.dns.douglasqsantos.com.br. (
 +                                2012111601 ; serial
 +                                3600       ; refresh (1 hour)
 +                                1800       ; retry (30 minutes)
 +                                1209600 ​   ; expire (2 weeks)
 +                                3600       ; minimum (1 hour)
 +                                )
 +                        NS      douglasqsantos.com.br.
 +                        NS      ns1.douglasqsantos.com.br.
 +                        NS      ns2.douglasqsantos.com.br.
 +                        A       ​192.168.1.71
 +                        MX      0 mail.douglasqsantos.com.br.
 +                        TXT     "​v=spf1 a mx ip4:​192.168.1.0/​24 -all"
 +$ORIGIN douglasqsantos.com.br.
 +mail.douglasqsantos.com.br ​   TXT     "​v=spf1 a -all"
 +dns                     ​A ​      ​192.168.1.71
 +ftp                     ​CNAME ​  www
 +imap                    CNAME   mail
 +mail                    A       ​192.168.1.71
 +mailadmin ​              ​CNAME ​  ww
 +ns1                     ​A ​      ​192.168.1.71
 +ns2                     ​A ​      ​192.168.1.72
 +pop                     ​CNAME ​  mail
 +smtp                    CNAME   mail
 +webmail ​                ​CNAME ​  mail
 +www                     ​A ​      ​192.168.1.72
 +</​sxh>​
 +
 +Agora vamos conferir o arquivo da zona Externa.
 +<sxh dns>
 +cat /​var/​named/​slave/​db.douglasqsantos.com.br.external
 +$ORIGIN .
 +$TTL 86400      ; 1 day
 +douglasqsantos.com.br ​        IN SOA  dns.douglasqsantos.com.br. root.dns.douglasqsantos.com.br. (
 +                                2011061704 ; serial
 +                                3600       ; refresh (1 hour)
 +                                1800       ; retry (30 minutes)
 +                                1209600 ​   ; expire (2 weeks)
 +                                3600       ; minimum (1 hour)
 +                                )
 +                        NS      douglasqsantos.com.br.
 +                        NS      ns1.douglasqsantos.com.br.
 +                        NS      ns2.douglasqsantos.com.br.
 +                        A       ​200.200.200.25
 +                        MX      0 mail.douglasqsantos.com.br.
 +                        TXT     "​v=spf1 a mx ip4:​200.200.200.0/​23 -all"
 +$ORIGIN douglasqsantos.com.br.
 +mail.douglasqsantos.com.br ​   TXT     "​v=spf1 a -all"
 +dns                     ​A ​      ​200.200.200.25
 +ftp                     ​CNAME ​  www
 +imap                    CNAME   mail
 +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 fazer alguns teste de consulta no servidor Slave.
 +
 +Vamos consultar o endereço do host www
 +<sxh bash>
 +nslookup www
 +Server: ​              ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 +
 +Name:   ​www.douglasqsantos.com.br
 +Address: 192.168.1.72
 +</​sxh>​
 +
 +Agora vamos consultar o endereço do host mail.douglasqsantos.com.br aqui poderíamos consultar somente por mail dai ele completaria com o parâmetro domain do resolv.conf ​
 +<sxh bash>
 +nslookup mail.douglasqsantos.com.br
 +Server: ​             127.0.0.1
 +Address: ​       127.0.0.1#​53
 +
 +Name:   ​mail.douglasqsantos.com.br
 +Address: 192.168.1.71
 +</​sxh>​
 +
 +Vamos consultar os registros do tipo A do nosso domínio.
 +<sxh bash>
 + dig -t A douglasqsantos.com.br
 +
 +; <<>>​ DiG 9.4.2-P2 <<>>​ -t A douglasqsantos.com.br
 +;; global options: ​ printcmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 47873
 +;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 2
 +
 +;; QUESTION SECTION:
 +;​douglasqsantos.com.br. ​              ​IN ​     A
 +
 +;; ANSWER SECTION:
 +douglasqsantos.com.br. ​       86400   ​IN ​     A       ​192.168.1.71
 +
 +;; AUTHORITY SECTION:
 +douglasqsantos.com.br. ​       86400   ​IN ​     NS      ns2.douglasqsantos.com.br.
 +douglasqsantos.com.br. ​       86400   ​IN ​     NS      douglasqsantos.com.br.
 +douglasqsantos.com.br. ​       86400   ​IN ​     NS      ns1.douglasqsantos.com.br.
 +
 +;; ADDITIONAL SECTION:
 +ns1.douglasqsantos.com.br. ​   86400   ​IN ​     A       ​192.168.1.71
 +ns2.douglasqsantos.com.br. ​   86400   ​IN ​     A       ​192.168.1.72
 +
 +;; Query time: 5 msec
 +;; SERVER: 127.0.0.1#​53(127.0.0.1)
 +;; WHEN: Fri Nov 16 11:09:35 2012
 +;; MSG SIZE  rcvd: 131
 +</​sxh>​
 +
 +Agora vamos consultar todos os registros do nosso domínio.
 +<sxh bash>
 +dig -t AXFR douglasqsantos.com.br
 +
 +; <<>>​ DiG 9.4.2-P2 <<>>​ -t AXFR douglasqsantos.com.br
 +;; global options: ​ printcmd
 +; Transfer failed.
 +</​sxh>​
 +
 +Como pode ser notado não conseguimos efetuar a transferência pois não configuramos para o servidor transferir dele para ele mesmo que é algo redundante.
 +
 +====== 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