Configurando um Servidor de Nomes no CL10 apenas respondendo algumas perguntas...

Publicado por Edson G. de Lima 09/10/2005

[ Hits: 4.261 ]

Download confdns.sh




Este script foi feito para quem acredita que configurar um Servidor de Nomes é coisa difícil. Permite configurar um DNS com suporte para os principais servidores de um Domínio.

  



Esconder código-fonte

#!/bin/bash

#------------------------------------------------------
echo "Limpando a sua tela..."
sleep 2
clear
echo "Este script foi \"exaustivamente\" testado COM SUCESSO em uma instalação"
echo "rodando o CL10. Nesta versão, o Bind está instalado em modo chroot no"
echo "diretório /var/named/var/named"
echo
echo "Dentro deste script existe um LEIA-ME. Recomenda-se sua leitura antes de prosseguir."
echo
echo "Neste LEIA-ME existem algumas VARIÁVEIS referentes à localização dos arquivos do Bind."
echo "Certifique-se de que em sua \"Distro\" os arquivos estejam nestes mesmos 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 coisa que"
echo "possa ocorrer de errado. Ainda que seja por falha provocada pelo script."
echo "Isto significa que ao fazer uso, você concorda em assumir toda a responsabilidade!" 
echo
echo "Para evitar problemas, certifique-se de que o Bind com todas"
echo "as ferramentas que o acompanham estejam instalados."
echo
echo "FAÇA um BACKUP de todos os seus arquivos de configuração, especialmente os do BIND."
echo
echo "Deseja prosseguir?? s/n"
echo
read YN
if [ $YN = "s" ]; then
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
    service named stop
    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 - 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, utilize a letra s minúscula."
echo "s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s!" 
echo
exit
fi   

#----------------------------------------------------------------------------------------
# --- LEIA-ME --- 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 o CL10. Nesta versão,
# o Bind está instalado em chroot no diretório /var/var/var/named.
# Isto significa que pode ocorrer de ser necessário que as variáveis abaixo
# precisem ser ajustadas conforme a sua realidaded.

# Diretório a ser a base no arquivo named.conf:
DIRNAMED=/var/named
# Diretório na árvore do diretório acima:
CHROOTNAMED=/var/named
# Local onde o Bind deverá procurar o named.conf:
CONF=$CHROOTNAMED/etc/named.conf
# Local onde será gravado o registro de seu Domínio:
ARQHOSTS=$CHROOTNAMED/var/named/$DM.hosts
# Local onde será gravado o registro reverso de seu Domínio:
ARQREV=$CHROOTNAMED/var/named/$REDE.rev
# Diretório onde ficarão os dois arquivos acima:
DIR_RR=/var/named/var/named
#----------------------------------------------------------------------------------------

#------------------------------------------------------------------
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 solicitado já existe, portanto, não poderá ser removido..."
echo "Será necessário recomeçar! Saindo sem fazer nada..."
echo
exit
fi

# Descrevendo as funções:

# ---------------Abrindo função master:----------------------------
MASTER()
{

# Criando arquivo named.conf:

echo options \{ > $CONF
echo directory \"/$DIRNAMED\"\; >> $CONF
echo dump-file \"$CHROOTNAMED/dump/named_dump.db\"\; >> $CONF
echo statistics-file \"$CHROOTNAMED/dump/statistics.file\"\; >> $CONF
echo memstatistics-file \"$CHROOTNAMED/dump/named.memstats\"\; >> $CONF
echo listen-on \{ 127.0.0.1\; 0\/0\; \}\; >> $CONF
echo \}\; >> $CONF

echo zone \"0.0.127.in-addr.arpa\" \{ >> $CONF
echo type master\; >> $CONF
echo file \"$CHROOTNAMED/named.local\"\; >> $CONF
echo \}\; >> $CONF

echo zone \".\" \{ >> $CONF
echo type hint\; >> $CONF
echo file \"$CHROOTNAMED/named.ca\"\; >> $CONF
echo \}\; >> $CONF

