Configurando um servidor DNS e DHCP na rede

Galera, como todos meus outros artigos digo que isso não é receita de bolo e que eu sei que na internet está cheio de artigos ensinando a montar o mesmo servidor. Mas todos esses artigos da internet ensinam a fazer um ou outro servidor, então resolvi montar os dois e postar minha experiência. E lembrem-se: aprender é fundamental.

[ Hits: 68.620 ]

Por: Perfil removido em 16/02/2011


Configuração, explicação, chroot e testes no dns



Diretórios e arquivos usados

Com o comando acima saberemos onde encontrar os pacotes instalados, mas precisaremos dos arquivos que foram instalados em /etc/bind, isso na distribuição Debian. Não vou me alongar na explicação devido ao grande material que temos na internet onde contém a explicação destes arquivos, mas o que usaremos e que são os mais importantes são os: Named.conf, named.conf.local, named.conf.options e o rndc.key.
  • named.conf: Ele é o arquivo principal da instalação do bind nele contém as zonas existentes e o caminho de seus arquivos de configuração.
  • named.conf.local: Nele fica as configurações das zonas que serão criadas e o caminho de seus arquivos de configuração. No arquivo named.conf tem um include que aponta para este arquivo trazendo assim suas configurações de zona sem ter que alterar o arquivo principal.
  • named.conf.options: Nele é possível incluirmos opções para o servidor como esconder a versão por segurança do servidor, se ele será recursivo ou não, entre outras opções.
  • rndc.key: Neste arquivo fica a chave criptográfica do servidor.

Criação das zonas

Estou usando os dados de minha rede, não esqueça de alterar para rede a ser usada. Para criarmos as zonas de nosso servidor usaremos o arquivo named.conf.local, pois como disse acima a arquivo named.conf faz referências a este arquivo. Ficaria assim:

include "/etc/bind/zones.rfc1918";

// ## minhas zonas ##
zone "pasquajf.com.br" IN {
   type master;
   file "/etc/bind/db.pasquajf.com.br";
   allow-update { pdc; };
   allow-transfer { none; };
};

// ## zona reversa ##
zone "50.168.192.in-addr.arpa IN" {
   type master;
   file "/etc/bind/db.50.168.192";
   allow-update { pdc; };
   allow-transfer { none; };
};
// ## fim das minhas zonas ##

Criação dos arquivos das zonas

Após criado as zonas temos que criar os arquivos de configuração das zonas. Como podemos ver eles foram criados dentro do caminho especificado em file. Ficando assim o db.pasquajf.com.br:

$TTL    604800
@       IN      SOA      pasquajf.com.br. rafael.pasquajf.com.br (
                         2011012701
                         8h
                         1h
                         3d
                         3d )

pasquajf.com.br     IN   A        192.168.50.245
www                     IN   A        xxx.xx.xx.xx
mail                     IN   A        xxx.xx.xx.xx
smtp                     IN   A        xxx.xx.xx.xx
pop3                     IN   A        xxx.xx.xx.xx
@                        IN   MX   10  teste.dominio.com.br
@                        IN   NS       pasquajf.com.br.

E por fim a zona reversa:

$TTL    604800
@       IN      SOA      pasquajf.com.br. rafael.pasquajf.com.br (
                         2011012701
                         8h
                         1h
                         3d
                         3d )
@       IN      NS       pasquajf.com.br.
245     IN      PTR      pasquajf.com.br.

