Differences

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

Link to this comparison view

instalacao_e_configuracao_do_bind_master_no_debian_wheezy_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalação e Configuração do Bind Master no Debian Wheezy ======
  
 +E ai galera, aqui eu vou disponibilizar um script para configuração do Bind 9 trabalhando como Master no Debian Wheezy, aqui vocês precisam mudar o domínio e os endereços ips antes de rodar o script.
 +
 +**OBS:** A View Externa eu setei os endereços ips como 200.200.200.* caso precise trabalhar com o DNS para a Web mude os ips para os seus ips externos.
 +
 +<sxh bash>
 +#!/bin/sh
 +#​=============================================================================#​
 +# NOTA DE LICENCA ​                                                            #
 +#                                                                             #
 +# Este trabalho esta licenciado sob uma Licenca Creative Commons Atribuicao- ​ #
 +# Compartilhamento pela mesma Licenca 3.0 Brasil. Para ver uma copia desta    #
 +# licenca, visite http://​creativecommons.org/​licenses/​by/​3.0/​br/ ​             #
 +# ou envie uma carta para Creative Commons, 171 Second Street, Suite 300,     #
 +# San Francisco, California 94105, USA.                                       #
 +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
 +# Criado por :                                              #
 +#    Douglas Quintiliano dos Santos | douglas.q.santos@gmail.com 19/​05/​2013 ​  #
 +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
 +#                                                                             #
 +# Funcao: Script para realizar configuração de servidores DNS MASTER ​    
 +# No Debian Wheezy
 +#                                                                             #
 +#​=============================================================================#​
 +### COMANDOS ##
 +APTITUDE="/​usr/​bin/​aptitude"​
 +CAT="/​bin/​cat"​
 +CHMOD="/​bin/​chmod"​
 +CHOWN="/​bin/​chown"​
 +DATA="/​bin/​date"​
 +CP="/​bin/​cp"​
 +LN="/​bin/​ln"​
 +MV="/​bin/​mv"​
 +MKDIR="/​bin/​mkdir"​
 +MKNOD="/​bin/​mknod"​
 +SLEEP="/​bin/​sleep"​
 +CUT="/​bin/​cut"​
 +CP="/​bin/​cp"​
 +IP=$(ifconfig eth0 | awk '/inet end/ {print $3}')
 +PACOTES_BIND="​bind9 dnsutils"​
 +PATH_BIND="/​var/​lib/​named"​
 +
 +#MUDAR OS VALORES ABAIXO DE ACORDO COM A SUA NECESSIDADE
 +#DEFININDO O DOMINIO
 +DOMINIO="​douglas.lan"​
 +#DEFININDO A REDE
 +REDE="​192.168.0.0/​24"​
 +#DEFININDO O IP DO NS1
 +NS1_IP=${IP}
 +#DEFININDO O IP DO MX
 +MX_IP=${IP}
 +#DEFININDO O IP DO WWW
 +WWW_IP=${IP}
 +#DEFININDO O IP DO NS2 QUE VAI RECEBER A VIEW INTERNA
 +NS2_IP=192.168.0.84
 +#DEFININDO O IP DO NS2 QUE VAI RECEBER A VIEW EXTERNA
 +NS2_IP2=192.168.0.85
 +
 +### INSTALACAO DO PACOTE ###
 +${APTITUDE} update
 +${APTITUDE} install ${PACOTES_BIND} -y
 +
 +### Parar o serviço para podermos configurá-lo
 +/​etc/​init.d/​bind9 stop
 +
 +
 +### ARVORE DE DIRETORIOS ###
 +${MKDIR} -p ${PATH_BIND}/​etc
 +${MKDIR} -p ${PATH_BIND}/​dev
 +${MKDIR} -p ${PATH_BIND}/​var/​log
 +${MKDIR} -p ${PATH_BIND}/​var/​cache/​bind
 +${MKDIR} -p ${PATH_BIND}/​var/​cache/​bind/​dynamic
 +${MKDIR} -p ${PATH_BIND}/​var/​run/​bind/​run
 +
 +### CRIANDO OS DISPOSITIVOS NECESSARIOS ###
 +${MKNOD} ${PATH_BIND}/​dev/​null c 1 3
 +${MKNOD} ${PATH_BIND}/​dev/​random c 1 8
 +${MKNOD} ${PATH_BIND}/​dev/​zero c 1 5
 +
 +### AJUSTANDO AS PERMISSOES ###
 +${CHMOD} 666 ${PATH_BIND}/​dev/​null
 +${CHMOD} 666 ${PATH_BIND}/​dev/​random
 +${CHMOD} 666 ${PATH_BIND}/​dev/​zero
 +${CHOWN} -R bind:bind ${PATH_BIND}/​var/​*
 +
 +### AJUSTANDO A LOCALIZACAO DOS ARQUIVOS
 +${MV} /etc/bind ${PATH_BIND}/​etc
 +${LN} -sf ${PATH_BIND}/​etc/​bind /etc/bind
 +${CP} /​etc/​localtime ${PATH_BIND}/​etc
 +
 +### AJUSTANDO AS PERMISSOES NOVAMENTE
 +${CHOWN} -R bind:bind ${PATH_BIND}/​etc/​bind
 +${CHOWN} -R bind:bind ${PATH_BIND}/​var/​cache/​bind/​dynamic
 +${CHMOD} -R 775 ${PATH_BIND}/​var/​cache/​bind/​dynamic
 +
 +
 +
 +### AJUSTANDO O ARQUIVO /​etc/​default/​bind9 ###
 +${CAT} <<EOF > /​etc/​default/​bind9
 +#/​etc/​default/​bind9
 +RESOLVCONF=yes
 +OPTIONS="​-u bind -t ${PATH_BIND}"​
 +EOF
 +
 +
 +### AJUSTANDO O ARQUIVO /​etc/​resolv.conf ###
 +${CAT} <<EOF > /​etc/​resolv.conf
 +domain ${DOMINIO}
 +nameserver ${NS1_IP}
 +EOF
 +
 +#ESTRAINDO O REVERSO DO NS1
 +REV3=$(echo ${NS1_IP} | cut -d '​.'​ -f 3)
 +REV2=$(echo ${NS1_IP} | cut -d '​.'​ -f 2)
 +REV1=$(echo ${NS1_IP} | cut -d '​.'​ -f 1)
 +IP_REVERSE=${REV3}.${REV2}.${REV1}
 +
 +
 +### AJUSTANDO O ARQUIVO /​srv/​bind/​etc/​bind/​named.conf.options ###
 +${CP} ${PATH_BIND}/​etc/​bind/​named.conf.options ${PATH_BIND}/​etc/​bind/​named.conf.options.bkp
 +${CAT} <<EOF > ${PATH_BIND}/​etc/​bind/​named.conf.options
 +options {
 +  directory "/​var/​cache/​bind";​
 +  managed-keys-directory "/​var/​cache/​bind/​dynamic";​
 +  auth-nxdomain no;
 +  listen-on-v6 { any; };
 +  listen-on { 127.0.0.1/​32;​ ${REDE}; };
 +  allow-query { any; };
 +  recursion no;
 +  version "Nao Disponivel";​
 +  ### DNSSEC ###
 +  dnssec-enable no;
 +  dnssec-validation no;
 +  dnssec-lookaside auto;
 +};
 +
 +#Controles
 +include "/​etc/​bind/​rndc.key";​
 +controls {
 +        inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; };
 +};
 +
 +#LOGS
 +logging {
 +  channel xfer-log {
 +  file "/​var/​log/​named.log";​
 +  print-category yes;
 +  print-severity yes;
 +  print-time yes;
 +  severity info;
 +  };
 +
 +  category xfer-in { xfer-log; };
 +  category xfer-out { xfer-log; };
 +  category notify { xfer-log; };
 +
 +  channel update-debug {
 +  file "/​var/​log/​named-update-debug.log";​
 +  severity ​ debug 3;
 +  print-category yes;
 +  print-severity yes;
 +  print-time ​     yes;
 +  };
 +
 +  channel security-info ​   {
 +  file "/​var/​log/​named-auth-info.log";​
 +  severity ​ info;
 +  print-category yes;
 +  print-severity yes;
 +  print-time ​     yes;
 +  };
 +
 +  category update { update-debug;​ };
 +  category security { security-info;​ };
 +};
 +
 +#Controle de ancoras de DNSSEC
 +include "/​etc/​bind/​bind.keys";​
 +EOF
 +
 +### AJUSTANDO O ARQUIVO ${PATH_BIND}/​etc/​bind/​named.conf.local ###
 +${CP} ${PATH_BIND}/​etc/​bind/​named.conf ${PATH_BIND}/​etc/​bind/​named.conf.bkp
 +${CAT} <<EOF > ${PATH_BIND}/​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";​
 +EOF
 +
 +
 +
 +### AJUSTANDO O ARQUIVO DE ZONAS INTERNAS ###
 +${CAT} << EOF > ${PATH_BIND}/​etc/​bind/​named.conf.internal-zones
 +#Definindo quem vão ser os nossos hosts internos, ex: a nossa rede e a maquina local
 +acl "​internal_hosts"​ {
 + ​${REDE};​
 + ​127.0.0.1/​32;​
 +};
 +
 +#Definindo qual vai ser o ip do servidor slave que vai poder receber a replicação da view internal
 +acl "​internal_slave"​ {
 + ​${NS2_IP};​
 +};
 +
 +#​Definição da View interna
 +view "​internal"​ {
 +
 +#Definindo quais clientes vão poder consultar essa view
 + ​match-clients {
 + ​!${NS2_IP2};​
 + ​internal_hosts;​
 + };
 +
 +#O nossos clientes da view interna vão poder efetuar consultas recursivas
 + ​recursion yes;
 +
 +#Para qual servidor vai ser liberado a transferencia dessa view.
 + ​allow-transfer {
 + ​internal_slave;​
 + };
 +
 +#Quem o bind vai notificar em caso de alterações de zona.
 + ​also-notify {
 + ​${NS2_IP};​
 + };
 +
 +#Zonas hint aonde temos as definições dos root masters
 + zone "​."​ {
 + type hint;
 + file "/​etc/​bind/​db.root";​
 + };
 +
 +#Zonas internas
 + zone "​localhost"​ {
 + type master;
 + file "/​etc/​bind/​db.local";​
 + };
 +
 +zone "​127.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.127";​
 + };
 +
 + zone "​0.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.0";​
 + };
 +
 + zone "​255.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.255";​
 + };
 +
 +### CONFIGURAÇÕES DO DOMINIO INTERNO
 + zone "​${DOMINIO}"​ {
 + type master;
 + file "​db.${DOMINIO}.internal";​
 + };
 +
 + zone "​${IP_REVERSE}.in-addr.arpa"​ {
 + type master;
 + file "​db.${IP_REVERSE}";​
 + };
 +
 +};
 +EOF
 +
 +### AJUSTANDO O ARQUIVO DE ZONAS EXTERNAS ###
 +${CAT} << EOF > ${PATH_BIND}/​etc/​bind/​named.conf.external-zones
 +#Definindo os clientes locais o nome dessa acl tem que ser diferente da acl da view interna
 +acl "​rede_local"​ {
 + ​${REDE};​
 + ​127.0.0.1/​32;​
 +};
 +
 +#Defindo o ip do servidor slave para a view externa
 +acl "​external_slave"​ {
 + ​${NS2_IP2};​
 +};
 +
 +#​Definição da View externa
 +view "​external"​ {
 +
 + #​Definição dos clientes que vão poder consultar essa view
 + ​match-clients {
 + ​external_slave;​
 + ​!rede_local;​
 + any;
 + };
 +
 + #Os clientes dessa view não vão poder efetuar consultas recursivas
 + ​recursion no;
 +
 + #Para qual servidor vai ser liberada a transferencia dessa view
 + ​allow-transfer {
 + ​external_slave;​
 + };
 +
 + #Quem o bind vai notificar quando for efetuada alguma alteração nas zonas
 + ​also-notify {
 + ​${NS2_IP2};​
 + };
 +
 + #A minha zona de teste.
 + zone "​${DOMINIO}"​ {
 + type master;
 + file "​db.${DOMINIO}.external";​
 + };
 +};
 +EOF
 +
 +
 +
 +### AJUSTANDO O ARQUIVO DE ZONA INTERNA
 +${CAT} <<EOF > ${PATH_BIND}/​var/​cache/​bind/​db.${DOMINIO}.internal
 +`echo '$TTL 86400'​`
 +@ IN SOA  dns.${DOMINIO}. root.dns.${DOMINIO}. (
 +                        `date +%Y%m%d`01 ​ ; Serial
 +                        3600       ; Refresh
 +                        1800        ; Retry
 +                        1209600 ​     ; Expire
 +                        3600 )     ; Minimum
 +
 +;
 +@   ​IN ​ NS   ​${DOMINIO}.
 +${DOMINIO}. IN TXT "​v=spf1 a mx ip4:${REDE} -all"
 +mail.${DOMINIO} IN TXT "​v=spf1 a -all"
 +
 +@               ​IN ​ NS   ​ns1.${DOMINIO}.
 +@               ​IN ​ NS   ​ns2.${DOMINIO}.
 +@               ​IN ​ MX   0 mail.${DOMINIO}.
 +
 +;NAME SERVERS
 +@               ​IN ​ A    ${NS1_IP}
 +ns1             ​IN ​ A    ${NS1_IP}
 +ns2             ​IN ​ A    ${NS2_IP}
 +dns             ​IN ​ A    ${NS1_IP}
 +
 +;MAIL SERVERS
 +mail            IN  A    ${MX_IP}
 +imap            IN  CNAME mail
 +pop             ​IN ​ CNAME mail
 +smtp            IN  CNAME mail
 +webmail ​        ​IN ​ CNAME mail
 +
 +;WEB SERVERS
 +www             ​IN ​ A    ${WWW_IP}
 +ftp             ​IN ​ CNAME www
 +mailadmin ​      ​IN ​ CNAME www
 +EOF
 +
 +
 +#Retirando os endereços finais para  o arquivo reverso------------------------
 +REV_NS1=$(echo ${NS1_IP} | cut -d '​.'​ -f 4)
 +REV_NS2=$(echo ${NS2_IP} | cut -d '​.'​ -f 4)
 +REV_MX=$(echo ${MX_IP} | cut -d '​.'​ -f 4)
 +REV_WWW=$(echo ${WWW_IP} | cut -d '​.'​ -f 4)
 +
 +
 +
 +### AJUSTANDO O ARQUIVO /​var/​lib/​named/​var/​cache/​bind/​db.0.168.192###​
 +${CAT} <<EOF > ${PATH_BIND}/​var/​cache/​bind/​db.${IP_REVERSE}
 +`echo '$TTL 86400'​`
 +@ IN SOA  dns.${DOMINIO}. root.dns.${DOMINIO}. (
 +                        `date +%Y%m%d`01 ​ ; Serial
 +                        3600       ; Refresh
 +                        1800        ; Retry
 +                        604800 ​     ; Expire
 +                        3600 )     ; Minimum
 +
 +;
 +@   ​IN ​ NS   ​${DOMINIO}.
 +@               ​IN ​ NS   ​ns1.${DOMINIO}.
 +@               ​IN ​ NS   ​ns2.${DOMINIO}.
 +@               ​IN ​ MX   0 mail.${DOMINIO}.
 +
 +;NAME SERVERS
 +${REV_NS1} ​     IN  PTR    ${DOMINIO}.
 +${REV_NS1} ​     IN  PTR    ns1.${DOMINIO}.
 +${REV_NS2} ​     IN  PTR    ns2.${DOMINIO}.
 +${REV_NS1} ​     IN  PTR    dns.${DOMINIO}.
 +
 +;MAIL SERVERS
 +${REV_MX} ​      ​IN ​ PTR    mail.${DOMINIO}.
 +
 +;WEB SERVERS
 +${REV_WWW} ​     IN  PTR    adm.${DOMINIO}.
 +${REV_WWW} ​     IN  PTR    www.${DOMINIO}.
 +EOF
 +
 +
 +### AJUSTANDO O ARQUIVO DE ZONA INTERNA
 +${CAT} <<EOF > ${PATH_BIND}/​var/​cache/​bind/​db.${DOMINIO}.external
 +`echo '$TTL 86400'​`
 +@ IN SOA  dns.${DOMINIO}. root.dns.${DOMINIO}. (
 +                        `date +%Y%m%d`01 ​ ; Serial
 +                        3600       ; Refresh
 +                        1800        ; Retry
 +                        1209600 ​     ; Expire
 +                        3600 )     ; Minimum
 +
 +;
 +@   ​IN ​ NS   ​${DOMINIO}.
 +${DOMINIO}. IN TXT "​v=spf1 a mx ip4:${REDE} -all"
 +mail.${DOMINIO} IN TXT "​v=spf1 a -all"
 +
 +@               ​IN ​ NS   ​ns1.${DOMINIO}.
 +@               ​IN ​ NS   ​ns2.${DOMINIO}.
 +@               ​IN ​ MX   0 mail.${DOMINIO}.
 +
 +;NAME SERVERS
 +@               ​IN ​ A    200.200.200.1
 +ns1             ​IN ​ A    200.200.200.1
 +ns2             ​IN ​ A    200.200.200.2
 +dns             ​IN ​ A    200.200.200.1
 +
 +;MAIL SERVERS
 +mail            IN  A    200.200.200.3
 +imap            IN  CNAME mail
 +pop             ​IN ​ CNAME mail
 +smtp            IN  CNAME mail
 +webmail ​        ​IN ​ CNAME mail
 +
 +;WEB SERVERS
 +www             ​IN ​ A    200.200.200.4
 +ftp             ​IN ​ CNAME www
 +mailadmin ​      ​IN ​ CNAME www
 +EOF
 +
 +
 +
 +### REINCIANDO O BIND9 ###
 +/​etc/​init.d/​bind9 start
 +</​sxh>​