echo zone \"$DM\" \{ >> $CONF
echo type master\; >> $CONF
echo file \"$CHROOTNAMED/$DM.hosts\"\; >> $CONF
echo \}\; >> $CONF

echo zone \"$REDE.in-addr.arpa\" \{ >> $CONF
echo type master\; >> $CONF
echo file \"$CHROOTNAMED/$REDE.rev\"\; >> $CONF
echo \}\; >> $CONF


# Criando arquivo domínio.hosts:

echo \$TTL 43200 > $ARQHOSTS
echo @ IN SOA $HOSTNS.$DM. root.$DM. \( >> $ARQHOSTS
echo 2005082301 \; serial >> $ARQHOSTS
echo 3600 \; refresh >> $ARQHOSTS
echo 900 \; retry >> $ARQHOSTS
echo 1209600 \; expire >> $ARQHOSTS
echo 43200 \; default ttl >> $ARQHOSTS
echo \) >> $ARQHOSTS
echo @ IN NS $HOSTNS.$DM. >> $ARQHOSTS
echo $HOSTNS IN A $IPNS >> $ARQHOSTS

# Criando arquivo de zona reversa:
echo \$TTL 43200 > $ARQREV
echo @ IN SOA $HOSTNS.$DM root.$DM \( >> $ARQREV
echo 2005082301 \; serial >> $ARQREV
echo 3600 \; refresh >> $ARQREV
echo 900 \; retry >> $ARQREV
echo 1209600 \; expire >> $ARQREV
echo 43200 \; default_ttl >> $ARQREV
echo \) >> $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.hosts e rede.rev, referente ao NS02:
    echo @ IN NS $HOSTNS02.$DM. >> $ARQHOSTS
    echo $HOSTNS02 IN A $IPNS02 >> $ARQHOSTS
    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- (.) . NÃO pode ser apenas mail"
    read HOSTMAIL
    echo "Qual o IP do Servidor de Correio?"
    read IPMAIL
    echo $IPMAIL > $DIRTMP/mx.tmp

    # Editando arquivo domínio.hosts e rede.rev, referente ao MailServer:"
    echo @ IN MX 5 $HOSTMAIL.$DM. >> $ARQHOSTS
    echo $HOSTMAIL IN A $IPMAIL >> $ARQHOSTS
    echo mail IN CNAME $HOSTMAIL >> $ARQHOSTS
    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- (.) . NÂO pode ser apenas www"
    read HOSTWEB
    echo "Qual o IP do Servidor Web?"
    read IPWEB
    echo $IPWEB > $DIRTMP/wb.tmp
    
    # Editando arquivo domínio.hosts e rede.rev, referente ao WebServer:
    echo $HOSTWEB IN A $IPWEB >> $ARQHOSTS
    echo www IN CNAME $HOSTWEB >> $ARQHOSTS
    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- (.) . NÃO pode ser apenas ftp" 
    read HOSTFTP
    echo "Qual é o IP do Servidor FTP?"
    read IPFTP
    echo $IPFTP > $DIRTMP/ft.tmp
    
    # Editando arquivo domínio.hosts e rede.rev, referente ao Ftpserver:
    echo $HOSTFTP IN A $IPFTP >> $ARQHOSTS
    echo ftp IN CNAME $HOSTFTP >> $ARQHOSTS
    echo $(cut -d. -f4 $DIRTMP/ft.tmp) IN PTR $HOSTFTP.$DM. >> $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 $DIR_RR
chgrp -R named $DIR_RR

# Criando arquivo named.conf:

echo options \{ > $CONF
echo directory \"$DIRNAMED\"\; >> $CONF
echo dump-file \"$CHROOTNAMED/dump/named_dump.db\"\; >> $CONF
echo statistics-file \"$CHROOTNAMED/dump/statistics.file\"\; >> $CONF
echo memstatistics-file \"/$CHROOTNAMED/dump/named.memstats\"\; >> $CONF
echo listen-on \{ 127.0.0.1\; 0\/0\; \}\; >> $CONF
echo \}\; >> $CONF

