Configurando um Domínio no BIND9 com Debian 3.1
Publicado por Edson G. de Lima 26/11/2005
[ Hits: 10.927 ]
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 # ------------------------------------------
Teste de desempenho com números primos em BASH
Script - Realizando relatório do servidor
Criação de usuario / gerando senha automatica
cal2svg gerador de calendários em formato vetorial SVG
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Como testar Standard Hotplug Controller (1)
Trocando modo IDE por AHCI (1)
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta