Configurando DHCP com DNS (Bind9) na rede local - Debian Linux

Esse artigo pretende auxiliar na configuração integrada de dois serviços DNS e DHCP em um único servidor Linux. Esses serviços são extremamente úteis na administração de redes de computadores.

[ Hits: 165.691 ]

Por: Rogério Sousa Guimarães em 05/12/2008 | Blog: http://rojeryo.dyndns.org


Introdução



Esse artigo pretende auxiliar na configuração integrada de dois serviços DNS e DHCP em um único servidor, esses serviços são extremamente úteis na administração de redes de computadores.

Sobre o DHCP

O DHCP (Dynamic Host Configuration Protocol) é protocolo de configuração dinâmico de computador, é um serviço que possibilita aos computadores de uma rede obter as configurações TCP/IP automaticamente, sem a necessidade de um técnico realizar a configuração de estação por estação, facilitando assim a tarefa de administração de uma rede de computadores.

Quando o computador é ligado, ele faz um pedido de configuração ao servidor e o servidor responde com as informações que foram configuradas nele, informando IP, gateway, DNS etc para a estação da rede.

Para mais informações: https://www.isc.org/software/dhcp/documentation

Sobre o DNS

O DNS (Domain Name Service), serviço de nomes, é um serviço que converte nomes em endereço IP e endereço IP em nome de forma reversa.

No caso desse artigo vamos estudar a aplicação do serviço de DNS na rede local, utilizando o software BIND.

Para mais informações: https://www.isc.org/software/bind/documentation

Instalação

Instalando o serviço de DHCP:

# apt-get install dhcp3-server

Instalando o serviço de DNS:

# apt-get install bind9

    Próxima página

Páginas do artigo
   1. Introdução
   2. Configuração básica do DHCP
   3. Integrando DHCP com DNS (BIND)
   4. Configurando DNS (BIND)
   5. Criando zonas
Outros artigos deste autor

Instalando Debian Lenny no laptop Lenovo ThinKPad SL400

Diagrama Entidade-Relacionamento com Dia e tedia2sql para o PostgreSQL

Leitura recomendada

Aplicações Windows em ambiente Linux com SeamlessRDP

Servidor de Mídia com 128 MB de RAM

Otimizando o seu Slackware pra valer com o SlackBuild

GRUB e a senha de root - como atacar e proteger seu sistema

Instalando Ubuntu GNU/Linux em um Macbook

  
Comentários
[1] Comentário enviado por Credmann em 07/12/2008 - 01:07h

Excelente artigo, parabéns. Só um adendo sobre permissões:
`/etc/bind/', por padrão pertence ao root e suas permissões não devem ser alteradas por questões de segurança. No caso do Ubuntu, o AppArmor impede a escrita mesmo que as permissões sejam alteradas. Por isso, recomenda-se que `db.100.168.192.in-addr.arpa' seja colocado em `/var/lib/bind/'.

[2] Comentário enviado por ErhnamDjinm em 08/12/2008 - 08:01h

Só um detalhe importante. A grande maioria dos tutoriais sobre integração DNS+DHCP mostra uando rede classe C.
Mas quando em classe A ou B, no arquivo de base da dados do DNS reverso deve-se colocar os IP's invertidos.
Ex.:
Para colocar um IP 172.16.0.2 você faz:

$TTL 43200 ; 12 hours
@ IN SOA server.exemplo. root.exemplo. (
1 ; serial
28800 ; refresh (8 hours)
14400 ; retry (4 hours)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ; minimum (1 day)
)
@ IN NS server.exemplo.
2.0 IN PTR server.exemplo.

Para colocar um IP 10.20.30.5 você faz:

$TTL 43200 ; 12 hours
@ IN SOA server.exemplo. root.exemplo. (
1 ; serial
28800 ; refresh (8 hours)
14400 ; retry (4 hours)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ; minimum (1 day)
)
@ IN NS server.exemplo.
5.30.20 IN PTR server.exemplo.


[3] Comentário enviado por rojeryo em 08/12/2008 - 09:48h

Caro Credmann,

Obrigado pela contribuição, eu não cheguei a testar no UBUNTU...


Abs,

Rogério

[4] Comentário enviado por rojeryo em 08/12/2008 - 09:55h

Caro Erhnam,

Realmente a maioria dos tutorias são escritos na classe C em virtude do tamanho da rede, ou seja, não compensa utilizar classe A ou B para um parte de 70 workstations, como é meu caso hoje...

Sua contribuição está correta para classe A e B, ou seja:
Para classe C deve-se informar X
Para classe B deve-se informar X.X
Para classe A deve-se informar X.X.X

Abs,

Rogério

[5] Comentário enviado por edilsonrsouza em 08/12/2008 - 17:01h

