Differences

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

Link to this comparison view

instalando_bind_dns_server_com_multi_view_no_debian_jessie_clinic_net [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalando Bind DNS Server com Multi-View no Debian Jessie ======
  
 +Configurando o Servidor Bind DNS no Debian Jessie trabalhando com MultiView do mesmo domínio e replicando.
 +
 +
 +**Problema:​** Quando efetuada a replicação de domínios com o mesmo nome o servidor sobreescrevia a zona anterior com isso tinhamos somente informações de uma zona ou a interna ou externa.
 +
 +
 +Como resolver o problema, dentro de cada view vai ser forçado o envio das informações para um ip específico. ​ Exemplo: View Interna 192.168.25.151 então precisamos enviar a replicação da view interna somente para o ip 192.168.25.151 e quando precisarmos enviar informações para a View externa enviarmos para o ip 192.168.25.152. ​
 +
 +  - Servidor Slave View Interna: 192.168.25.151
 +  - Servidor Slave View Externa: 192.168.25.152
 +  - Servidor Master: 192.168.25.150
 +  - Redes Internas: 192.168.25.0/​24
 +  - Redes Externas: 201.7.220.0/​22
 +
 +Após instalar o Debian precisamos preparar o ambiente para a instalação do sistema.
 +
 +===== Ajustando o ambiente das duas máquinas Debian Jessie =====
 +
 +Vamos ajustar o sources.list
 +<sxh bash>
 +vi /​etc/​apt/​sources.list
 +# OFFICIAL REPOSITORY
 +deb http://​ftp.br.debian.org/​debian jessie main contrib non-free
 +deb-src http://​ftp.br.debian.org/​debian jessie main contrib non-free
 +
 +# SECURITY UPDATE REPOSITORY
 +deb http://​security.debian.org/​ jessie/​updates main contrib non-free
 +deb-src http://​security.debian.org/​ jessie/​updates main contrib non-free
 +
 +# PROPOSE UPDATE REPOSITORY
 +deb http://​ftp.br.debian.org/​debian jessie-proposed-updates main contrib non-free
 +deb-src http://​ftp.br.debian.org/​debian jessie-proposed-updates main contrib non-free
 +
 +</​sxh>​
 +
 +Agora vamos mandar atualizar os repositórios
 +<sxh bash>
 +apt-get update
 +</​sxh>​
 +
 +Agora precisamos instalar alguns pacotes para podermos ajustar o sistema
 +<sxh bash>
 +apt-get install curl wget nmap tcpdump vim aptitude ntpdate sudo -y
 +</​sxh>​
 +
 +Agora vamos mandar atualizar todos os pacotes do sistema
 +<sxh bash>
 +aptitude dist-upgrade -y
 +</​sxh>​
 +
 +
 +Agora vamos ajustar o bash do servidor.
 +<sxh bash>
 +vim ~/.bashrc
 +# .bashrc
 +    PS1='​\[\033[01;​31m\]\u@\h\[\033[00m\]:​\[\033[01;​34m\]\w\[\033[00m\]#​ '
 +
 +    alias ls='ls --color=auto'​
 +    alias dir='​dir --color=auto'​
 +    alias vdir='​vdir --color=auto'​
 +    alias grep='​grep --color=auto'​
 +    alias fgrep='​fgrep --color=auto'​
 +    alias egrep='​egrep --color=auto'​
 +    alias ll='ls -alF'
 +    alias la='ls -A'
 +    alias l='ls -CF'
 +
 +export EDITOR=vim
 +export HISTTIMEFORMAT="​%h/​%d - %H:%M:%S "
 +TZ='​America/​Sao_Paulo';​ export TZ
 +
 +
 +# Source global definitions
 +if [ -f /etc/bashrc ]; then
 +        . /etc/bashrc
 +fi
 +
 +mesg y
 +HISTSIZE=10000
 +HISTFILESIZE=10000
 +</​sxh>​
 +
 +Agora vamos ajustar a configuração do vim
 +<sxh vim>
 +vim ~/.vimrc
 +" .vimrc - Defaults configurations
 +" Maintainer: ​  ​Douglas Quintiliano dos Santos <​https://​github.com/​douglasqsantos/​vim-colors-solarized>​
 +" Version: ​     1.0
 +syntax enable
 +set tabstop=2
 +set shiftwidth=2
 +set softtabstop=2
 +set expandtab
 +set laststatus=2
 +set ruler
 +set wildmenu
 +set lazyredraw
 +set backspace=indent,​eol,​start
 +set complete-=i
 +set smarttab
 +set nrformats-=octal
 +set ttimeout
 +set ttimeoutlen=100
 +set incsearch
 +set autoread
 +</​sxh>​
 +
 +Agora vamos ajustar o crontab das máquinas.
 +<sxh bash>
 +crontab -e
 +# Minute Hour Day Month Day_of_the_Week User Command
 +#
 +# Minute - You can use the follow (0-59)
 +# Hour - You can use the follow (0-23)
 +# Day - You can use the follow (1-31)
 +# Month - You can use the follow (1-12)
 +# Day_of_the_Week - Day of the Week. (0-7; note.: 0 and 7 are Sunday).
 +# Use - This is optional, you can define the user that run the job
 +# Command - Command is the job that will be execute on the specified time
 +# i.e: For to Schedule a task to execute each 8 hours: * */8 * * * user /​path/​to/​task
 +#
 +0 */8      *       ​* ​      ​* ​      /​usr/​bin/​aptitude update
 +0 */6      *       ​* ​      ​* ​      /​usr/​sbin/​ntpdate -u a.ntp.br
 +0 */12     ​* ​      ​* ​      ​* ​      /​usr/​bin/​updatedb
 +</​sxh>​
 +
 +Precisamos ajustar agora os banners do servidor
 +
 +Vamos começar pelo motd (message of the day) mensagem do dia que aparece logo após logar no servidor.
 +<sxh bash>
 +vim /etc/motd
 +############################################################################################################​
 +# ALERT! You are entering into a secured area!                                                             #
 +# Your IP, Login Time, Username has been noted and has been sent to the server administrator! ​             #
 +# This service is restricted to authorized users only. All activities on this system are logged. ​          #
 +# Unauthorized access will be fully investigated and reported to the appropriate law enforcement agencies. #
 +############################################################################################################​
 +</​sxh>​
 +
 +Agora vamos precisar ajustar a mensagem que vai aparecer quando aparecer o prompt do servidor para o usuário
 +<sxh bash>
 +vim /etc/issue
 +###############################################################​
 +#  Welcome to CLINIC.NET.BR ​                                  #
 +#  All connections are monitored and recorded ​                #
 +#  Disconnect IMMEDIATELY if you are not an authorized user!  #
 +###############################################################​
 +</​sxh>​
 +
 +Agora vamos precisar ajustar a mensagem que vai aparecer quando aparecer a mensagem da conexão de ssh para o usuário
 +<sxh bash>
 +vim /​etc/​issue.net
 +###############################################################​
 +#  Welcome to CLINIC.NET.BR ​                                  #
 +#  All connections are monitored and recorded ​                #
 +#  Disconnect IMMEDIATELY if you are not an authorized user!  #
 +###############################################################​
 +</​sxh>​
 +
 +Agora vamos ajustar a configuração do servidor ssh para os servidores, vamos alterar a porta padrão e vamos liberar conexões somente dos usuários do grupo sudo.
 +<sxh bash>
 +vim /​etc/​ssh/​sshd_config
 +[...]
 +# Alterando a porta padrão do serviço
 +Port 22022
 +[...]
 +# Desabilitando o usuário root efetuar login via ssh
 +PermitRootLogin no
 +[...]
 +# Habilitar mostrar o banner para as conexões via ssh
 +Banner /​etc/​issue.net
 +[...]
 +# Controle de conexões
 +MaxSessions 3
 +MaxStartups 3:50:6
 +# Habilita somente os usuários que pertencem ao grupo sudo efetuarem login via ssh
 +AllowGroups sudo
 +# Desabilita o banner padrão do Debian
 +DebianBanner no
 +# Desabilita a resolução de nomes para as conexões via ssh
 +UseDNS no
 +</​sxh>​
 +
 +Agora precisamos inserir o nosso usuário comum no grupo sudo
 +<sxh bash>
 +gpasswd -a quintiliano sudo
 +</​sxh>​
 +
 +Após terminar este processo reinicie o servidor para carregar as novas configurações.
 +<sxh bash>
 +reboot
 +</​sxh>​
 +
 +===== Configurando o servidor DNS Master =====
 +
 +Vamos instalar os pacotes necessários.
 +<sxh bash>
 +aptitude install bind9 dnsutils -y
 +</​sxh>​
 +
 +Agora precisamos parar o bind9, aqui o sistema mudou de SystemV para SystemD com isso não utilizarmos mais o /​etc/​init.d/​bind9 stop e sim o comando abaixo.
 +<sxh bash>
 +systemctl stop bind9
 +</​sxh>​
 +
 +Agora precisamos criar a jaula para o nosso Bind DNS.
 +<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>​
 +
 +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 precisamos ajustar a localização dos arquivos de configuração para que eles estejam dentro da jaula, precisamos do localtime para que o Bind consiga se achar a respeito dos Fuso horários, após isso vai ser ajustada as permissõ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 precisamos copiar o arquivo de configuração do servidor bind9.service padrão para outra localização customizável que não vai ser sobreescrita em caso de atualização de versões do pacote.
 +
 +Vamos copiar o arquivo.
 +<sxh bash>
 +cp /​lib/​systemd/​system/​bind9.service /​etc/​systemd/​system
 +</​sxh>​
 +
 +Agora vamos ajustar o serviço do bind para que ele possa trabalhar dentro da jaula.
 +<sxh bash>
 +vim /​etc/​systemd/​system/​bind9.service
 +[Unit]
 +Description=BIND Domain Name Server
 +Documentation=man:​named(8)
 +After=network.target
 +
 +[Service]
 +ExecStart=/​usr/​sbin/​named -f -u bind -t /​var/​lib/​named
 +ExecReload=/​usr/​sbin/​rndc reload
 +ExecStop=/​usr/​sbin/​rndc stop
 +
 +[Install]
 +WantedBy=multi-user.target
 +</​sxh>​
 +
 +Agora vamos ajustar o /​etc/​resolv.conf para que ele use o próprio servidor como servidor de DNS.
 +<sxh bash>
 +vim /​etc/​resolv.conf
 +nameserver 127.0.0.1
 +</​sxh>​
 +
 +Agora precisamos configurar o /​etc/​bind/​named.conf.options aqui vamos definir questões de logs, acls, keys e outras opções globais do servidor.
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.options
 +#/​etc/​bind/​named.conf.options
 +acl "​internal_hosts"​ {
 +   ​127.0.0.1/​32;​
 +   ​192.168.25.0/​24;​
 +};
 +
 +acl "​internal_slave"​ {
 +   ​192.168.25.151;​
 +};
 +
 +acl "​external_slave"​ {
 +   ​192.168.25.152;​
 +};
 +
 +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.25.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;
 + };
 + ​channel security-file {
 +  file "/​var/​log/​named-security.log"​ versions 3 size 30m;
 +  severity dynamic;
 +  print-time yes;
 + };
 +
 + ​category update { update-debug;​ };
 + ​category security { security-info;​ security-file;​ };
 +};
 +
 +include "/​etc/​bind/​bind.keys";​
 +</​sxh>​
 +
 +Agora precisamos ajustar o /​etc/​bind/​named.conf para que ele possa importar todos os arquivos de configuração necessários.
 +<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 precisamos configurar as zonas internas que vão ser utilizadas pelos clientes da LAN o arquivo é  /​etc/​bind/​named.conf.internal-zones.
 +
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.internal-zones
 +#/​etc/​bind/​named.conf.internal-zones
 +
 +view "​internal"​ {
 +
 +# Definindo quais clientes pode consultar esta view.
 +match-clients {
 +  !external_slave;​
 +  internal_hosts;​
 +};
 +
 +# Clientes da LAN pode fazer consultas recursivas que são consultas para outros
 +# domínios não sendo somente o clinic.net.br
 +recursion yes;
 +
 +# Definindo qual servidor que vai receber uma replica das zonas definidas aqui.
 +allow-transfer {
 +   ​internal_slave;​
 +};
 +
 +# Definindo qual servidor vai receber vai receber notificações sobre alterações nas zonas.
 +allow-notify {
 +   ​internal_slave;​
 +};
 +
 +# Agora vamos incluir alguns arquivos para zonas internas
 +# Estes arquivos vão ser divididos por funcionalidades.
 +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 que vai ficar exposta para a Internet /​etc/​bind/​named.conf.external-zones
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.external-zones
 +#/​etc/​bind/​named.conf.external-zones
 +
 +view "​external"​ {
 +
 +# Quais clientes podem utilizar esta view, aqui estamos definindo que é qualquer cliente ​
 +# que não esteja em nossa LAN
 +match-clients {
 +  external_slave;​
 +  !internal_hosts;​
 +  any;
 +};
 +
 +# Os clientes desta view não podem efetuar consultas recursivas, além de sobrecarregar o servidor
 +# pode ter problemas de segurança.
 +recursion no;
 +
 +# Definindo qual servidor vai receber replica desta zona.
 +allow-transfer {
 + ​external_slave;​
 +};
 +
 +# Definindo qual servidor vai receber notificações sobre as atualizações desta zona.
 +allow-notify {
 + ​external_slave;​
 +};
 +
 +# Agora precisamos incluir alguns arquivos que vão ser utilizados pela zona externa
 +# Eles vão ser divididos por funcionalidade.
 +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>​
 +
 +Vamos criar o arquivo de configuração que contém as zonas internas masters ou seja as zonas que somos donos, porém vamos somente replicar a zona clinic.net.br pois as outras são zonas padrões do sistema.
 +<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";​
 +};
 +
 +# Sua zona interna, esta zona vai armazenar os endereços ips internos da sua rede
 +# Ips da LAN
 +zone  "​clinic.net.br"​ {
 +       type master;
 +       file "​master/​db.clinic.net.br-internal";​
 +};
 +
 +# Sua zona interna reversa, esta zona vai armazenar os endereços ips reversos da sua rede
 +# Ips da LAN
 +zone "​25.168.192.in-addr.arpa"​ {
 +      type master;
 +      file "​master/​db.25.168.192-internal";​
 +};
 +</​sxh>​
 +
 +
 +Agora vamos criar o arquivo de configuração das zonas slave, caso não queira utilizar este arquivo somente comente as linhas inserindo o '#'​ na frente delas como na primeira linha após o comando para editar o arquivo, em alguns casos o servidor pode ser master de algumas zonas e slave de outras, por exemplo você pode receber replicas das zonas do AD.
 +<sxh bash>
 +vim /​etc/​bind/​zones/​internal/​named.conf.internal.slave-zones
 +#/​etc/​bind/​zones/​internal/​named.conf.internal.slave-zones
 +zone "​dksh.lan"​ {
 +     type slave;
 +     ​masters { 172.32.0.120;​ }; 
 +     ​transfer-source 172.32.0.122;​
 +     file "​slave/​db.dksh.lan-internal";​
 +};
 +</​sxh>​
 +
 +Agora precisamos criar o arquivo de configuração das zonas externas.
 +<sxh bash>
 +vim /​etc/​bind/​zones/​external/​named.conf.external.master-zones
 +#/​etc/​bind/​zones/​external/​named.conf.external.master-zones
 +
 +# Zona externa direta
 +zone  "​clinic.net.br"​ {
 +       type master;
 +       file "​master/​db.clinic.net.br-external";​
 +};
 +
 +# OBS: Como o seu range é um /22 temos que configurar o escopo para cada bloco de 8bits ou seja para cada 256 hosts
 +# temos que ter sua zona reversa. Se for configurado diretamente uma class B aqui o servidor não vai funcionar por este
 +# motivo que foi sub-dividido o seu range em quatro zonas externas.
 +# Zona externa reversa
 +zone "​220.7.201.in-addr.arpa"​ {
 +      type master;
 +      file "​master/​db.220.7.201-external";​
 +};
 +
 +# Zona externa reversa
 +zone "​221.7.201.in-addr.arpa"​ {
 +      type master;
 +      file "​master/​db.221.7.201-external";​
 +};
 +
 +# Zona externa reversa
 +zone "​222.7.201.in-addr.arpa"​ {
 +      type master;
 +      file "​master/​db.222.7.201-external";​
 +};
 +
 +# Zona externa reversa
 +zone "​223.7.201.in-addr.arpa"​ {
 +      type master;
 +      file "​master/​db.223.7.201-external";​
 +};
 +</​sxh>​
 +
 +Agora precisamos criar o arquivo de configuração de forward, em alguns casos temos fusões de empresas aonde somente criamos uma VPN para interligar elas porém cada uma continua com o seu próprio domínio e não queremos que o servidor saia para a internet para resolver o DNS da nossa nova empresa com isso podemos mandar as requisições diretamente para o servidor Master da zona como abaixo as zona douglas.wiki.br vai ser enviada para os servidores 172.32.0.120 e 172.32.0.122 caso não precise utilizar este recurso comente as linhas do arquivo.
 +<sxh bash>
 +vim /​etc/​bind/​zones/​internal/​named.conf.internal.forward-zones
 +#/​etc/​bind/​zones/​internal/​named.conf.internal.forward-zones
 +zone  "​douglas.wiki.br"​ {
 +         type forward;
 +         ​forwarders { 172.32.0.120;​ 172.32.0.122;​ }; 
 +};
 +</​sxh>​
 +
 +Na questão do forward podemos redirecionar requisições de domínios externos para um determinado servidor da mesma forma que foi configurado no arquivo acima, este arquivo está sem configuração porém ele precisa ter pelo menos uma linha que podemos usar um comentário com o caminho do arquivo.
 +<sxh bash>
 +vim /​etc/​bind/​zones/​external/​named.conf.external.forward-zones
 +#/​etc/​bind/​zones/​external/​named.conf.external.forward-zones
 +</​sxh>​
 +
 +Caso precise trabalhar como slave de alguma zona externa podemos inserir as configurações neste arquivo, no seu caso Paulo o arquivo vai ficar somente como abaixo.
 +<sxh bash>
 +vim /​etc/​bind/​zones/​external/​named.conf.external.slave-zones
 +#/​etc/​bind/​zones/​external/​named.conf.external.slave-zones
 +</​sxh>​
 +
 +Depois de configurar a localizações dos arquivos de configurações e seus parâmetros precisamos criar o arquivo que vai armazenar os registros de DNS.
 +
 +Vamos criar o arquivo que armazena os registros da zona interna clinic.net.br /​var/​lib/​named/​var/​cache/​bind/​master/​db.clinic.net.br-internal
 +<sxh dns>
 +vim /​var/​lib/​named/​var/​cache/​bind/​master/​db.clinic.net.br-internal
 +$TTL 86400
 +@ IN SOA  dns.clinic.net.br. root.dns.clinic.net.br. (
 +                              2016052201 ​ ; Serial
 +                              3600       ; Refresh
 +                              1800        ; Retry
 +                              1209600 ​     ; Expire
 +                              3600 )     ; Minimum
 + 
 +;
 +@               ​IN ​     NS   ​clinic.net.br.
 +clinic.net.br. IN TXT "​v=spf1 a mx ip4:​192.168.25.0/​24 -all"
 +clinic.net.br. IN SPF "​v=spf1 a mx ip4:​192.168.25.0/​24 -all"
 +mail.clinic.net.br IN TXT "​v=spf1 a -all"
 +mail.clinic.net.br IN SPF "​v=spf1 a -all"
 + 
 +@               ​IN ​     NS   ​ns1.clinic.net.br.
 +@               ​IN ​     NS   ​ns2.clinic.net.br.
 +@               ​IN ​     MX   0 mail.clinic.net.br.
 + 
 +;NAME SERVERS
 +@               ​IN ​     A    192.168.25.156
 +ns1             ​IN ​     A    192.168.25.150
 +ns2             ​IN ​     A    192.168.25.151
 +dns             ​IN ​     A    192.168.25.150
 + 
 +;MAIL SERVERS
 +mail            IN      A    192.168.25.155
 +imap            IN      CNAME mail
 +pop             ​IN ​     CNAME mail
 +smtp            IN      CNAME mail
 +webmail ​        ​IN ​     CNAME mail
 + 
 +;WEB SERVERS
 +www             ​IN ​     A    192.168.25.156
 +ftp             ​IN ​     CNAME www
 +mailadmin ​      ​IN ​     CNAME www
 +</​sxh>​
 +
 +Vamos criar o arquivo que armazena os registros da zona interna reversa da zona clinic.net.br /​var/​lib/​named/​var/​cache/​bind/​master/​db.25.168.192-internal ​
 +<sxh dns>
 +vim /​var/​lib/​named/​var/​cache/​bind/​master/​db.25.168.192-internal
 +$TTL 86400
 +@ IN SOA  dns.clinic.net.br. root.dns.clinic.net.br. (
 +                              2016052201 ​ ; Serial
 +                              3600       ; Refresh
 +                              1800        ; Retry
 +                              1209600 ​     ; Expire
 +                              3600 )     ; Minimum
 + 
 +;
 +@               ​IN ​     NS   ​clinic.net.br.
 +clinic.net.br. IN TXT "​v=spf1 a mx ip4:​192.168.25.0/​24 -all"
 +clinic.net.br. IN SPF "​v=spf1 a mx ip4:​192.168.25.0/​24 -all"
 +mail.clinic.net.br IN TXT "​v=spf1 a -all"
 +mail.clinic.net.br IN SPF "​v=spf1 a -all"
 +
 +;
 +@               ​IN ​ NS   ​ns1.clinic.net.br.
 +@               ​IN ​ NS   ​ns2.clinic.net.br.
 +@               ​IN ​ MX   0 mail.clinic.net.br.
 +
 +;NAME SERVERS
 +150      IN  PTR    clinic.net.br.
 +150      IN  PTR    ns1.clinic.net.br.
 +151      IN  PTR    ns2.clinic.net.br.
 +150      IN  PTR    dns.clinic.net.br.
 +
 +;MAIL SERVERS
 +155    IN  PTR    mail.clinic.net.br.
 +
 +;WEB SERVERS
 +156      IN  PTR    www.clinic.net.br.
 +</​sxh>​
 +
 +
 +Vamos criar o arquivo que armazena os registros da zona externa clinic.net.br /​var/​lib/​named/​var/​cache/​bind/​master/​db.clinic.net.br-external
 +<sxh dns>
 +vim /​var/​lib/​named/​var/​cache/​bind/​master/​db.clinic.net.br-external
 +$TTL 86400
 +@ IN SOA  dns.clinic.net.br. root.dns.clinic.net.br. (
 +                              2016052201 ​ ; Serial
 +                              3600       ; Refresh
 +                              1800        ; Retry
 +                              1209600 ​     ; Expire
 +                              3600 )     ; Minimum
 + 
 +;
 +@               ​IN ​     NS   ​clinic.net.br. ​
 +@               ​IN ​     NS   ​ns1.clinic.net.br.
 +@               ​IN ​     NS   ​ns2.clinic.net.br.
 +@               ​IN ​     MX   0 mail.clinic.net.br.
 + 
 +;NAME SERVERS
 +@               ​IN ​     A    201.7.220.156
 +ns1             ​IN ​     A    201.7.220.150
 +ns2             ​IN ​     A    201.7.220.151
 +dns             ​IN ​     A    201.7.220.150
 + 
 +;MAIL SERVERS
 +mail            IN      A    201.7.220.155
 +imap            IN      CNAME mail
 +pop             ​IN ​     CNAME mail
 +smtp            IN      CNAME mail
 +webmail ​        ​IN ​     CNAME mail
 + 
 +;WEB SERVERS
 +www             ​IN ​     A    201.7.220.156
 +ftp             ​IN ​     CNAME www
 +mailadmin ​      ​IN ​     CNAME www
 +
 +; Testes dos scopos 221,222 e 223
 +www2            IN      A    201.7.221.1
 +www3            IN      A    201.7.222.1
 +www4            IN      A    201.7.223.1
 +</​sxh>​
 +
 +Vamos criar o arquivo que armazena os registros da zona reversa externa clinic.net.br /​var/​lib/​named/​var/​cache/​bind/​master/​db.220.7.201-external eu escolhi os primeiros 8 bits para poder utilizar utilizar o reverso para os serviços de dns, web e email, fique a vontade para modificar isso.
 +<sxh dns>
 +vim /​var/​lib/​named/​var/​cache/​bind/​master/​db.220.7.201-external
 +$TTL 86400
 +@ IN SOA  dns.clinic.net.br. root.dns.clinic.net.br. (
 +                        2016052201 ​ ; Serial
 +                        3600       ; Refresh
 +                        1800        ; Retry
 +                        604800 ​     ; Expire
 +                        3600 )     ; Minimum
 +
 +;
 +@   ​IN ​ NS   ​clinic.net.br.
 +@               ​IN ​ NS   ​ns1.clinic.net.br.
 +@               ​IN ​ NS   ​ns2.clinic.net.br.
 +@               ​IN ​ MX   0 mail.clinic.net.br.
 +
 +;NAME SERVERS
 +150      IN  PTR    clinic.net.br.
 +150      IN  PTR    ns1.clinic.net.br.
 +151      IN  PTR    ns2.clinic.net.br.
 +150      IN  PTR    dns.clinic.net.br.
 +
 +;MAIL SERVERS
 +155    IN  PTR    mail.clinic.net.br.
 +
 +;WEB SERVERS
 +156      IN  PTR    www.clinic.net.br.
 +</​sxh>​
 +
 +Agora vamos configurar o segundo escopo
 +<sxh dns>
 +vim /​var/​lib/​named/​var/​cache/​bind/​master/​db.221.7.201-external
 +$TTL 86400
 +@ IN SOA  dns.clinic.net.br. root.dns.clinic.net.br. (
 +                        2016052201 ​ ; Serial
 +                        3600       ; Refresh
 +                        1800        ; Retry
 +                        604800 ​     ; Expire
 +                        3600 )     ; Minimum
 +
 +;
 +@   ​IN ​ NS   ​clinic.net.br.
 +@               ​IN ​ NS   ​ns1.clinic.net.br.
 +@               ​IN ​ NS   ​ns2.clinic.net.br.
 +@               ​IN ​ MX   0 mail.clinic.net.br.
 +
 +; Test
 +1                 ​IN ​ PTR    www2.clinic.net.br.
 +</​sxh>​
 +
 +Agora vamos configurar o terceiro escopo
 +<sxh dns>
 +vim /​var/​lib/​named/​var/​cache/​bind/​master/​db.222.7.201-external
 +$TTL 86400
 +@ IN SOA  dns.clinic.net.br. root.dns.clinic.net.br. (
 +                        2016052201 ​ ; Serial
 +                        3600       ; Refresh
 +                        1800        ; Retry
 +                        604800 ​     ; Expire
 +                        3600 )     ; Minimum
 +
 +;
 +@               ​IN ​ NS   ​clinic.net.br.
 +@               ​IN ​ NS   ​ns1.clinic.net.br.
 +@               ​IN ​ NS   ​ns2.clinic.net.br.
 +@               ​IN ​ MX   0 mail.clinic.net.br.
 +
 +; Test
 +1               ​IN ​ PTR    www3.clinic.net.br.
 +</​sxh>​
 +
 +Agora vamos configurar o quarto escopo
 +<sxh dns>
 +vim /​var/​lib/​named/​var/​cache/​bind/​master/​db.223.7.201-external
 +$TTL 86400
 +@ IN SOA  dns.clinic.net.br. root.dns.clinic.net.br. (
 +                        2016052204 ​ ; Serial
 +                        3600       ; Refresh
 +                        1800        ; Retry
 +                        604800 ​     ; Expire
 +                        3600 )     ; Minimum
 +
 +;
 +@   ​IN ​ NS   ​clinic.net.br.
 +@               ​IN ​ NS   ​ns1.clinic.net.br.
 +@               ​IN ​ NS   ​ns2.clinic.net.br.
 +@               ​IN ​ MX   0 mail.clinic.net.br.
 +
 +; Test
 +1                 ​IN ​ PTR    www4.clinic.net.br.
 +</​sxh>​
 +
 +
 +Agora precisamos recarregar as configurações de serviços e reiniciar o Bind.
 +<sxh bash>
 +systemctl daemon-reload
 +systemctl start bind9
 +</​sxh>​
 +
 +Agora vamos verificar se o serviço está funcionando corretamente.
 +<sxh bash>
 +systemctl status bind9
 +● bind9.service - BIND Domain Name Server
 +   ​Loaded:​ loaded (/​etc/​systemd/​system/​bind9.service;​ enabled)
 +  Drop-In: /​run/​systemd/​generator/​bind9.service.d
 +           ​└─50-insserv.conf-$named.conf
 +   ​Active:​ active (running) since Sun 2016-05-22 12:15:12 BRT; 4s ago
 +     Docs: man:​named(8)
 +  Process: 2806 ExecStop=/​usr/​sbin/​rndc stop (code=exited,​ status=0/​SUCCESS)
 + Main PID: 2810 (named)
 +   ​CGroup:​ /​system.slice/​bind9.service
 +           ​└─2810 /​usr/​sbin/​named -f -u bind -t /​var/​lib/​named
 +
 +May 22 12:15:12 dns1 named[2810]:​ zone clinic.net.br/​IN/​internal:​ loaded serial 2016052201
 +May 22 12:15:12 dns1 named[2810]:​ zone 255.in-addr.arpa/​IN/​internal:​ loaded serial 1
 +May 22 12:15:12 dns1 named[2810]:​ zone 25.168.192.in-addr.arpa/​IN/​internal:​ loaded serial 2016052201
 +May 22 12:15:12 dns1 named[2810]:​ zone clinic.net.br/​IN/​external:​ loaded serial 2016052201
 +May 22 12:15:12 dns1 named[2810]:​ zone 220.7.201.in-addr.arpa/​IN/​external:​ loaded serial 2016052201
 +May 22 12:15:12 dns1 named[2810]:​ zone 221.7.201.in-addr.arpa/​IN/​external:​ loaded serial 2016052201
 +May 22 12:15:12 dns1 named[2810]:​ zone 222.7.201.in-addr.arpa/​IN/​external:​ loaded serial 2016052201
 +May 22 12:15:12 dns1 named[2810]:​ zone 223.7.201.in-addr.arpa/​IN/​external:​ loaded serial 2016052201
 +May 22 12:15:12 dns1 named[2810]:​ all zones loaded
 +May 22 12:15:12 dns1 named[2810]:​ running
 +</​sxh>​
 +
 +Agora que já se certificamos que o servidor de dns está funcionando vamos fazer alguns testes.
 +
 +Vamos checar o domínio local the www.clinic.net.br
 +<sxh bash>
 +nslookup www.clinic.net.br
 +Server: ​        ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 + 
 +Name:   ​www.clinic.net.br
 +Address: 192.168.25.94
 +</​sxh>​
 +
 +Agora vamos checar o dns1 ns1.clinic.net.br
 +<sxh bash>
 +nslookup ns1.clinic.net.br
 +Server: ​        ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 + 
 +Name:   ​ns1.clinic.net.br
 +Address: 192.168.25.150
 +</​sxh>​
 +
 +Agora vamos verificar se o servidor está efetuando consultas recursivas.
 +<sxh bash>
 +nslookup www.terra.com.br
 +Server: ​  ​127.0.0.1
 +Address: ​ 127.0.0.1#​53
 +
 +Non-authoritative answer:
 +www.terra.com.br ​ canonical name = web-portal-cdn.terra.com.br.
 +Name: web-portal-cdn.terra.com.br
 +Address: 200.192.176.65
 +</​sxh>​
 +
 +Agora vamos consultar o reverso do www.clinic.net.br
 +<sxh bash>
 +host 192.168.25.156
 +156.25.168.192.in-addr.arpa domain name pointer www.clinic.net.br.
 +<sxh>
 +
 +Podemos efetuar a mesma consulta com o comand dig
 +<sxh bash>
 +dig -x 192.168.25.156
 +
 +; <<>>​ DiG 9.9.5-9+deb8u6-Debian <<>>​ -x 192.168.25.156
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 29317
 +;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4
 +
 +;; OPT PSEUDOSECTION:​
 +; EDNS: version: 0, flags:; udp: 4096
 +;; QUESTION SECTION:
 +;​156.25.168.192.in-addr.arpa. IN PTR
 +
 +;; ANSWER SECTION:
 +156.25.168.192.in-addr.arpa. 86400 IN PTR www.clinic.net.br.
 +
 +;; AUTHORITY SECTION:
 +25.168.192.in-addr.arpa. 86400 IN NS ns1.clinic.net.br.
 +25.168.192.in-addr.arpa. 86400 IN NS clinic.net.br.
 +25.168.192.in-addr.arpa. 86400 IN NS ns2.clinic.net.br.
 +
 +;; ADDITIONAL SECTION:
 +ns1.clinic.net.br. 86400 IN A 192.168.25.150
 +ns2.clinic.net.br. 86400 IN A 192.168.25.151
 +clinic.net.br. 86400 IN A 192.168.25.156
 +
 +;; Query time: 0 msec
 +;; SERVER: 127.0.0.1#​53(127.0.0.1)
 +;; WHEN: Sun May 22 11:35:47 BRT 2016
 +;; MSG SIZE  rcvd: 185
 +</​sxh>​
 +
 +O servidor está funcionando corretamente.
 +
 +Agora precisamos fazer os testes da zona externa, com isso vamos precisamos alterar os arquivos que controlam as consultas.
 +
 +Vamos alterar a zona externa, vamos permitir a rede interna consultar ela.
 +<sxh bash>
 +vim /​var/​lib/​named/​etc/​bind/​named.conf.external-zones
 +[...]
 +# Quais clientes podem utilizar esta view, aqui estamos definindo que é qualquer cliente
 +# que não esteja em nossa LAN
 +match-clients {
 +  !external_slave;​
 +  internal_hosts;​
 +  any;
 +};
 +</​sxh>​
 +
 +Note que aqui invertemos a configuração vamos negar a rede externa consultar nesta view e vamos permitir a rede interna, agora precisamos fazer o mesmo procedimento no arquivo de controle da zona interna.
 +<sxh bash>
 +vim /​var/​lib/​named/​etc/​bind/​named.conf.internal-zones ​
 +[...]
 +match-clients {
 +  external_slave;​
 +  !internal_hosts;​
 +};
 +</​sxh>​
 +
 +Aqui fizemos o mesmo procedimento para a view externa.
 +
 +Agora vamos reiniciar o serviço do bind para podemos consultar os registros.
 +<sxh bash>
 +systemctl restart bind9
 +</​sxh>​
 +
 +Agora vamos consultar o www.clinet.net.br
 +<sxh bash>
 +nslookup www.clinic.net.br
 +Server:​ 127.0.0.1
 +Address:​ 127.0.0.1#​53
 +
 +Name:​ www.clinic.net.br
 +Address: 201.7.220.156
 +</​sxh>​
 +
 +Como podemos notar agora estamos recebendo os dados da view externa com os ips públicos, agora vamos efetuar a consulta dos ips reversos.
 +<sxh bash>
 +host 201.7.220.156
 +156.220.7.201.in-addr.arpa domain name pointer www.clinic.net.br.
 +</​sxh>​
 +
 +Agora vamos efetuar uma consulta com o dig
 +<sxh bash>
 +dig -x 201.7.220.156
 +
 +; <<>>​ DiG 9.9.5-9+deb8u6-Debian <<>>​ -x 201.7.220.156
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 52650
 +;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4
 +;; WARNING: recursion requested but not available
 +
 +;; OPT PSEUDOSECTION:​
 +; EDNS: version: 0, flags:; udp: 4096
 +;; QUESTION SECTION:
 +;​156.220.7.201.in-addr.arpa. IN PTR
 +
 +;; ANSWER SECTION:
 +156.220.7.201.in-addr.arpa. 86400 IN PTR www.clinic.net.br.
 +
 +;; AUTHORITY SECTION:
 +220.7.201.in-addr.arpa. 86400 IN NS ns2.clinic.net.br.
 +220.7.201.in-addr.arpa. 86400 IN NS ns1.clinic.net.br.
 +220.7.201.in-addr.arpa. 86400 IN NS clinic.net.br.
 +
 +;; ADDITIONAL SECTION:
 +ns1.clinic.net.br. 86400 IN A 201.7.220.150
 +ns2.clinic.net.br. 86400 IN A 201.7.220.151
 +clinic.net.br. 86400 IN A 201.7.220.156
 +
 +;; Query time: 0 msec
 +;; SERVER: 127.0.0.1#​53(127.0.0.1)
 +;; WHEN: Sun May 22 12:16:51 BRT 2016
 +;; MSG SIZE  rcvd: 184
 +</​sxh>​
 +
 +Como pode ser notado em ANSWER SECTION temos o reverso do seu ip.
 +
 +Agora vamos efetuar a consulta dos outros escopos
 +<sxh bash>
 +nslookup www2.clinic.net.br
 +Server:​ 127.0.0.1
 +Address:​ 127.0.0.1#​53
 +
 +Name:​ www2.clinic.net.br
 +Address: 201.7.221.1
 +</​sxh>​
 +
 +Agora vamos consultar o reverso
 +<sxh bash>
 +host 201.7.221.1
 +1.221.7.201.in-addr.arpa domain name pointer www2.clinic.net.br.
 +</​sxh>​
 +
 +Consultando com o dig
 +<sxh bash>
 +dig -x 201.7.221.1
 +
 +; <<>>​ DiG 9.9.5-9+deb8u6-Debian <<>>​ -x 201.7.221.1
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 13611
 +;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4
 +;; WARNING: recursion requested but not available
 +
 +;; OPT PSEUDOSECTION:​
 +; EDNS: version: 0, flags:; udp: 4096
 +;; QUESTION SECTION:
 +;​1.221.7.201.in-addr.arpa. IN PTR
 +
 +;; ANSWER SECTION:
 +1.221.7.201.in-addr.arpa. 86400 IN PTR www2.clinic.net.br.
 +
 +;; AUTHORITY SECTION:
 +221.7.201.in-addr.arpa. 86400 IN NS ns1.clinic.net.br.
 +221.7.201.in-addr.arpa. 86400 IN NS clinic.net.br.
 +221.7.201.in-addr.arpa. 86400 IN NS ns2.clinic.net.br.
 +
 +;; ADDITIONAL SECTION:
 +ns1.clinic.net.br. 86400 IN A 201.7.220.150
 +ns2.clinic.net.br. 86400 IN A 201.7.220.151
 +clinic.net.br. 86400 IN A 201.7.220.156
 +
 +;; Query time: 0 msec
 +;; SERVER: 127.0.0.1#​53(127.0.0.1)
 +;; WHEN: Sun May 22 12:18:21 BRT 2016
 +;; MSG SIZE  rcvd: 183
 +</​sxh>​
 +
 +Agora vamos consultar o próximo escopo
 +<sxh bash>
 +nslookup www3.clinic.net.br
 +Server:​ 127.0.0.1
 +Address:​ 127.0.0.1#​53
 +
 +Name:​ www3.clinic.net.br
 +Address: 201.7.222.1
 +</​sxh>​
 +
 +Agora vamos consultar o reverso
 +<sxh bash>
 +host 201.7.222.1
 +1.222.7.201.in-addr.arpa domain name pointer www3.clinic.net.br.
 +</​sxh>​
 +
 +Agora vamos consultar com o dig
 +<sxh bash>
 +dig -x 201.7.222.1
 +
 +; <<>>​ DiG 9.9.5-9+deb8u6-Debian <<>>​ -x 201.7.222.1
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 20314
 +;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4
 +;; WARNING: recursion requested but not available
 +
 +;; OPT PSEUDOSECTION:​
 +; EDNS: version: 0, flags:; udp: 4096
 +;; QUESTION SECTION:
 +;​1.222.7.201.in-addr.arpa. IN PTR
 +
 +;; ANSWER SECTION:
 +1.222.7.201.in-addr.arpa. 86400 IN PTR www3.clinic.net.br.
 +
 +;; AUTHORITY SECTION:
 +222.7.201.in-addr.arpa. 86400 IN NS clinic.net.br.
 +222.7.201.in-addr.arpa. 86400 IN NS ns2.clinic.net.br.
 +222.7.201.in-addr.arpa. 86400 IN NS ns1.clinic.net.br.
 +
 +;; ADDITIONAL SECTION:
 +ns1.clinic.net.br. 86400 IN A 201.7.220.150
 +ns2.clinic.net.br. 86400 IN A 201.7.220.151
 +clinic.net.br. 86400 IN A 201.7.220.156
 +
 +;; Query time: 0 msec
 +;; SERVER: 127.0.0.1#​53(127.0.0.1)
 +;; WHEN: Sun May 22 12:19:37 BRT 2016
 +;; MSG SIZE  rcvd: 183
 +</​sxh>​
 +
 +Agora vamos consultar o último escopo
 +<sxh bash>
 +nslookup www4.clinic.net.br
 +Server:​ 127.0.0.1
 +Address:​ 127.0.0.1#​53
 +
 +Name:​ www4.clinic.net.br
 +Address: 201.7.223.1
 +</​sxh>​
 +
 +Agora vamos consultar o reverso
 +<sxh bash>
 +host 201.7.223.1
 +1.223.7.201.in-addr.arpa domain name pointer www4.clinic.net.br.
 +</​sxh>​
 +
 +Agora vamos consultar com o dig
 +<sxh bash>
 +dig -x 201.7.223.1
 +
 +; <<>>​ DiG 9.9.5-9+deb8u6-Debian <<>>​ -x 201.7.223.1
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 34819
 +;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4
 +;; WARNING: recursion requested but not available
 +
 +;; OPT PSEUDOSECTION:​
 +; EDNS: version: 0, flags:; udp: 4096
 +;; QUESTION SECTION:
 +;​1.223.7.201.in-addr.arpa. IN PTR
 +
 +;; ANSWER SECTION:
 +1.223.7.201.in-addr.arpa. 86400 IN PTR www4.clinic.net.br.
 +
 +;; AUTHORITY SECTION:
 +223.7.201.in-addr.arpa. 86400 IN NS ns1.clinic.net.br.
 +223.7.201.in-addr.arpa. 86400 IN NS clinic.net.br.
 +223.7.201.in-addr.arpa. 86400 IN NS ns2.clinic.net.br.
 +
 +;; ADDITIONAL SECTION:
 +ns1.clinic.net.br. 86400 IN A 201.7.220.150
 +ns2.clinic.net.br. 86400 IN A 201.7.220.151
 +clinic.net.br. 86400 IN A 201.7.220.156
 +
 +;; Query time: 0 msec
 +;; SERVER: 127.0.0.1#​53(127.0.0.1)
 +;; WHEN: Sun May 22 12:21:11 BRT 2016
 +;; MSG SIZE  rcvd: 183
 +</​sxh>​
 +
 +Como pode ser notado temos o reverso do seu escopo /22 completo.
 +
 +Agora precisamos voltar o servidor ao seu estado normal, os ips externos vão ser publicados somente para a internet e os ips internos vão ser propagados para a sua rede interna.
 +
 +Vamos alterar a zona externa, vamos permitir a rede externa consultar ela.
 +<sxh bash>
 +vim /​var/​lib/​named/​etc/​bind/​named.conf.external-zones
 +[...]
 +# Quais clientes podem utilizar esta view, aqui estamos definindo que é qualquer cliente
 +# que não esteja em nossa LAN
 +match-clients {
 +  external_slave;​
 +  !internal_hosts;​
 +  any;
 +};
 +</​sxh>​
 +
 +Note que aqui invertemos a configuração vamos negar a rede interna consultar nesta view e vamos permitir a rede externa, agora precisamos fazer o mesmo procedimento no arquivo de controle da zona interna.
 +<sxh bash>
 +vim /​var/​lib/​named/​etc/​bind/​named.conf.internal-zones ​
 +[...]
 +match-clients {
 +  !external_slave;​
 +  internal_hosts;​
 +};
 +</​sxh>​
 +
 +Aqui fizemos o mesmo procedimento para a view externa.
 +
 +Agora vamos reiniciar o serviço do bind para podemos consultar os registros.
 +<sxh bash>
 +systemctl restart bind9
 +</​sxh>​
 +
 +Agora vamos consultar o www.clinet.net.br
 +<sxh bash>
 +nslookup www.clinic.net.br
 +Server:​ 127.0.0.1
 +Address:​ 127.0.0.1#​53
 +
 +Name:​ www.clinic.net.br
 +Address: 192.168.25.156
 +</​sxh>​
 +
 +Como podemos notar agora estamos recebendo os dados da view externa com os ips públicos, agora vamos efetuar a consulta dos ips reversos.
 +<sxh bash>
 +host 192.168.25.156
 +156.25.168.192.in-addr.arpa domain name pointer www.clinic.net.br.
 +</​sxh>​
 +
 +Agora precisamos configurar o logrotate para efetuar rotação dos logs e não encher o servidor.
 +
 +<sxh bash>
 +vim /​etc/​logrotate.d/​named ​
 +/​var/​lib/​named/​var/​log/​*.log {
 +  weekly
 +  missingok
 +  rotate 7
 +  postrotate
 +    /​bin/​systemctl reload bind9 > /dev/null
 +  endscript
 +  compress
 +  notifempty
 +}
 +</​sxh>​
 +
 +===== Configurando o Servidor Bind DNS Slave =====
 +
 +Vamos instalar os pacotes do Bind.
 +<sxh bash>
 +aptitude update
 +aptitude install bind9 dnsutils -y
 +</​sxh>​
 +
 +Agora precisamos parar o serviço antes de começar as modificações.
 +<sxh bash>
 +systemctl stop bind9
 +</​sxh>​
 +
 +Agora precisamos criar a Jaula para o Bind
 +<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 precisamos 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 precisamos ajustar a localização dos arquivos e ajustar as permissõ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 criar uma copia do arquivo de inicialização do Bind para podermos efetuar as modificações necessárias.
 +<sxh bash>
 +cp /​lib/​systemd/​system/​bind9.service /​etc/​systemd/​system
 +</​sxh>​
 +
 +Precisamos copiar para o /​etc/​systemd/​system o bind9.service com isso quando precisarmos atualizar os pacotes do Bind as configurações do serviço vão ser mantidas.
 +<sxh bash>
 +vim /​etc/​systemd/​system/​bind9.service
 +[Unit]
 +Description=BIND Domain Name Server
 +Documentation=man:​named(8)
 +After=network.target
 +
 +[Service]
 +ExecStart=/​usr/​sbin/​named -f -u bind -t /​var/​lib/​named
 +ExecReload=/​usr/​sbin/​rndc reload
 +ExecStop=/​usr/​sbin/​rndc stop
 +
 +[Install]
 +WantedBy=multi-user.target
 +</​sxh>​
 +
 +Agora precisamos configurar o /​etc/​resolv.conf para que ele use o servidor local como DNS Server.
 +<sxh bash>
 +vim /​etc/​resolv.conf
 +nameserver 127.0.0.1
 +</​sxh>​
 +
 +Agore precisamos ajustar o /​etc/​bind/​named.conf.options,​ aqui vamos configurar questões de Log, acls, keys e afins.
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.options
 +#/​etc/​bind/​named.conf.options
 +acl "​internal_hosts"​ {
 +   ​127.0.0.1/​32;​
 +   ​192.168.25.0/​24;​
 +};
 +
 +acl "​dns_master"​ {
 + ​192.168.25.150;​
 +};
 +
 +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.25.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;
 + };
 + ​channel security-file {
 +  file "/​var/​log/​named-security.log"​ versions 3 size 30m;
 +  severity dynamic;
 +  print-time yes;
 + };
 +
 + ​category update { update-debug;​ };
 + ​category security { security-info;​ security-file;​ };
 +};
 +
 +include "/​etc/​bind/​bind.keys";​
 +</​sxh>​
 +
 +Agora precisamos ajustar o /​etc/​bind/​named.conf para inserir os arquivos de configurações que serão utilizados.
 +<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 precisamos configurar o arquivo que controla as zonas internas /​etc/​bind/​named.conf.internal-zones.
 +
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.internal-zones
 +#/​etc/​bind/​named.conf.internal-zones
 +view "​internal"​ {
 +
 +# Definindo quais clientes podem utilizar estar zona.
 +match-clients {
 + ​internal_hosts;​
 +};
 +
 +# Clientes desta zona podem efetuar consultas recursivas.
 +recursion yes;
 +
 +# Quais servidores estão atualizados a obter transferencias de zona desta view.
 +allow-transfer {
 +  none;
 +};
 +
 +# Qual servidor vai ser notificado em caso de alguma modificação nas zonas.
 +allow-notify {
 + ​dns_master;​
 +};
 +
 +
 +# Agora precisamos inserir os arquivos de configuração da zona interna
 +# Aqui os arquivos são divididos por funcionalidades.
 +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 o arquivo de controle da 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"​ {
 +
 +# Quais Clientes que podem consultar esta view.
 +match-clients {
 + ​!internal_hosts;​
 + any;
 +};
 +
 +# Os clientes desta view não podem efetuar consultas recursivas.
 +recursion no;
 +
 +# Qual servidor está apto a receber transferencia de zona desta view.
 +allow-transfer {
 + none;
 +};
 +
 +# Qual servidor vai ser notificado caso tenha alguma alteração nas zonas de dns.
 +allow-notify {
 + ​dns_master;​
 +};
 +
 +# Inserindo os arquivos de controle da zona externa
 +# Os arquivos são divididos por funcionalidade.
 +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 criar o arquivo de configuração das 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";​
 +};
 +</​sxh>​
 +
 +Agora precisamos configurar o arquivo das zonas slave internas.
 +<sxh bash>
 +vim /​etc/​bind/​zones/​internal/​named.conf.internal.slave-zones
 +#/​etc/​bind/​zones/​internal/​named.conf.internal.slave-zones
 +zone "​clinic.net.br"​ {
 +         type slave;
 +         ​masters { 192.168.25.150;​ }; # Endereço ip do servidor Dns Master.
 +         ​transfer-source ​ 192.168.25.151;​ # Endereço ip que ficara aguardando por replicações para a zona interna.
 +         file "​slave/​db.clinic.net.br-internal";​
 +};
 +
 +# Sua zona interna reversa, esta zona vai armazenar os endereços ips reversos da sua rede
 +# Ips da LAN
 +zone "​25.168.192.in-addr.arpa"​ {
 +      type slave;
 +      masters { 192.168.25.150;​ }; # Endereço ip do servidor Dns Master.
 +      transfer-source ​ 192.168.25.151;​ # Endereço ip que ficara aguardando por replicações para a zona interna.
 +      file "​slave/​db.25.168.192-internal";​
 +};
 +</​sxh>​
 +
 +Agora precisamos configurar o arquivo das zonas slave externas.
 +<sxh bash>
 +vim /​etc/​bind/​zones/​external/​named.conf.external.slave-zones
 +#/​etc/​bind/​zones/​external/​named.conf.external.master-zones
 +zone "​clinic.net.br"​ {
 +         type slave;
 +         ​masters { 192.168.25.150;​ }; #  Endereço ip do servidor Dns Master.
 +         ​transfer-source 192.168.25.152;​ #  Endereço ip que ficara aguardando por replicações para a zona interna.
 +         file "​slave/​db.clinic.net.br-external";​
 +};
 +
 +# Zona externa reversa
 +zone "​220.7.201.in-addr.arpa"​ {
 +      type slave;
 +      masters { 192.168.25.150;​ }; #  Endereço ip do servidor Dns Master.
 +      transfer-source 192.168.25.152;​ #  Endereço ip que ficara aguardando por replicações para a zona interna.
 +      file "​slave/​db.220.7.201-external";​
 +};
 +
 +# Zona externa reversa
 +zone "​221.7.201.in-addr.arpa"​ {
 +      type slave;
 +      masters { 192.168.25.150;​ }; #  Endereço ip do servidor Dns Master.
 +      transfer-source 192.168.25.152;​ #  Endereço ip que ficara aguardando por replicações para a zona interna.
 +      file "​slave/​db.221.7.201-external";​
 +};
 +
 +# Zona externa reversa
 +zone "​222.7.201.in-addr.arpa"​ {
 +      type slave;
 +      masters { 192.168.25.150;​ }; #  Endereço ip do servidor Dns Master.
 +      transfer-source 192.168.25.152;​ #  Endereço ip que ficara aguardando por replicações para a zona interna.
 +      file "​slave/​db.222.7.201-external";​
 +};
 +
 +# Zona externa reversa
 +zone "​223.7.201.in-addr.arpa"​ {
 +      type slave;
 +      masters { 192.168.25.150;​ }; #  Endereço ip do servidor Dns Master.
 +      transfer-source 192.168.25.152;​ #  Endereço ip que ficara aguardando por replicações para a zona interna.
 +      file "​slave/​db.223.7.201-external";​
 +};
 +</​sxh>​
 +
 +
 +Agora vamos criar alguns arquivos que podem ser utilizados futuramente,​ com isso precisamos criar eles somente com uma linha de comentário informando a sua localização.
 +
 +Zonas de forward da view interna.
 +<sxh bash>
 +vim /​etc/​bind/​zones/​internal/​named.conf.internal.forward-zones
 +#/​etc/​bind/​zones/​internal/​named.conf.internal.forward-zones
 +</​sxh>​
 +
 +Zonas de forward da view externa.
 +<sxh bash>
 +vim /​etc/​bind/​zones/​external/​named.conf.external.forward-zones
 +#/​etc/​bind/​zones/​external/​named.conf.external.forward-zones
 +</​sxh>​
 +
 +Zonas master da 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 precisamos recarregar a configuração dos serviços e iniciar o Dns.
 +<sxh bash>
 +systemctl daemon-reload
 +systemctl start bind9
 +</​sxh>​
 +
 +Agora vamos verificar se o serviço foi iniciado corretamente.
 +<sxh bash>
 +systemctl status bind9
 +● bind9.service - BIND Domain Name Server
 +   ​Loaded:​ loaded (/​etc/​systemd/​system/​bind9.service;​ enabled)
 +  Drop-In: /​run/​systemd/​generator/​bind9.service.d
 +           ​└─50-insserv.conf-$named.conf
 +   ​Active:​ active (running) since Sun 2016-05-22 12:42:01 BRT; 3s ago
 +     Docs: man:​named(8)
 +  Process: 1896 ExecStop=/​usr/​sbin/​rndc stop (code=exited,​ status=0/​SUCCESS)
 + Main PID: 1900 (named)
 +   ​CGroup:​ /​system.slice/​bind9.service
 +           ​└─1900 /​usr/​sbin/​named -f -u bind -t /​var/​lib/​named
 +
 +May 22 12:42:01 dns2 named[1900]:​ zone clinic.net.br/​IN/​external:​ Transfer started.
 +May 22 12:42:01 dns2 named[1900]:​ zone clinic.net.br/​IN/​external:​ transferred serial 2016052201
 +May 22 12:42:02 dns2 named[1900]:​ zone 221.7.201.in-addr.arpa/​IN/​external:​ Transfer started.
 +May 22 12:42:02 dns2 named[1900]:​ zone 220.7.201.in-addr.arpa/​IN/​external:​ Transfer started.
 +May 22 12:42:02 dns2 named[1900]:​ zone 220.7.201.in-addr.arpa/​IN/​external:​ transferred serial 2016052201
 +May 22 12:42:02 dns2 named[1900]:​ zone 222.7.201.in-addr.arpa/​IN/​external:​ Transfer started.
 +May 22 12:42:02 dns2 named[1900]:​ zone 221.7.201.in-addr.arpa/​IN/​external:​ transferred serial 2016052201
 +May 22 12:42:02 dns2 named[1900]:​ zone 223.7.201.in-addr.arpa/​IN/​external:​ Transfer started.
 +May 22 12:42:02 dns2 named[1900]:​ zone 222.7.201.in-addr.arpa/​IN/​external:​ transferred serial 2016052201
 +May 22 12:42:02 dns2 named[1900]:​ zone 223.7.201.in-addr.arpa/​IN/​external:​ transferred serial 2016052201
 +</​sxh>​
 +
 +Now podemos notar que o serviço está rodando normalmente e que já recebemos as replicações do servidor master.
 +
 +Agora vamos checar o www.clinic.net.br
 +<sxh bash>
 +nslookup www.clinic.net.br
 +Server:​ 127.0.0.1
 +Address:​ 127.0.0.1#​53
 +
 +Name:​ www.clinic.net.br
 +Address: 192.168.25.156
 +</​sxh>​
 +
 +Vamos consultar o reverso do www.clinic.net.br
 +<sxh bash>
 +host 192.168.25.156
 +156.25.168.192.in-addr.arpa domain name pointer www.clinic.net.br.
 +</​sxh>​
 +
 +Agora vamos consultar com o dig
 +<sxh bash>
 +dig -x 192.168.25.156
 +
 +; <<>>​ DiG 9.9.5-9+deb8u6-Debian <<>>​ -x 192.168.25.156
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 18538
 +;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4
 +
 +;; OPT PSEUDOSECTION:​
 +; EDNS: version: 0, flags:; udp: 4096
 +;; QUESTION SECTION:
 +;​156.25.168.192.in-addr.arpa. IN PTR
 +
 +;; ANSWER SECTION:
 +156.25.168.192.in-addr.arpa. 86400 IN PTR www.clinic.net.br.
 +
 +;; AUTHORITY SECTION:
 +25.168.192.in-addr.arpa. 86400 IN NS ns1.clinic.net.br.
 +25.168.192.in-addr.arpa. 86400 IN NS clinic.net.br.
 +25.168.192.in-addr.arpa. 86400 IN NS ns2.clinic.net.br.
 +
 +;; ADDITIONAL SECTION:
 +ns1.clinic.net.br. 86400 IN A 192.168.25.150
 +ns2.clinic.net.br. 86400 IN A 192.168.25.151
 +clinic.net.br. 86400 IN A 192.168.25.156
 +
 +;; Query time: 0 msec
 +;; SERVER: 127.0.0.1#​53(127.0.0.1)
 +;; WHEN: Sun May 22 12:44:04 BRT 2016
 +;; MSG SIZE  rcvd: 185
 +</​sxh>​
 +
 +Agora vamos checar o ns1.clinic.net.br
 +<sxh bash>
 +nslookup ns1.clinic.net.br
 +Server:​ 127.0.0.1
 +Address:​ 127.0.0.1#​53
 +
 +Name:​ ns1.clinic.net.br
 +Address: 192.168.25.150
 +</​sxh>​
 +
 +Agora vamos testar as consultas recursivas.
 +<sxh bash>
 +nslookup www.terra.com.br
 +Server: ​  ​127.0.0.1
 +Address: ​ 127.0.0.1#​53
 +
 +Non-authoritative answer:
 +www.terra.com.br ​ canonical name = web-portal-cdn.terra.com.br.
 +Name: web-portal-cdn.terra.com.br
 +Address: 200.192.176.65
 +</​sxh>​
 +
 +Agora vamos inverter a configuração da consulta das zonas para podermos validar o dns reverso externo
 +
 +Vamos alterar a zona externa.
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.external-zones
 +[...]
 +# Quais Clientes que podem consultar esta view.
 +match-clients {
 + ​internal_hosts;​
 + any;
 +};
 +</​sxh>​
 +
 +Agora vamos a configuração da zona interna
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.internal-zones
 +[...]
 +# Definindo quais clientes podem utilizar estar zona.
 +match-clients {
 + ​!internal_hosts;​
 +};
 +</​sxh>​
 +
 +Agora vamos reiniciar o serviço do bind9
 +<sxh bash>
 +systemctl restart bind9
 +</​sxh>​
 +
 +Agora vamos consultar o www.clinic.net.br
 +<sxh bash>
 +nslookup www.clinic.net.br
 +Server:​ 127.0.0.1
 +Address:​ 127.0.0.1#​53
 +
 +Name:​ www.clinic.net.br
 +Address: 201.7.220.156
 +</​sxh>​
 +
 +Agora vamos consultar o reverso deste ip
 +<sxh bash>
 +host 201.7.220.156
 +156.220.7.201.in-addr.arpa domain name pointer www.clinic.net.br.
 +</​sxh>​
 +
 +Agora vamos consultar com o dig
 +<sxh bash>
 +dig -x 201.7.220.156
 +
 +; <<>>​ DiG 9.9.5-9+deb8u6-Debian <<>>​ -x 201.7.220.156
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 5967
 +;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4
 +;; WARNING: recursion requested but not available
 +
 +;; OPT PSEUDOSECTION:​
 +; EDNS: version: 0, flags:; udp: 4096
 +;; QUESTION SECTION:
 +;​156.220.7.201.in-addr.arpa. IN PTR
 +
 +;; ANSWER SECTION:
 +156.220.7.201.in-addr.arpa. 86400 IN PTR www.clinic.net.br.
 +
 +;; AUTHORITY SECTION:
 +220.7.201.in-addr.arpa. 86400 IN NS clinic.net.br.
 +220.7.201.in-addr.arpa. 86400 IN NS ns2.clinic.net.br.
 +220.7.201.in-addr.arpa. 86400 IN NS ns1.clinic.net.br.
 +
 +;; ADDITIONAL SECTION:
 +ns1.clinic.net.br. 86400 IN A 201.7.220.150
 +ns2.clinic.net.br. 86400 IN A 201.7.220.151
 +clinic.net.br. 86400 IN A 201.7.220.156
 +
 +;; Query time: 0 msec
 +;; SERVER: 127.0.0.1#​53(127.0.0.1)
 +;; WHEN: Sun May 22 12:48:18 BRT 2016
 +;; MSG SIZE  rcvd: 184
 +</​sxh>​
 +
 +Agora vamos fazer uma consulta do terceiro escopo
 +<sxh bash>
 +nslookup www3.clinic.net.br
 +Server:​ 127.0.0.1
 +Address:​ 127.0.0.1#​53
 +
 +Name:​ www3.clinic.net.br
 +Address: 201.7.222.1
 +</​sxh>​
 +
 +Agora vamos consultar o reverso
 +<sxh bash>
 +host 201.7.222.1
 +1.222.7.201.in-addr.arpa domain name pointer www3.clinic.net.br.
 +</​sxh>​
 +
 +Agora vamos consultar com o dig
 +<sxh bash>
 +dig -x 201.7.222.1
 +
 +; <<>>​ DiG 9.9.5-9+deb8u6-Debian <<>>​ -x 201.7.222.1
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 43259
 +;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4
 +;; WARNING: recursion requested but not available
 +
 +;; OPT PSEUDOSECTION:​
 +; EDNS: version: 0, flags:; udp: 4096
 +;; QUESTION SECTION:
 +;​1.222.7.201.in-addr.arpa. IN PTR
 +
 +;; ANSWER SECTION:
 +1.222.7.201.in-addr.arpa. 86400 IN PTR www3.clinic.net.br.
 +
 +;; AUTHORITY SECTION:
 +222.7.201.in-addr.arpa. 86400 IN NS clinic.net.br.
 +222.7.201.in-addr.arpa. 86400 IN NS ns2.clinic.net.br.
 +222.7.201.in-addr.arpa. 86400 IN NS ns1.clinic.net.br.
 +
 +;; ADDITIONAL SECTION:
 +ns1.clinic.net.br. 86400 IN A 201.7.220.150
 +ns2.clinic.net.br. 86400 IN A 201.7.220.151
 +clinic.net.br. 86400 IN A 201.7.220.156
 +
 +;; Query time: 0 msec
 +;; SERVER: 127.0.0.1#​53(127.0.0.1)
 +;; WHEN: Sun May 22 12:49:57 BRT 2016
 +;; MSG SIZE  rcvd: 183
 +</​sxh>​
 +
 +Agora vamos voltar as configurações do nosso dns.
 +
 +Vamos alterar a zona externa.
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.external-zones
 +[...]
 +# Quais Clientes que podem consultar esta view.
 +match-clients {
 + ​!internal_hosts;​
 + any;
 +};
 +</​sxh>​
 +
 +Agora vamos a configuração da zona interna
 +<sxh bash>
 +vim /​etc/​bind/​named.conf.internal-zones
 +[...]
 +# Definindo quais clientes podem utilizar estar zona.
 +match-clients {
 + ​internal_hosts;​
 +};
 +</​sxh>​
 +
 +Agora vamos reiniciar o serviço do bind9
 +<sxh bash>
 +systemctl restart bind9
 +</​sxh>​
 +
 +Agora vamos consultar o www.clinic.net.br
 +<sxh bash>
 +nslookup www.clinic.net.br
 +Server:​ 127.0.0.1
 +Address:​ 127.0.0.1#​53
 +
 +Name:​ www.clinic.net.br
 +Address: 192.168.25.156
 +</​sxh>​
 +
 +Agora vamos consultar o reverso deste ip
 +<sxh bash>
 +host 192.168.25.156
 +156.25.168.192.in-addr.arpa domain name pointer www.clinic.net.br.
 +</​sxh>​
 +
 +Agora vamos consultar com o dig
 +<sxh bash>
 +dig -x 192.168.25.156
 +
 +; <<>>​ DiG 9.9.5-9+deb8u6-Debian <<>>​ -x 192.168.25.156
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 12586
 +;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4
 +
 +;; OPT PSEUDOSECTION:​
 +; EDNS: version: 0, flags:; udp: 4096
 +;; QUESTION SECTION:
 +;​156.25.168.192.in-addr.arpa. IN PTR
 +
 +;; ANSWER SECTION:
 +156.25.168.192.in-addr.arpa. 86400 IN PTR www.clinic.net.br.
 +
 +;; AUTHORITY SECTION:
 +25.168.192.in-addr.arpa. 86400 IN NS clinic.net.br.
 +25.168.192.in-addr.arpa. 86400 IN NS ns2.clinic.net.br.
 +25.168.192.in-addr.arpa. 86400 IN NS ns1.clinic.net.br.
 +
 +;; ADDITIONAL SECTION:
 +ns1.clinic.net.br. 86400 IN A 192.168.25.150
 +ns2.clinic.net.br. 86400 IN A 192.168.25.151
 +clinic.net.br. 86400 IN A 192.168.25.156
 +
 +;; Query time: 0 msec
 +;; SERVER: 127.0.0.1#​53(127.0.0.1)
 +;; WHEN: Sun May 22 12:51:50 BRT 2016
 +;; MSG SIZE  rcvd: 185
 +</​sxh>​
 +
 +
 +Agora precisamos ajustar o logrotate para que ele possa rotacionar os logs do Dns.
 +<sxh bash>
 +vim /​etc/​logrotate.d/​named ​
 +/​var/​lib/​named/​var/​log/​*.log {
 +  weekly
 +  missingok
 +  rotate 7
 +  postrotate
 +    /​bin/​systemctl reload bind9 > /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
 +  - https://​www.freeture.ch/?​p=782