Differences

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

Link to this comparison view

install-dns-server-with-multi-view-on-debian-wheezy_pt-br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalando Servidor DNS trabalhando com Multi View no Debian Wheezy ======
  
 +
 +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: 192.168.1.122
 +  - IP do slave que vai receber a view externa: 192.168.1.123
 +  - IP do servidor master 192.168.1.120
 +  - Redes: 10.0.0.0/​23,​ 10.100.0.0/​24,​ 10.101.0.0/​24,​ 10.200.0.0/​24,​ 172.16.0.0/​24,​ 192.168.1.0/​24
 +
 +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/​bind/​zones/​{disabled,​external,​internal}
 +mkdir -p /​var/​lib/​named/​dev
 +mkdir -p /​var/​lib/​named/​var/​log
 +mkdir -p /​var/​lib/​named/​var/​cache/​bind/​{disabled,​dynamic,​master,​slave}
 +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/​bind/​
 +rm -rf /etc/bind
 +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
 +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 192.168.1.0/​24 mude ela conforme a necessidade
 +
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.options
 +#/​etc/​bind/​named.conf.options
 +acl "​internal_hosts"​ {
 +   ​127.0.0.1/​32;​
 +   ​10.0.0.0/​23;​
 +   ​10.100.0.0/​24;​
 +   ​10.101.0.0/​24;​
 +   ​10.200.0.0/​24;​
 +   ​172.16.0.0/​24;​
 +   ​192.168.1.0/​24;​
 +};
 +
 +acl "​internal_slave"​ {
 +   ​192.168.1.122;​
 +};
 +
 +acl "​external_slave"​ {
 +   ​192.168.1.123;​
 +};
 +
 +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;​ 192.168.1.0/​24;​ };
 + ​forwarders { 8.8.8.8; 8.8.4.4; };
 + ​allow-query { any; };
 + ​recursion no;
 + ​version "Nao Disponivel";​
 + ​dnssec-enable no;
 + ​dnssec-validation no;
 + ​dnssec-lookaside auto;
 + ​empty-zones-enable yes;
 +};
 +
 +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;​ };
 +};
 +
 +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 o arquivo /​etc/​bind/​named.conf.internal-zones como já comentado estou utilizando a rede 192.168.1.0/​24 para a minha rede interna mude conforme a necessidade. ​
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.internal-zones
 +#/​etc/​bind/​named.conf.internal-zones
 +
 +view "​internal"​ {
 +
 +#DEFININDO QUAIS CLIENTES VÃO PODER CONSULTAR ESSA VIEW
 +match-clients {
 +  !external_slave;​
 +  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.
 +allow-notify {
 +   ​internal_slave;​
 +};
 +
 +#ARQUIVOS CONTENDO AS ZONAS MASTER, SLAVE E FORWARD INTERNAS
 +include "/​etc/​bind/​zones/​internal/​named.conf.internal.master-zones";​
 +include "/​etc/​bind/​zones/​internal/​named.conf.internal.slave-zones";​
 +include "/​etc/​bind/​zones/​internal/​named.conf.internal.forward-zones";​
 +
 +};
 +</​sxh>​
 +
 +Agora vamos configurar a View Externa /​etc/​bind/​named.conf.external-zones
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.external-zones
 +#/​etc/​bind/​named.conf.external-zones
 +
 +view "​external"​ {
 +
 +#​DEFINIÇÃO DOS CLIENTES QUE VÃO PODER CONSULTAR ESSA VIEW
 +match-clients {
 +  external_slave;​
 +  !internal_hosts;​
 +  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
 +allow-notify {
 + ​external_slave;​
 +};
 +
 +#INCLUI ARQUIVOS DE CONFIGURACOES PARA ZONAS MASTER,​SLAVE E FORWARD EXTERNAS
 +include "/​etc/​bind/​zones/​external/​named.conf.external.master-zones";​
 +include "/​etc/​bind/​zones/​external/​named.conf.external.slave-zones";​
 +include "/​etc/​bind/​zones/​external/​named.conf.external.forward-zones";​
 +};
 +</​sxh>​
 +
 +Agora vamos ajustar o arquivo de controle de zonas master internas
 +<sxh bash>
 +vim /​etc/​bind/​zones/​internal/​named.conf.internal.master-zones
 +#/​etc/​bind/​zones/​internal/​named.conf.internal.master-zones
 +zone "​."​ {
 +   type hint;
 +   file "/​etc/​bind/​db.root";​
 +};
 +
 +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";​
 +};
 +
 +zone  "​douglasqsantos.com.br"​ {
 +       type master;
 +       file "​master/​db.douglasqsantos.com.br-internal";​
 +};
 +</​sxh>​
 +
 +Agora vamos ajustar o arquivo de controle de zonas slave internas, aqui eu vou utilizar uma zona ficticia chamada douglasqsantos.lan pois um servidor master também pode slave de outra zona, caso não queira utilizar uma zona slave deixe o arquivo somente com a primeira linha.
 +<sxh bash>
 +vim /​etc/​bind/​zones/​internal/​named.conf.internal.slave-zones
 +#/​etc/​bind/​zones/​internal/​named.conf.internal.slave-zones
 +zone "​douglasqsantos.lan"​ {
 +     type slave;
 +     ​masters { 172.32.0.120;​ }; 
 +     ​transfer-source 172.32.0.122;​
 +     file "​slave/​db.douglasqsantos.lan-internal";​
 +};
 +</​sxh>​
 +
 +Agora vamos ajustar o arquivo de controle de zonas master externas
 +<sxh bash>
 +vim /​etc/​bind/​zones/​external/​named.conf.external.master-zones
 +#/​etc/​bind/​zones/​external/​named.conf.external.master-zones
 +zone  "​douglasqsantos.com.br"​ {
 +       type master;
 +       file "​master/​db.douglasqsantos.com.br-external";​
 +};
 +</​sxh>​
 +
 +Em redes interligadas ou quando a aquisição de novas empresas podemos ter multiplos domínios com isso podemos utilizar o recuso de forward de dns aonde podemos especificar para o nosso servidor de dns aonde ele pode consultar a zona solicitada.
 +<sxh bash>
 +vim /​etc/​bind/​zones/​internal/​named.conf.internal.forward-zones
 +#/​etc/​bind/​zones/​internal/​named.conf.internal.forward-zones
 +zone  "​confiservsolucoes.com.br"​ {
 +         type forward;
 +         ​forwarders { 172.32.0.120;​ 172.32.0.122;​ }; 
 +};
 +</​sxh>​
 +
 +Aqui no exemplo acima quando pesquisarmos confiservsolucoes.com.br o nosso servidor já vai requisitar a reposta da consulta do cliente para o servidor 172.32.0.120 e caso ele não esteja on ele vai solicitar para o 172.32.0.122
 +
 +Vamos criar o arquivo de zona de forward para a zona externa
 +<sxh bash>
 +vim /​etc/​bind/​zones/​external/​named.conf.external.forward-zones
 +#/​etc/​bind/​zones/​external/​named.conf.external.forward-zones
 +</​sxh>​
 +
 +Vamos comente criar o arquivo de zona slave externa
 +<sxh bash>
 +vim /​etc/​bind/​zones/​external/​named.conf.external.slave-zones
 +#/​etc/​bind/​zones/​external/​named.conf.external.slave-zones
 +</​sxh>​
 +
 +Agora que já temos as zonas configuradas precisamos dos arquivos de controles das zonas
 +
 +Vamos agora criar os arquivos das zonas /​var/​lib/​named/​var/​cache/​bind/​master/​db.douglasqsantos.com.br-internal
 +<sxh dns>
 +vim /​var/​lib/​named/​var/​cache/​bind/​master/​db.douglasqsantos.com.br-internal
 +$TTL 86400
 +@ IN SOA  dns.douglasqsantos.com.br. root.dns.douglasqsantos.com.br. (
 +                              2014101801 ​ ; 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.94
 +ns1             ​IN ​     A    192.168.1.120
 +ns2             ​IN ​     A    192.168.1.122
 +dns             ​IN ​     A    192.168.1.120
 + 
 +;MAIL SERVERS
 +mail            IN      A    192.168.1.242
 +imap            IN      CNAME mail
 +pop             ​IN ​     CNAME mail
 +smtp            IN      CNAME mail
 +webmail ​        ​IN ​     CNAME mail
 + 
 +;WEB SERVERS
 +www             ​IN ​     A    192.168.1.94
 +ftp             ​IN ​     CNAME www
 +mailadmin ​      ​IN ​     CNAME www
 +</​sxh>​
 +
 +Agora vamos configurar o arquivo da view externa /​var/​lib/​named/​var/​cache/​bind/​master/​db.douglasqsantos.com.br-external
 +<sxh dns>
 +vim /​var/​lib/​named/​var/​cache/​bind/​master/​db.douglasqsantos.com.br-external
 +$TTL 86400
 +@ IN SOA  dns.douglasqsantos.com.br. root.dns.douglasqsantos.com.br. (
 +                              2014101801 ​ ; 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/​28 -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>​
 +
 +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
 +Oct 18 11:58:16 dns01 named[4028]:​ command channel listening on 127.0.0.1#​953
 +Oct 18 11:58:16 dns01 named[4028]:​ zone 0.in-addr.arpa/​IN/​internal:​ loaded serial 1
 +Oct 18 11:58:16 dns01 named[4028]:​ zone 127.in-addr.arpa/​IN/​internal:​ loaded serial 1
 +Oct 18 11:58:16 dns01 named[4028]:​ zone 255.in-addr.arpa/​IN/​internal:​ loaded serial 1
 +Oct 18 11:58:16 dns01 named[4028]:​ zone douglasqsantos.com.br/​IN/​internal:​ loaded serial 2014101801
 +Oct 18 11:58:16 dns01 named[4028]:​ zone localhost/​IN/​internal:​ loaded serial 2
 +Oct 18 11:58:16 dns01 named[4028]:​ managed-keys-zone ./​IN/​internal:​ loaded serial 3
 +Oct 18 11:58:16 dns01 named[4028]:​ zone douglasqsantos.com.br/​IN/​external:​ loaded serial 2014101801
 +Oct 18 11:58:16 dns01 named[4028]:​ managed-keys-zone ./​IN/​external:​ loaded serial 3
 +Oct 18 11:58:16 dns01 named[4028]:​ running
 +</​sxh>​
 +
 +Vamos efetuar alguns teste de consultas
 +
 +Vamos consultar o registro www do domínio douglasqsantos.com.br
 +<sxh bash>
 +nslookup www.douglasqsantos.com.br
 +Server: ​        ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 + 
 +Name:   ​www.douglasqsantos.com.br
 +Address: 192.168.1.94
 +</​sxh>​
 +
 +Vamos agora consultar o registro ns1.douglasqsantos.com.br
 +<sxh bash>
 +nslookup ns1.douglasqsantos.com.br
 +Server: ​        ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 + 
 +Name:   ​ns1.douglasqsantos.com.br
 +Address: 192.168.1.120
 +</​sxh>​
 +
 +Ajustando o logrotate para o bind
 +<sxh bash>
 +vim /​etc/​logrotate.d/​named ​
 +/​var/​lib/​named/​var/​log/​*.log {
 +  weekly
 +  missingok
 +  rotate 7
 +  postrotate
 +    /​etc/​init.d/​bind9 reload > /dev/null
 +  endscript
 +  compress
 +  notifempty
 +}
 +</​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/​bind/​zones/​{disabled,​external,​internal}
 +mkdir -p /​var/​lib/​named/​dev
 +mkdir -p /​var/​lib/​named/​var/​log
 +mkdir -p /​var/​lib/​named/​var/​cache/​bind/​{disabled,​dynamic,​master,​slave}
 +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/​bind/​
 +rm -rf /etc/bind
 +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
 +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 192.168.1.0/​24 mude ela conforme a necessidade
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.options
 +#/​etc/​bind/​named.conf.options
 +acl "​internal_hosts"​ {
 + ​127.0.0.1/​32;​
 + ​10.0.0.0/​23;​
 + ​10.100.0.0/​24;​
 + ​10.101.0.0/​24;​
 + ​10.200.0.0/​24;​
 + ​172.16.0.0/​24;​
 + ​192.168.1.0/​24;​
 +};
 +
 +acl "​dns_master"​ {
 + ​192.168.1.120;​
 +};
 +
 +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;​ 192.168.1.0/​24;​ };
 + ​forwarders { 8.8.8.8; 8.8.4.4; };
 + ​allow-query { any; };
 + ​recursion no;
 + ​version "Nao Disponivel";​
 + ​dnssec-enable no;
 + ​dnssec-validation no;
 + ​dnssec-lookaside auto;
 + ​empty-zones-enable yes;
 +};
 +
 +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;​ };
 +
 +};
 +
 +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 192.168.1.0/​24 para a minha rede interna mude conforme a necessidade.
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.internal-zones
 +#/​etc/​bind/​named.conf.internal-zones
 +view "​internal"​ {
 +
 +#DEFININDO QUAIS CLIENTES VAO PODER CONSULTAR ESSA VIEW
 +match-clients {
 + ​internal_hosts;​
 +};
 +
 +#O NOSSOS CLIENTES DA VIEW INTERNA VAO PODER EFETUAR CONSULTAS RECURSIVAS
 +recursion yes;
 +
 +#PARA QUAL SERVIDOR VAI SER LIBERADO A TRANSFERENCIA DESSA VIEW.
 +allow-transfer {
 +  none;
 +};
 +
 +#QUEM O BIND VAI NOTIFICAR EM CASO DE ALTERACOES DE ZONA.
 +allow-notify {
 + ​dns_master;​
 +};
 +
 +
 +#ARQUIVOS CONTENDO AS ZONAS MASTER, SLAVE E FORWARD INTERNAS
 +include "/​etc/​bind/​zones/​internal/​named.conf.internal.master-zones";​
 +include "/​etc/​bind/​zones/​internal/​named.conf.internal.slave-zones";​
 +include "/​etc/​bind/​zones/​internal/​named.conf.internal.forward-zones";​
 +
 +};
 +</​sxh>​
 +
 +
 +Agora vamos configurar a view externa /​etc/​bind/​named.conf.external-zones ​
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.external-zones
 +#/​etc/​bind/​named.conf.external-zones
 +
 +view "​external"​ {
 +
 +#DEFINICAO DOS CLIENTES QUE VAO PODER CONSULTAR ESSA VIEW
 +match-clients {
 + ​!internal_hosts;​
 + any;
 +};
 +
 +#OS CLIENTES DESSA VIEW NAO VAO PODER EFETUAR CONSULTAS RECURSIVAS
 +recursion no;
 +
 +#PARA QUAL SERVIDOR VAI SER LIBERADA A TRANSFERENCIA DESSA VIEW
 +allow-transfer {
 + none;
 +};
 +
 +#QUEM O BIND VAI NOTIFICAR QUANDO FOR EFETUADA ALGUMA ALTERACAO NAS ZONAS
 +allow-notify {
 + ​dns_master;​
 +};
 +
 +#ARQUIVOS CONTENDO AS ZONAS MASTER, SLAVE E FORWARD EXTERNAS
 +include "/​etc/​bind/​zones/​external/​named.conf.external.master-zones";​
 +include "/​etc/​bind/​zones/​external/​named.conf.external.slave-zones";​
 +include "/​etc/​bind/​zones/​external/​named.conf.external.forward-zones";​
 +
 +};
 +</​sxh>​
 +
 +Agora vamos ajustar os arquivos das zonas pois estamos utilizando arquivos externos a configuração principal.
 +
 +Vamos ajustar as zonas internas master
 +<sxh bash>
 +vim /​etc/​bind/​zones/​internal/​named.conf.internal.master-zones
 +#/​etc/​bind/​zones/​internal/​named.conf.internal.master-zones
 +zone "​."​ {
 + type hint;
 + file "/​etc/​bind/​db.root";​
 +};
 +
 +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";​
 +};
 +</​sxh>​
 +
 +Vamos ajustar as zonas internas slave
 +<sxh bash>
 +vim /​etc/​bind/​zones/​internal/​named.conf.internal.slave-zones
 +#/​etc/​bind/​zones/​internal/​named.conf.internal.slave-zones
 +zone "​douglasqsantos.com.br"​ {
 +         type slave;
 +         ​masters { 192.168.1.120;​ }; #Ip do nosso servidor master
 +         ​transfer-source ​ 192.168.1.122;​ #​Especificando qual transferencia do master que eu vou poder receber nessa view
 +         file "​slave/​db.douglasqsantos.com.br-internal";​
 +};
 +</​sxh>​
 +
 +Vamos ajustar as zonas externas slave
 +<sxh bash>
 +vim /​etc/​bind/​zones/​external/​named.conf.external.slave-zones
 +#/​etc/​bind/​zones/​external/​named.conf.external.master-zones
 +zone "​douglasqsantos.com.br"​ {
 +         type slave;
 +         ​masters { 192.168.1.120;​ }; #Definindo quem é o nosso servidor master
 +         ​transfer-source 192.168.1.123;​ #​Especificando qual transferencia do master que eu vou poder receber nessa view
 +         file "​slave/​db.douglasqsantos.com.br-external";​
 +};
 +</​sxh>​
 +
 +
 +Agora precisamos criar alguns arquivos para o bind não gerar erro, esses arquivos vão ser utilizamos para armazenar dados de zonas quando necessários.
 +
 +Arquivo que vai armazenas as zonas forward para a view interna
 +<sxh bash>
 +vim /​etc/​bind/​zones/​internal/​named.conf.internal.forward-zones
 +#/​etc/​bind/​zones/​internal/​named.conf.internal.forward-zones
 +</​sxh>​
 +
 +Arquivo que vai armazenas as zonas forward para a view externa
 +<sxh bash>
 +vim /​etc/​bind/​zones/​external/​named.conf.external.forward-zones
 +#/​etc/​bind/​zones/​external/​named.conf.external.forward-zones
 +</​sxh>​
 +
 +Arquivo que vai armazenar as zonas master para a view externa
 +<sxh bash>
 +vim /​etc/​bind/​zones/​external/​named.conf.external.master-zones
 +#/​etc/​bind/​zones/​external/​named.conf.external.master-zones
 +</​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
 +Oct 18 12:13:41 dns02 named[3982]:​ zone 127.in-addr.arpa/​IN/​internal:​ loaded serial 1
 +Oct 18 12:13:41 dns02 named[3982]:​ zone 255.in-addr.arpa/​IN/​internal:​ loaded serial 1
 +Oct 18 12:13:41 dns02 named[3982]:​ zone localhost/​IN/​internal:​ loaded serial 2
 +Oct 18 12:13:41 dns02 named[3982]:​ managed-keys-zone ./​IN/​internal:​ loaded serial 0
 +Oct 18 12:13:41 dns02 named[3982]:​ managed-keys-zone ./​IN/​external:​ loaded serial 0
 +Oct 18 12:13:41 dns02 named[3982]:​ running
 +Oct 18 12:13:41 dns02 named[3982]:​ zone douglasqsantos.com.br/​IN/​external:​ Transfer started.
 +Oct 18 12:13:41 dns02 named[3982]:​ zone douglasqsantos.com.br/​IN/​external:​ transferred serial 2014101801
 +Oct 18 12:13:42 dns02 named[3982]:​ zone douglasqsantos.com.br/​IN/​internal:​ Transfer started.
 +Oct 18 12:13:42 dns02 named[3982]:​ zone douglasqsantos.com.br/​IN/​internal:​ transferred serial 2014101801
 +</​sxh>​
 +
 +Como pode ser notado esta tudo ok
 +
 +
 +Vamos efetuar alguns teste de consultas
 +
 +Vamos consultar o registro www do domínio douglasqsantos.com.br
 +<sxh bash>
 +nslookup www.douglasqsantos.com.br
 +Server: ​  ​127.0.0.1
 +Address: ​ 127.0.0.1#​53
 +
 +Name: www.douglasqsantos.com.br
 +Address: 192.168.1.94
 +</​sxh>​
 +
 +Vamos consultar o registro ns1.douglasqsantos.com.br
 +<sxh bash>
 +nslookup ns1.douglasqsantos.com.br
 +Server: ​  ​127.0.0.1
 +Address: ​ 127.0.0.1#​53
 +
 +Name: ns1.douglasqsantos.com.br
 +Address: 192.168.1.120
 +</​sxh>​
 +
 +Ajustando o logrotate para o bind
 +<sxh bash>
 +vim /​etc/​logrotate.d/​named ​
 +/​var/​lib/​named/​var/​log/​*.log {
 +  weekly
 +  missingok
 +  rotate 7
 +  postrotate
 +    /​etc/​init.d/​bind9 reload > /dev/null
 +  endscript
 +  compress
 +  notifempty
 +}
 +</​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