Differences

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

Link to this comparison view

instalacao_e_configuracao_do_bind_slave_no_debian_wheezy_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalação e Configuração do Bind Slave no Debian Wheezy ======
  
 +E ai galera, aqui eu vou disponibilizar um script para configuração do Bind 9 trabalhando como Slave no Debian Wheezy, aqui vocês precisam mudar o domínio e os endereços ips antes de rodar o script.
 +
 +**OBS:** O servidor DNS Slave precisa ter dois endereços ips internos, pois aqui estou trabalhando com multi-view com isso cada view vai trabalhar por um endereço ip
 +
 +Ele vai servir se for utilizado o script [[http://​wiki.douglasqsantos.com.br/​doku.php/​instalacao_e_configuracao_do_bind_master_no_debian_wheezy_pt_br|Instalação e Configuração do Bind Master no Debian Wheezy]] para configurar o Bind Master
 +
 +<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 SLAVE       #
 +# 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}')
 +IP2=$(ifconfig eth1 | 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=192.168.0.83
 +#DEFININDO O IP DO NS2 QUE VAI RECEBER A VIEW INTERNA
 +NS2_IP=${IP}
 +#DEFININDO O IP DO NS2 QUE VAI RECEBER A VIEW EXTERNA
 +NS2_IP2=${IP2}
 +
 +#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}
 +
 +### 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/​slave
 +${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 ${NS2_IP}
 +EOF
 +
 +### 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
 +#/​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
 +#/​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
 +#Vamos definir quem é o nosso servidor master
 +acl "​dns_masters"​ {
 + ​${NS1_IP};​
 +};
 +
 +#Vamos definir quais são os nossos hosts internos
 +acl "​internal_hosts"​ {
 + ​${REDE};​
 + ​127.0.0.0/​32;​
 +};
 +
 +#​Definição da View interna
 +view "​internal"​ {
 +
 +#Vamos definir quais são os clientes dessa view
 + ​match-clients {
 + ​internal_hosts;​
 + };
 +
 + #Os clientes dessa view vão poder efetuar consultas recursvas
 + ​recursion yes;
 +
 + #​Quais os servidores que vão ser noficados caso ocorra alterações nas zonas.
 + ​allow-notify {
 + ​dns_masters;​
 + };
 +
 + #Nao disponibiliza transferencia de zona do servidor SLAVE
 + ​allow-transfer {
 + none;
 + };
 +
 + #Zona que define os root masters
 + zone "​."​ {
 + type hint;
 + file "/​etc/​bind/​db.root";​
 + };
 +
 + #​Zonas locais
 + zone "​localhost"​ {
 + type master;
 + file "/​etc/​bind/​db.local";​
 + };
 +
 + zone "​127.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.127";​
 + };
 +
 +zone "​0.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.0";​
 + };
 +
 + zone "​255.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.255";​
 + };
 +
 + #​Minha zona teste que vai ser replicada do servidor master na view interna.
 + zone "​${DOMINIO}"​ {
 + type slave;
 + ​masters { ${NS1_IP}; };
 + ​transfer-source ${NS2_IP};
 + file "​slave/​db.${DOMINIO}.internal";​
 + };
 +
 + zone "​${IP_REVERSE}.in-addr.arpa"​ {
 + type slave;
 + ​masters { ${NS1_IP}; };
 + ​transfer-source ${NS2_IP};
 + file "​slave/​db.${IP_REVERSE}";​
 + };
 +};
 +EOF
 +
 +### AJUSTANDO O ARQUIVO DE ZONAS EXTERNAS ###
 +${CAT} << EOF > ${PATH_BIND}/​etc/​bind/​named.conf.external-zones
 +#Vamos definir quem é o nosso servidor master
 +acl "​master"​ {
 + ​${NS1_IP};​
 +};
 +
 +#Vamos definir quais são os nossos hosts internos
 +acl "​rede_local"​ {
 + ​${REDE};​
 + ​127.0.0.0/​32;​
 +};
 +
 +#​Definição da View externa
 +view "​external"​ {
 +
 + #​Definindo quais os clientes que podem efetuar consultas nessa view e quais não podem
 + # o simbolo ''​ define que é uma negação então a rede local não pode pesquisar nessa view
 + ​match-clients {
 + ​!rede_local;​
 + any;
 + };
 +
 + #Os clientes dessa zona não podem efetuar consultas recursivas
 + ​recursion no;
 +
 + #Quem vai receber notificações de modificações dessa zona
 + ​allow-notify {
 + ​master;​
 + };
 +
 +#meu dominio
 + zone "​${DOMINIO}"​ {
 + type slave;
 + ​masters { ${NS1_IP}; };
 + ​transfer-source ${NS2_IP2};
 + file "​slave/​db.${DOMINIO}.external";​
 + };
 +};
 +EOF
 +
 +
 +### REINCIANDO O BIND9 ###
 +/​etc/​init.d/​bind9 start
 +</​sxh>​