Estou testando o seu tutorial. Só que quando a maquina cliente vai pega o IP, no log me dar a seguinte mensagem:
client 192.168.0.1#51272: update '0.168.192.in-addr.arpa/IN' denied

Você sabe o que pode ser?

[6] Comentário enviado por rojeryo em 08/12/2008 - 20:53h

Edilson,


Erro de permissão, gostaria de ver o log de inicialização do serviço de DNS... Capture o log e envie para rojeryo@gmail.com...

Outro detalhe leia a mensagem postado pelo Credmann!!!

Abs,

Rogério


[7] Comentário enviado por edilsonrsouza em 09/12/2008 - 09:05h

Na realidade quando eu vi o erro de permissão, foi a primeira coisa que eu fiz foi o que o Credmann comenta. Só que mesmo assim ele continua mostrando o erro. Agora eu estou usando o Ubuntu Server 8.10. E já enviei o logo para o seu email.

Edilson

[8] Comentário enviado por rojeryo em 09/12/2008 - 15:11h

Caros colegas,


O problema que o Edilson me relatou estava ocorrendo porque tinha erro na escrita de uma sintaxe e erro na escrita de uma zona...


Abs,


Rogério



[9] Comentário enviado por edilsonsouza em 11/12/2008 - 14:30h

Rogerio o log esta apresentando a seguinte mensagem:
Dec 11 13:17:10 doulos named[28784]: automatic empty zone: D.F.IP6.ARPA
Dec 11 13:17:10 doulos named[28784]: automatic empty zone: 8.E.F.IP6.ARPA
Dec 11 13:17:10 doulos named[28784]: automatic empty zone: 9.E.F.IP6.ARPA
Dec 11 13:17:10 doulos named[28784]: automatic empty zone: A.E.F.IP6.ARPA
Dec 11 13:17:10 doulos named[28784]: automatic empty zone: B.E.F.IP6.ARPA
Dec 11 13:17:10 doulos named[28784]: default max-cache-size (33554432) applies: view _bind
Dec 11 13:17:10 doulos named[28784]: command channel listening on 127.0.0.1#953
Dec 11 13:17:10 doulos named[28784]: zone 0.in-addr.arpa/IN: loaded serial 1
Dec 11 13:17:10 doulos named[28784]: zone 127.in-addr.arpa/IN: loaded serial 1
Dec 11 13:17:10 doulos named[28784]: zone 0.168.192.in-addr.arpa/IN: journal rollforward failed: no more
Dec 11 13:17:10 doulos named[28784]: zone 255.in-addr.arpa/IN: loaded serial 1
Dec 11 13:17:10 doulos named[28784]: zone srvlinux.com.br/IN: journal rollforward failed: no more
Dec 11 13:17:10 doulos named[28784]: zone localhost/IN: loaded serial 2
Dec 11 13:17:10 doulos named[28784]: running
Dec 11 13:20:01 doulos /USR/SBIN/CRON[28795]: (root) CMD ([ -x /usr/sbin/update-motd ] && /usr/sbin/update-motd 2>/dev/null)
Dec 11 13:20:02 doulos console-kit-daemon[28794]: CRITICAL: cannot initialize libpolkit
Dec 11 13:20:31 doulos dhcpd: DHCPDISCOVER from 00:0f:1f:ae:08:e1 via eth0
Dec 11 13:20:32 doulos dhcpd: DHCPOFFER on 192.168.0.11 to 00:0f:1f:ae:08:e1 (estacao01) via eth0
Dec 11 13:20:32 doulos dhcpd: Unable to add forward map from estacao01.srvlinux.com.br to 192.168.0.11: timed out
Dec 11 13:20:32 doulos dhcpd: DHCPREQUEST for 192.168.0.11 (10.101.40.150) from 00:0f:1f:ae:08:e1 (estacao01) via eth0
Dec 11 13:20:32 doulos dhcpd: DHCPACK on 192.168.0.11 to 00:0f:1f:ae:08:e1 (estacao01) via eth0

[10] Comentário enviado por Credmann em 26/12/2008 - 22:00h

O problema é que Bind além de poder escrever nos arquivos também precisa criar os *.jnl correspondentes. Isto implica nas permissões do diretório também. É por isso que é recomendado que os arquivos estejam em /var/lib/bind ou /var/cache/bind. Verifique as permissões no AppArmour.

[11] Comentário enviado por maumauns em 26/04/2010 - 09:43h

Não estou conseguindo esta dando a seguinte mensagem de erro

Stopping domain name service...: bind9rndc: connection to remote host closed
This may indicate that
* the remote server is using an older version of the command protocol,
* this host is not authorized to connect,
* the clocks are not syncronized, or
* the key is invalid.