echo zone \"0.0.127.in-addr.arpa\" \{ >> $CONF
echo type master\; >> $CONF
echo file \"$CHROOTNAMED/named.local\"\; >> $CONF
echo masters \{ $MASTER\; \}\; >> $CONF
echo \}\; >> $CONF

echo zone \".\" \{ >> $CONF
echo type hint\; >> $CONF
echo file \"$CHROOTNAMED/named.ca\"\; >> $CONF
echo masters \{ $MASTER\; \}\; >> $CONF
echo \}\; >> $CONF

echo zone \"$DM\" \{ >> $CONF
echo type slave\; >> $CONF
echo file \"$CHROOTNAMED/$DM.hosts\"\; >> $CONF
echo masters \{ $MASTER\; \}\; >> $CONF
echo \}\; >> $CONF

echo zone \"$REDE.in-addr.arpa\" \{ >> $CONF
echo type slave\; >> $CONF
echo file \"$CHROOTNAMED/$REDE.rev\"\; >> $CONF
echo masters \{ $MASTER\; \}\; >> $CONF
echo \}\; >> $CONF

}
#------------- Fechada a função slave -------------------------------

#-------------------- Abrindo função cache: --------------------------

CACHE()
{

# Criando arquivo named.conf:

echo options \{ > $CONF
echo directory \"$DIRNAMED\"\; >> $CONF
echo dump-file \"$CHROOTNAMED/dump/named_dump.db\"\; >> $CONF
echo statistics-file \"$CHROOTNAMED/dump/statistics.file\"\; >> $CONF
echo memstatistics-file \"$CHROOTNAMED/dump/named.memstats\"\; >> $CONF
echo listen-on \{ 127.0.0.1\; 0\/0\; \}\; >> $CONF
echo \}\; >> $CONF

echo zone \"0.0.127.in-addr.arpa\" \{ >> $CONF
echo type master\; >> $CONF
echo file \"$CHROOTNAMED/named.local\"\; >> $CONF
echo \}\; >> $CONF

echo zone \".\" \{ >> $CONF
echo type hint\; >> $CONF
echo file \"$CHROOTNAMED/named.ca\"\; >> $CONF
echo \}\; >> $CONF

}
#------------------- Fechada a função cache ---------------------------------

# Execução:

echo "Será um Servidor Master,  Slave ou apenas para Cache? 1 | 2 | 3"
select NAME in "Master" "Slave" "Cache"; do
break
done
echo
echo "Aguarde"
echo "apenas"
echo "alguns"
echo "segundos"
echo "..."
sleep 2
echo
if [ $NAME = "Master" ]; then

MASTER
service named start
echo nameserver $IPNS > /etc/resolv.conf
service network restart
rm -Rf $DIRTMP
echo
grep named /var/log/messages | tail -20
echo
echo "Verifique se não há erros referentes aos arquivos e se"
echo "as Zonas foram levantadas corretamente." 
    elif [ $NAME = "Slave" ]; then
    SLAVE
    service named start
    echo nameserver $IPNS >> /etc/resolv.conf
    service network restart
    rm -Rf $DIRTMP
    echo
    echo "Verifique se as Zonas foram levantadas corretamente." 
    grep named /var/log/messages | tail -20
    echo   
    
    elif [ $NAME = "Cache" ]; then
    CACHE
    service named start
    echo nameserver $IPNS > /etc/resolv.conf
    service network restart
    rm -Rf $DIRTMP
    echo
    echo "Verifique se as Zonas foram levantadas corretamente." 
    grep named /var/log/messages | tail -20
    echo    

else 
echo
echo "Por favor, faça uma escolha numérica. Teremos que recomeçar!"
echo "1 2 3 - 1 2 3 - 1 2 3 - 1 2 3 - 1 2 3 - 1 2 3 - 1 2 3 - !!!!"
echo
fi

# ------------------------------------------
# Desenvolvido por Edson Gonçalves de Lima
#     Campo Grande, MS, agosto de 2005.
# ------------------------------------------

Scripts recomendados

Simple AdAway para Android

Exibir configurações de rede

Meu firewall

POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - LÊ O BANCO E EXIBE OS DADOS

Script que envia email para um Relay sem autenticação.


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts