Pular para o conteúdo

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.
Rogério Sousa Guimarães rojeryo
Hits: 168.132 Categoria: Linux Subcategoria: Configuração
  • Indicar
  • Impressora
  • Denunciar

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

   1. Introdução
   2. Configuração básica do DHCP
   3. Integrando DHCP com DNS (BIND)
   4. Configurando DNS (BIND)
   5. Criando zonas

Diagrama Entidade-Relacionamento com Dia e tedia2sql para o PostgreSQL

Instalando Debian Lenny no laptop Lenovo ThinKPad SL400

Criando uma imagem de instalação do Ubuntu

Introdução ao gerenciador de janelas i3

Mini-manual do Fluxbox no Zenwalk

Criando um mirror LVM nível 1

Linux com cara de Windows para atrair novos usuá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

Entre na sua conta para comentar.