Ja atualzei a data e hora, gerei novas chaves mais nada do problema ser resolvido...

[12] Comentário enviado por alerocha79 em 04/06/2010 - 19:46h

Problema resolvido. O problema era :

Stopping domain name service...: bind9rndc: connection to remote host closed
This may indicate that
* the remote server is using an older version of the command protocol,
* this host is not authorized to connect,
* the clocks are not syncronized, or
* the key is invalid.

Meu named.conf :

key "rndc-key" {
algorithm hmac-md5;
secret "xxxxxxxxxxxxx";
};


controls {
inet 127.0.0.1 allow { localhost; } keys { "rndc-key"; };
};

include "/etc/bind/named.conf.options";

(...)

Meu dhcpd.conf:

ddns-update-style interim;
default-lease-time 6000;
max-lease-time 72000;
log-facility local7;

key "rndc-key" {
algorithm hmac-md5;
secret "xxxxxxxxxxxxxxx";
};


# DNS zones to update
zone 3.168.192.in-addr.arpa. {
primary 192.168.3.1;
key rndc-key;
}

zone alex.net.br. {
primary 192.168.3.1;
key rndc-key;
}

(...)

Meu named.conf.local:

zone "xxxxx.net.br" {
type master;
file "/var/cache/bind/db.xxxxxx";
allow-update { key "rndc-key"; };

};

zone "3.168.192.in-addr.arpa" {
type master;
file "/var/cache/bind/rev.xxxxxx";
allow-update { key "rndc-key"; };
};


SOLUÇÃO: Por incrível que apareça é só reiniciar o linux, no meu caso o Debian. Aí reiniciei o bind9 e a mensagem de erro não apareceu. Brincadeira!!!! Dois dias tentando arrumar o bendito rndc!!!!

Mensagens:
DHCP iniciado:
Jun 4 18:38:28 localhost dhcpd: Internet Systems Consortium DHCP Server V3.1.1
Jun 4 18:38:28 localhost dhcpd: Copyright 2004-2008 Internet Systems Consortium.
Jun 4 18:38:28 localhost dhcpd: All rights reserved.
Jun 4 18:38:28 localhost dhcpd: For info, please visit http://www.isc.org/sw/dhcp/
Jun 4 18:38:28 localhost dhcpd: Internet Systems Consortium DHCP Server V3.1.1
Jun 4 18:38:28 localhost dhcpd: Copyright 2004-2008 Internet Systems Consortium.
Jun 4 18:38:28 localhost dhcpd: All rights reserved.
Jun 4 18:38:28 localhost dhcpd: For info, please visit http://www.isc.org/sw/dhcp/
Jun 4 18:38:28 localhost dhcpd: Wrote 4 leases to leases file.

Bind iniciado:
Jun 4 18:37:43 localhost named[3557]: automatic empty zone: D.F.IP6.ARPA
Jun 4 18:37:43 localhost named[3557]: automatic empty zone: 8.E.F.IP6.ARPA
Jun 4 18:37:43 localhost named[3557]: automatic empty zone: 9.E.F.IP6.ARPA
Jun 4 18:37:43 localhost named[3557]: automatic empty zone: A.E.F.IP6.ARPA
Jun 4 18:37:43 localhost named[3557]: automatic empty zone: B.E.F.IP6.ARPA
Jun 4 18:37:43 localhost named[3557]: command channel listening on 127.0.0.1#953
Jun 4 18:37:43 localhost named[3557]: zone 0.in-addr.arpa/IN: loaded serial 1
Jun 4 18:37:43 localhost named[3557]: zone 127.in-addr.arpa/IN: loaded serial 1
Jun 4 18:37:43 localhost named[3557]: zone 3.168.192.in-addr.arpa/IN: loaded serial 2009270401
Jun 4 18:37:43 localhost named[3557]: zone 255.in-addr.arpa/IN: loaded serial 1
Jun 4 18:37:43 localhost named[3557]: zone alex.net.br/IN: loaded serial 2009270401
Jun 4 18:37:43 localhost named[3557]: zone localhost/IN: loaded serial 2
Jun 4 18:37:43 localhost named[3557]: running

O negócio está redondo:

debian:/etc/squid# host prmtXP.alex.net.br
prmtXP.alex.net.br has address 192.168.3.8
debian:/etc/squid# host aluno-desktop.alex.net.br
aluno-desktop.alex.net.br has address 192.168.3.10
debian:/var/cache/bind# ls -l
total 16
-rw-rw-r-- 1 root bind 345 Jun 1 16:23 db.alex
-rw-r--r-- 1 bind bind 1334 Jun 8 13:57 db.alex.jnl
-rw-rw-r-- 1 root bind 330 Jun 1 16:24 rev.alex
-rw-r--r-- 1 bind bind 1415 Jun 8 13:57 rev.alex.jnl


