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.573 ]

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


Integrando DHCP com DNS (BIND)



Configurando servidor de DNS (BIND9):

As configurações necessárias para o funcionamento do serviço de DNS no Debian estão no arquivo /etc/bind/named.conf.local. Será necessário criar 2 arquivos que servirão de base de dados para armazenar informações sobre as estações da rede local, além de adicionar algumas configurações no serviço de DHCP (/etc/dhcp3/dhcpd.conf).

Chave de segurança:

Na instalação do bind9 é criada uma chave de segurança para que os serviços de DHCP e DNS possem trocar informações entre si, a chave fica no arquivo /etc/bind/rndc.key.

Caso apresente erro na chave, você poderá criá-la manualmente através do comando:

# dnssec-keygen -a hmac-md5 -b 128 -n USER rndc-key

Onde:
  • -a --> informa o tipo de algorítimo que será utilizado na criptografia;
  • -b --> informa a quantidade de bits da criptografia.

Serão gerados 2 arquivos. Você poderá incluir a chave diretamente em cada arquivo de configuração ou criar um arquivo com a chave e fazer as inclusões dentro de cada arquivo de configuração (através da função include), desta forma ficará mais fácil a manutenção futura caso necessário.

Adicionando configurações no DHCP:

Para que o serviço DHCP funcione em conjunto com o serviço de DNS, será necessário adicionar algumas configurações no serviço de DHCP (/etc/dhcp3/dhcpd.conf).

# vim /etc/dhcp3/dhcpd.conf

# The ddns-updates-style parameter controls...
ddns-update-style interim;
ddns-updates on;
ddns-domainname "exemplo";
ddns-rev-domainname "100.168.192.in-addr.arpa";

include "/etc/bind/rndc.key";

zone exemplo {
   primary 127.0.0.1;
   key rndc-key;
}

zone 100.168.192.in-addr.arpa {
   primary 127.0.0.1;
   key rndc-key;
}

Onde:
  • ddns-update-style --> Informa o tipo de atualização;
  • include --> Informa o arquivo onde a chave de segurança está armazenada;
  • zone exemplo --> Informa a zona que ira converter IP em nome;
  • zone 100.168.192.in-addr.arpa --> Informa a zona que ira converter nome em IP.

Para fazer o download do dhcpd.conf completo, clique aqui.

Página anterior     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

Configurando wvdial com Gnome-ppp no Slackware

Instalando o Debian (ilustrado)

Configurando placas wireless baseadas no chip Realtek RTL8180 no Linux

Instalação e configuração do Bacula com interface web (Bweb/Brestore)

Verificando a temperatura do HD no Slackware

  
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