Explicação dos dados descritos nos arquivos

  • $TTL = parâmetro que indica o tempo de vida da informação desta zona, ou seja, neste caso ela será relida por outro servidor somente após 1 dia (lembre-se que os servidores guardam informações em domínios.
  • @ = a melhor leitura para o caractere "@" é "este servidor" e/ou "esta zona";
  • IN = em;
  • SOA = Start Of Authority - Indica qual o servidor responsável pelo domínio desta zona;
  • rafael.pasquajf.com.br - e-mail do responsável pelo servidor (note a ausência de @);
  • ( ) = parâmetros adicionais;
  • Serial = número de série das informações do servidor;
  • Refresh = tempo no qual o servidor DNS aguardará para replicar suas informações;
  • Retry = tempo para espera de uma nova tentativa de replicação (se a anterior falhar);
  • Expire = tempo de vida da autoridade do servidor;
  • Minimun = tempo mínimo para armazenar a zona em cachê;
  • 245 IN PTR = Apontador que significa o último octeto do IP do servidor DNS;
  • A = Significa a relação/ip direta.

Integração com o Active Directory

Tive um problema após a implementação do servidor, pois ele respondia, resolvia os nomes da minha rede e também nomes da internet, mas quando eu ia colocar qualquer micro no meu domínio ele apresentava erros de DNS. Depois de procurar obtive no VOL um artigo que me ajudou muito com a integração entre o AD e o DNS. Vamos ao que interessa.

Para que nosso DNS interaja com o AD e responda pelo domínio precisamos acrescentar mais algumas zonas, isso fica fácil descobrir se olharmos no DNS da Microsoft. Essas zonas são padrão e temos que acrescentar no named.conf.local:

// ## zonas usadas  pelo AD

zone "_msdcs.pasquajf.com.br" IN {
   type master;
   file "/var/lib/named/etc/bind/_msdcs.pasquajf.com.br";
   allow-update { pdc; };
   allow-transfer { none; };
};

zone "_sites.pasquajf.com.br" IN {
   type master;
   file "/var/lib/named/etc/bind/_sites.pasquajf.com.br";
   allow-update { pdc; };
   allow-transfer { none; };
};

zone "_tcp.pasquajf.com.br" IN {
   type master;
   file "/var/lib/named/etc/bind/_tcp.pasquajf.com.br.zone";
   allow-update {pdc; };
   allow-transfer { none; };
};

zone "_udp.pasquajf.com.br" IN {
   type master;
   file "/var/lib/named/etc/bind/_udp.pasquajf.com.br.zone";
   allow-update { pdc; };
   allow-transfer { none; };
};

include "/etc/bind/zones.rfc1918";

Para questão de estudos; type: significa se ele será master ou slave, file: caminho para os dados da zona, allow-update: quem pode fazer update nas zonas, no caso meu antigo servidor DNS e allow-transfer: para fazer transferências de zona.

O pdc foi declarado dentro do arquivo named.conf.options:

## ACL que indica o AD
acl "pdc" { 192.168.50.220; };

Após feito isso basta criar os arquivos com os dados das zonas, as zonas necessárias para esta integração são: _tcp, _udp, _sites e _msdcs.

Vou colocar a criação do arquivo _msdcs.pasquajf.com.br depois basta apenas copiar o arquivo e alterar os nomes dos mesmos.

$ORIGIN .
$TTL 604800
_msdcs.pasquajf.com.br    IN SOA  @ rafael.pasquajf.com.br. (
              2011012601
              8h
              1h
              3d
              3d )

        NS      @
$ORIGIN _msdcs.pasquajf.com.br

Após isto, altere o:

_msdcs.pasquajf.com.br

Por:

_udp.pasquajf.com.br

E os outros que faltam. Com isso já podemos interagir com o AD sem problemas.

Implementando o chroot

Esta parte foi retirado do script descrito neste artigo e como eu já tinha meu servidor sendo executado eu apenas implementei o chroot. Segue o script alterado.

#!/bin/bash

######################################### CRIACAO E MODIFICACAO DO SCRIPT
##################################################
echo Sistema de execucao do Chroot
echo Desenvolvido por Douglas Q. dos Santos e Modificado por Rafael da Silva Rosa

######################################## COMANDOS UTILIZADOS NO SCRIPT
######################################################

APTITUDE=$(which aptitude)
CAT=$(which cat)
CHMOD=$(which chmod)
CHOWN=$(which chown)
DATA=$(which date)
LN=$(which ln)
MKDIR=$(which mkdir)
MKNOD=$(which mknod)
MV=$(which mv)
SLEEP=$(which sleep)
CUT=$(which cut)
VAR="pasquajf.com.br"
########################################### CAMINHO DA JAULA DO BIND
########################################################

PATH_BIND="/var/lib/named"

########################################### CRIAÃÃO DA ÃRVORE DE DIRETÃRIO
##################################################

${MKDIR} -p ${PATH_BIND}/etc
${MKDIR} -p ${PATH_BIND}/dev
${MKDIR} -p ${PATH_BIND}/var/cache/bind
${MKDIR} -p ${PATH_BIND}/var/run/bind/run
${MKNOD} ${PATH_BIND}/dev/null c 1 3
${MKNOD} ${PATH_BIND}/dev/random c 1 8

########################################### AJUSTANDO PERMISSÃES
############################################################

${CHMOD} 666 ${PATH_BIND}/dev/null ${PATH_BIND}/dev/random
${CHOWN} -R bind:bind ${PATH_BIND}/var/*
${MV} /etc/bind ${PATH_BIND}/etc
${LN} -s ${PATH_BIND}/etc/bind /etc/bind
${CHOWN} -R bind:bind ${PATH_BIND}/etc/bind

########################################## AJUSTANDO O ARQUIVO /ETC/DEFAULT/BIND9
###########################################

${CAT} <<EOF > /etc/default/bind9
#/etc/default/bind9
RESOLVCONF=yes
# startup options for the server
#OPTIONS="-u bind"
OPTIONS="-u bind -t ${PATH_BIND}"
EOF

############################################ AJUSTANDO O ETC/RESOLV.CONF
####################################################

${CAT} <<EOF > /etc/resolv.conf
domain ${VAR}
nameserver 127.0.0.1
EOF

############################################## INICIANDO OS SERVIÃOS
########################################################

/etc/init.d/bind9 stop
/etc/init.d/bind9 start

################################################ MENSAGEM FINAL
#############################################################

echo "INSTALACAO FINALIZADA"
echo "Faca os ajustes necessarios e reinicie o servico *bind9*"
echo "Os Logs serao gerados no arquivo /var/log/syslog"
exit 0

Para fazer os testes execute o comando:

# ps aux |grep bind

Se aparecer como está abaixo é sinal que está sendo executado em chroot:

bind      3004  0.0  3.5  51076 18148 ?        Ssl  14:17   0:05 /usr/sbin/named -u bind -t /var/lib/named

Teste no servidor

Para fazermos os teste do serviço de DNS podemos usar várias ferramentas, segue algumas:
  • named-checkconf: Checa o arquivo named;
  • named-checkzone domínio db.dominio: Checa o arquivo do db da zona;
  • Comando dig: A execução deste comando serve para sabermos se nosso servidor está realmente resolvendo os nomes.

Página anterior     Próxima página

Páginas do artigo
   1. Sobre os serviços instalados
   2. Instalação dos serviços
   3. Configuração, explicação, chroot e testes no dns
   4. Script para automação da instalação
   5. Configuração, explicação e teste do servidor DHCP
Outros artigos deste autor

Introduzindo um pouco mais a fundo o shell script (revisado)

Top 10 melhores jogos FPS para Linux

Instalando o Macromedia Flash MX no Debian

Introdução a CGI com a RFC 3875

Como utilizar o Kurumin dentro de uma única partição Windows

Leitura recomendada

Projeto Sentinela

Comando: journalctl - Monitoramento de LOGs

Arduino IDE no Linux Mint

Projetos de software livre descontinuados: um problema com solução

Instalando o MEO Cloud em qualquer distro GNU/Linux

  
Comentários
[1] Comentário enviado por manoserpa em 16/02/2011 - 08:38h

Opa!

Estava pesquisando sobre isso ontem e hoje de manhã vi esse link no Twitter.

Valeu.

[2] Comentário enviado por removido em 16/02/2011 - 12:43h

Muito bom o artigo. Legal mesmo.


Abraço.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts