Configurando um Domínio no BIND9 com Debian 3.1
Publicado por Edson G. de Lima 26/11/2005
[ Hits: 11.097 ]
Este script permite configurar um Domínio local em um Servidor de Nomes com suporte aos principais Servidores apenas respondendo perguntas relativas à rede.
Este script foi feito especificamente para a instalação "default" do Bind9 no Debian 3.1 .
Com certeza, para outras Distros, serão necessárias adaptações.
Os arquivos gerados são comentados.
Ideal para estudo, tanto do Bind, quanto das riquezas do Bash!
#!/bin/bash
#------------------------------------------------------
echo
echo "Limpando a sua tela..."
sleep 1
clear
trap "echo \"Por algum motivo, você cancelou a execução!\" ; exit" 2 3
echo
echo "Este script foi \"exaustivamente\" testado COM SUCESSO em uma instalação"
echo "rodando Debian 3.1 (Sarge). Nesta versão, o Bind9 está instalado no"
echo "diretório /etc/bind e utiliza o arquivo /etc/bind/named.conf.local"
echo "para a criação das zonas dos Domínios Locais."
echo
echo "Neste script existe um LEIA-ME. Recomenda-se sua leitura antes de prosseguir."
echo
echo "Neste script existem algumas VARIÁVEIS referentes à localização dos"
echo "arquivos do Bind9."
echo "Certifique-se de que em sua \"Distro\" os arquivos estejam nestes locais."
echo "Caso estejam em locais diferentes, por favor, faça os ajustes necessários."
echo
echo "Este script poderá ser modificado, e seu código aproveitado/melhorado!"
echo "Caso queira entrar em contato: Xxoin arroba yahoo ponto com ponto br"
echo
echo "Em hipótese alguma, o autor poderá ser responsabilizado por qualquer"
echo "coisa que possa ocorrer de errado. Ainda que seja por falha provocada"
echo "pelo script.Isto significa que ao fazer uso, você concorda em assumir"
echo "toda a responsabilidade!"
echo
read -n 1 -p "Tecle ENTER para continuar."
tput blink
echo
echo "IMPORTANTE:"
echo "-----------"
echo
tput sgr0
echo "Para o sucesso da execução, certifique-se de que o Bind9 com todas"
echo "as ferramentas e arquivos que o acompanham estejam instalados."
echo "Certifique-se também, de que sua rede já esteja configurada!"
echo
echo "FAÇA um BACKUP de todos os seus arquivos de configuração,"
echo "especialmente os do BIND9."
echo
echo "Ao final da execução deste script, o arquivo /etc/resolv.conf passará"
echo "a ter o IP desta máquina como \"nameserver\". Isto significa que, caso"
echo "você dê um stop no bind9, este arquivo terá que ser REeditado manualmente."
echo
echo "Deseja prosseguir?? s/n"
echo
read YN
if [ $YN = "s" ]; then
# Verificando se o usuário tem privilégios de root:
if [ `id -un` != root ]; then
echo
echo "Você NÃO está com privilégios de root."
echo "Será necessário logar-se como root e recomeçar."
echo
fi
echo "OK, vamos prosseguir!"
echo
else
echo "OK, vamos parar!"
echo
echo "Saindo..."
echo
exit
fi
#
# Capturando as variáveis da rede:
# Pegando os dados para montar um Name-Server:
echo
echo "ATENÇÃO: --> Na hora de responder às perguntas, observe que:"
echo
echo "1) Sempre que aparecer um menu, faça a escolha numérica correspondente."
echo
echo "2) Hostname é apenas o nome do computador na rede; é diferente de FQDN."
echo "O FQDN inclui o hostname.domínio !!!"
echo
echo "Deseja montar um Name-Server nesta máquina? (s)sim | (n)não"
read YN
if [ $YN = "s" ]; then
echo
echo "Você respondeu [ sim ]. Parando o serviço NAMED..."
echo
/etc/init.d/bind9 stop
echo
echo "Farei um backup dos arquivos de seu BIND9 em /root/bkp_etcbind"
mkdir /root/bkp_etcbind
cp -rf /etc/bind /root/bkp_etcbind
echo
echo "Serão necessários alguns dados sobre sua rede..."
echo
echo "Qual o Domínio a que esta máquina pertence. Ex teste.local"
read DM
echo
echo "Qual o IP da Rede? Coloque no formato 'addr.arpa'."
echo "Ex. Se sua rede for 10.1.1.0 ficará 1.1.10"
read REDE
echo
echo "Qual o hostname (nome) desta máquina? Ex. Xxoin"
echo "NÃO pode existir o caracter -ponto- (.) . NÃO pode ser apenas NS"
read HOSTNS
echo
echo "Qual o IP desta máquina?"
read IPNS
echo
echo "Crie um diretório temporário para armazenamento das variáveis."
echo "Exemplo: /tmp/dnstmp"
echo "Este diretório será excluído ao final da configuração"
read DIRTMP
else
echo
echo "Se sua intenção for montar um Servidor de DNS, digite \"s\" minúsculo."
echo
exit
fi
#----------------------------------------------------------------------------
# --- LEIA-ME --- LEIA-ME --- LEIA-ME --- LEIA-ME --- LEIA-ME --- LEIA-ME ---
# Talvez seja necessário você ajustar estas variáveis em conformidade
# com sua instalação:
# Definindo a localização dos arquivos do BIND:
# Todos os testes foram feitos utilizando a instalação "default" do Debian 3.1 .
# Nesta Distro, o Bind está instalado em /etc/bind e utiliza o arquivo
# /etc/bind/named.conf.local para criação de Domínios Locais.
# Diretório a ser a base no arquivo named.conf:
DIRBIND=/etc/bind
# Local onde o Bind deverá procurar o named.conf:
CONF=$DIRBIND/named.conf
# Local onde será gravado o registro.db de seu Domínio:
ARQDB=$DIRBIND/$DM.db
# Local onde será gravado o registro reverso de seu Domínio:
ARQREV=$DIRBIND/$DM.rev.db
# Arquivo named.conf.local:
NAMEDLOCAL=/$DIRBIND/named.conf.local
#------------------------------------------------------------------
#------------------------------------------------------------------
echo
echo "Vamos gravar as configurações no diretório temporário acima..."
echo
# Escrevendo a rede em forma addr.arpa:
if [ ! -d $DIRTMP ]; then
mkdir $DIRTMP
echo $REDE > $DIRTMP/net.tmp
echo $IPNS > $DIRTMP/ns.tmp
else
echo
echo "O diretório temporário indicado já existe. Impossível continuar..."
echo "Será necessário recomeçar! Saindo sem fazer nada..."
echo
exit
fi
# Descrevendo as funções:
# ---------------Abrindo função master:----------------------------
MASTER()
{
# Editando o arquivo /etc/bind/named.conf.local:
echo > $NAMEDLOCAL
echo >> $NAMEDLOCAL
echo \# Criando a zona principal do domínio \"$DM\" >> $NAMEDLOCAL
echo >> $NAMEDLOCAL
echo zone \"$DM\" \{ >> $NAMEDLOCAL
echo type master\; >> $NAMEDLOCAL
echo file \"$ARQDB\"\; >> $NAMEDLOCAL
echo \}\; >> $NAMEDLOCAL
echo >> $NAMEDLOCAL
echo >> $NAMEDLOCAL
echo \# Criando a zona reversa do Domínio \"$DM\" >> $NAMEDLOCAL
echo >> $NAMEDLOCAL
echo zone \"$REDE.in-addr.arpa\" \{ >> $NAMEDLOCAL
echo type master\; >> $NAMEDLOCAL
echo file \"$ARQREV\"\; >> $NAMEDLOCAL
echo \}\; >> $NAMEDLOCAL
echo >> $NAMEDLOCAL
# Criando arquivo domínio.db:
echo \; Este arquivo refere-se à zona principal do Domínio \"$DM\". > $ARQDB
echo >> $ARQDB
echo \$TTL 43200 >> $ARQDB
echo @ IN SOA $HOSTNS.$DM. root.$DM. \( >> $ARQDB
echo `date +%Y%m%d01` \; serial >> $ARQDB
echo 3600 \; refresh >> $ARQDB
echo 900 \; retry >> $ARQDB
echo 1209600 \; expire >> $ARQDB
echo 43200 \; default ttl >> $ARQDB
echo \) >> $ARQDB
echo >> $ARQDB
echo \; Servidor DNS: >> $ARQDB
echo @ IN NS $HOSTNS.$DM. >> $ARQDB
echo $HOSTNS IN A $IPNS >> $ARQDB
# Criando arquivo de zona reversa:
echo \; Este arquivo refere-se à zona reversa do Domínio \"$DM\" > $ARQREV
echo >> $ARQREV
echo \$TTL 43200 >> $ARQREV
echo @ IN SOA $HOSTNS.$DM root.$DM \( >> $ARQREV
echo `date +%Y%m%d01` \; serial >> $ARQREV
echo 3600 \; refresh >> $ARQREV
echo 900 \; retry >> $ARQREV
echo 1209600 \; expire >> $ARQREV
echo 43200 \; default_ttl >> $ARQREV
echo \) >> $ARQREV
echo >> $ARQREV
echo \; Servidor DNS: >> $ARQREV
echo @ IN NS $HOSTNS.$DM. >> $ARQREV
echo $(cut -d. -f4 $DIRTMP/ns.tmp) IN PTR $HOSTNS.$DM. >> $ARQREV
echo
echo
echo "Atenção!"
echo "Atenção!!"
echo "Atenção!!!"
echo
echo "Registrando outros Servidores do Domínio..."
echo
echo
echo "Seu Domínio terá um Servidor de Nomes Secundário? s/n"
read YN
if [ $YN = "s" ]; then
echo "Qual o hostname (nome) do Servidor de Nomes Secundário?"
echo "Não pode existir o caracter -ponto- (.) . Também NÃO pode ser NS"
read HOSTNS02
echo "Qual é o IP do Servidor de Nomes Secundário?"
read IPNS02
echo $IPNS02 > $DIRTMP/02.tmp
# Editando arquivo domínio.db e domínio.rev.db, referente ao NS02:
echo >> $ARQDB
echo \; Servidor NS2: >> $ARQDB
echo @ IN NS $HOSTNS02.$DM. >> $ARQDB
echo $HOSTNS02 IN A $IPNS02 >> $ARQDB
echo >> $ARQREV
echo \; Servidor NS2: >> $ARQREV
echo @ IN NS $HOSTNS02.$DM. >> $ARQREV
echo $(cut -d. -f4 $DIRTMP/02.tmp) IN PTR $HOSTNS02.$DM. >> $ARQREV
else
echo "Este DNS não está sendo configurado para trabalhar com um DNS_Slave."
fi
echo
echo
echo "Seu Domínio terá um Servidor de Correio? s/n"
read YN
if [ $YN = "s" ]; then
echo "Qual o hostname (nome) do Servidor de Correio?"
echo "NÃO pode existir o caracter -ponto- (.) ."
read HOSTMAIL
echo "Qual o IP do Servidor de Correio?"
read IPMAIL
echo $IPMAIL > $DIRTMP/mx.tmp
# Editando arquivo domínio.db e domínio.rev.db, referente ao MailServer:"
echo >> $ARQDB
echo \; Servidor de e-mail: >> $ARQDB
echo @ IN MX 5 $HOSTMAIL.$DM. >> $ARQDB
echo $HOSTMAIL IN A $IPMAIL >> $ARQDB
echo mail IN CNAME $HOSTMAIL >> $ARQDB
echo >> $ARQREV
echo \; Servidor de e-mail: >> $ARQREV
echo $(cut -d. -f4 $DIRTMP/mx.tmp) IN PTR $HOSTMAIL.$DM. >> $ARQREV
else
echo "Este DNS não está sendo configurado para trabalhar com um MailServer."
fi
echo
echo
echo "Seu Domínio terá um Servidor Web? s/n"
read YN
if [ $YN = "s" ]; then
echo "Qual o hostname (nome) do Servidor Web?"
echo "NÃO pode existir o caracter -ponto- (.) ."
read HOSTWEB
echo "Qual o IP do Servidor Web?"
read IPWEB
echo $IPWEB > $DIRTMP/wb.tmp
# Editando arquivo domínio.db e domínio.rev.db, referente ao WebServer:
echo >> $ARQDB
echo \; Servidor Web: >> $ARQDB
echo $HOSTWEB IN A $IPWEB >> $ARQDB
echo www IN CNAME $HOSTWEB >> $ARQDB
echo >> $ARQREV
echo \; Servidor Web: >> $ARQREV
echo $(cut -d. -f4 $DIRTMP/wb.tmp) IN PTR $HOSTWEB.$DM. >> $ARQREV
else
echo "Este DNS não está sendo configurado para trabalhar com um WebServer."
fi
echo
echo
echo "Seu Domínio terá um Servidor de FTP? s/n"
read YN
if [ $YN = "s" ]; then
echo "Qual o hostname (nome) do Servidor de FTP?"
echo "Não pode existir o caracter -ponto- (.) ."
read HOSTFTP
echo "Qual é o IP do Servidor FTP?"
read IPFTP
echo $IPFTP > $DIRTMP/ft.tmp
# Editando arquivo domínio.db e domínio.rev.db, referente ao Ftpserver:
echo >> $ARQDB
echo \; Servidor FTP: >> $ARQDB
echo $HOSTFTP IN A $IPFTP >> $ARQDB
echo ftp IN CNAME $HOSTFTP >> $ARQDB
echo >> $ARQDB
echo >> $ARQREV
echo \; Servidor FTP: >> $ARQREV
echo $(cut -d. -f4 $DIRTMP/ft.tmp) IN PTR $HOSTFTP.$DM. >> $ARQREV
echo >> $ARQREV
else
echo "Este DNS não está sendo configurado para trabalhar com um FtpServer."
fi
echo
}
#------------- Fechada a função master-------------------------------
#------------------- Abrindo função slave:----------------------------
SLAVE()
{
echo "Esta configuração requer o IP do Servidor Primário..."
echo "Digite o IP do Servidor de nomes principal:"
read MASTER
#Permitindo que o Servidor Primário grave os registros:
chown -R named $DIRBIND
chgrp -R named $DIRBIND
# Criando arquivo named.conf.local:
# Editando o arquivo /etc/bind/named.conf.local:
echo > $NAMEDLOCAL
echo >> $NAMEDLOCAL
echo \# Criando a zona principal do domínio \"$DM\" >> $NAMEDLOCAL
echo >> $NAMEDLOCAL
echo zone \"$DM\" \{ >> $NAMEDLOCAL
echo type slave\; >> $NAMEDLOCAL
echo file \"$ARQDB\"\; >> $NAMEDLOCAL
echo masters \{ $MASTER\; \}\; >> $NAMEDLOCAL
echo \}\; >> $NAMEDLOCAL
# Editando o arquivo /etc/bind/named.conf.local:
echo >> $NAMEDLOCAL
echo >> $NAMEDLOCAL
echo \# Criando a zona reversa do Domínio \"$DM\" >> $NAMEDLOCAL
echo >> $NAMEDLOCAL
echo zone \"$REDE.in-addr.arpa\" \{ >> $NAMEDLOCAL
echo type slave\; >> $NAMEDLOCAL
echo file \"$ARQREV\"\; >> $NAMEDLOCAL
echo masters \{ $MASTER\; \}\; >> $NAMELOCAL
echo \}\; >> $NAMEDLOCAL
echo >> $NAMEDLOCAL
}
#------------- Fechada a função slave -------------------------------
# Execução:
echo
echo "Você deseja configurar um servidor master, ou slave?"
echo
read NAME
echo
echo "Aguarde"
echo "apenas"
echo "alguns"
echo "segundos"
echo "..."
sleep 2
echo
if [ $NAME = "slave" ]; then
SLAVE
/etc/init.d/bind9 start
echo nameserver $IPNS > /etc/resolv.conf
rm -Rf $DIRTMP
echo
echo "Arquivo named.conf.local:"
echo "-------------------------"
named-checkconf $NAMEDLOCAL
echo
echo "Zona reversa:"
echo "-------------"
named-checkzone $REDE.in-addr.arpa $ARQREV
echo
echo "Zona principal:"
echo "---------------"
named-checkzone $DM $ARQDB
echo
echo "Verifique ACIMA se não há erros nos arquivos."
echo
else
MASTER
/etc/init.d/bind9 start
echo nameserver $IPNS >> /etc/resolv.conf
rm -Rf $DIRTMP
echo
echo "Arquivo named.conf.local:"
echo "-------------------------"
named-checkconf $NAMEDLOCAL
echo
echo "Zona reversa:"
echo "-------------"
named-checkzone $REDE.in-addr.arpa $ARQREV
echo
echo "Zona principal:"
echo "---------------"
named-checkzone $DM $ARQDB
echo
echo "Verifique ACIMA se não há erros nos arquivos."
echo
fi
# -----------------------------------------
# Desenvolvido por Edson Gonçalves de Lima
# Campo Grande, MS, novembro de 2005
# ------------------------------------------
ZVideo1.1 - Conversor de formatos de vídeo para divX
package maker para o slackware
Crackear rede WIFI - Script para testes de segurança em redes Wifi - wpa e wpa2 com wordlist
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)
Alternativas ao Multilogin para gerenciamento de múltiplas contas/prof... (0)