Eu coloquei as zonas no /var/cache/bind,
para que os arquivos jnl pudessem ser criados automaticamente, uma vez que dentro do /etc/bind não tem permissão para criar jnl.

Por fim configurei o Sarg para gerar os relatórios por nome da máquina e não por ip.

Sites & Users
NUM USUÁRIO CONEXÃO BYTES %BYTES IN-CACHE-OUT TEMPO GASTO MILISEG %TEMPO
1 G T prmtXP.alex.net.br 331 4.30M 62.87% 16.17% 83.83% 00:01:21 81,008 64.51%
2 G T aluno-desktop.alex.net.br 160 2.54M 37.13% 5.10% 94.90% 00:00:44 44,570 35.49%

valeu.

E alterei meu sarg.conf para :

# TAG: resolve_ip yes/no
# Convert ip address to dns name
# sarg -n
resolve_ip yes

# TAG: user_ip yes/no
# Use Ip Address instead userid in reports.
# sarg -p
user_ip no

Por fim:
É só executar o sarg com a opção -n

debian:/etc/squid# sarg -n
SARG: Unknown option site_user_time_date_type table

Deu esse aviso, porém gerou os relatório com os nomes dos computadores no lugar do ip.

blz.




valeu.

[13] Comentário enviado por rojeryo em 04/06/2010 - 22:33h

Olá Alex,


Valeu pela contribuição!!!

Abs,

R. Guimarães

[14] Comentário enviado por leandro.fonseca em 10/01/2011 - 22:49h

Amigo parabéns pelo artigo!

Gostaria apenas de tirar uma dúvida.

Segui seu artigo do início ao fim.

Do servidor DNS, quando eu pingo em quaisquer sites (ex.: ping www.uol.com) o servidor resolve.

Porém, se eu tento pingar numa máquina da rede local (ex.: ping cliente-01) o servidor não resolve.

O que pode estar acontecendo???

[15] Comentário enviado por ovudo em 05/05/2011 - 17:35h

galera, ainda estou com problemas ao fazer este tutorial, o problema é que não sei porque, o meu syslog aparece a seguinte mensagem:

May 5 17:25:01 chagas named[2203]: client 127.0.0.1#54050: signer "rndc-key" denied
May 5 17:25:01 chagas named[2203]: client 127.0.0.1#54050: update '2.168.192.in-addr.arpa/IN' denied

eu gostaria de saber como resolver, eu também já segui todas as dicas dos posts acima e nada funciona

alguém poderia me ajudar com isso?

obrigado a todos


[16] Comentário enviado por edilinhares em 26/04/2012 - 09:26h

Estou tendo alguns problemas com o dns, alguns endereços não atualizam no banco de dados


26-Apr-2012 09:14:21.448 update-security: error: client 192.168.1.132#54094: update 'transpacifico/IN' denied
26-Apr-2012 09:14:27.862 update-security: error: client 192.168.1.147#64833: update 'transpacifico/IN' denied

26-Apr-2012 09:17:43.322 update-security: info: client 192.168.1.1#34209: signer "rndc-key" approved
26-Apr-2012 09:17:43.323 update: info: client 192.168.1.1#34209: updating zone 'transpacifico/IN': adding an RR at 'sao52.transpacifico' A
26-Apr-2012 09:17:43.323 update: info: client 192.168.1.1#34209: updating zone 'transpacifico/IN': adding an RR at 'sao52.transpacifico' TXT


26-Apr-2012 09:18:20.681 update-security: error: client 192.168.1.149#53378: update 'transpacifico/IN' denied
26-Apr-2012 09:18:28.187 update-security: error: client 192.168.1.149#57814: update 'transpacifico/IN' denied



[17] Comentário enviado por alexmanzo em 07/10/2012 - 01:10h

alguma solução???

[18] Comentário enviado por rojeryo em 07/10/2012 - 09:43h

Olá Alex,


Já faz uns 2 anos que não estou trabalhando na área de TI, e não tenho como fazer testes para te ajudar...

Abs,

Rogério Guimarães

[19] Comentário enviado por flaviotecnico em 20/11/2018 - 00:15h

Bom dia,
Sou iniciante,
Quero usar um servidor DHCP e também ter um roteador configurado com servidor DHCP secundário.
Como configurar um DHCP secundário no Bind?
Desde já agradeço.
Flávio.

[20] Comentário enviado por rojeryo em 21/11/2018 - 19:56h

Olá Flávio,


Já faz uns 8 anos que não estou trabalhando na área de TI, e não tenho como fazer testes para te ajudar...

Abs,

Rogério Guimarães


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts