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 Instalação e Configuração do Bind Master no Debian Wheezy para configurar o Bind Master
#!/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