|
|
|
DHCP e BIND9 - Se entendendo via Dynamic DNSAutor: Frederico
Costa <fred at lcl.com.br> Data: 17/05/2004
|
Introdução
Neste artigo iremos configurar um servidor de DHCP
e DNS para que estes dois serviços se comuniquem e possam
estabelecer um DNS dinâmico.
Apesar do artigo colocar os
dois serviços no mesmo equipamento, a sua configuração pode
facilmente ser alterada para que estes serviços estejam em máquinas
diferentes.
|
|
Requisitos e instalação dos pacotes
Como padrão, utilizaremos um servidor Debian
Woody, apenas com os depósitos oficiais:
|
deb http://ftp.br.debian.org/debian/ stable main
non-free contrib deb http://non-us.debian.org/debian-non-US
stable/non-US main contrib non-free deb
http://security.debian.org/ stable/updates main contrib non-free
|
Para este artigo iremos utilizar o ISC DHCP3 e
o BIND9.
No Debian podemos instalar estes dois serviços com
o comando:
# apt-get install dhcp3-server bind9
|
|
Configuração do DHCP
O primeiro passo é gerar uma chave, que será a
autenticação da comunicação entre os dois serviços. Usaremos o
comando dnssec-genkey como mostrado abaixo:
#
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST dhcp
onde:
dnssec-keygen -a HMAC-MD5 -b <tamanho da chave, de 1 a
512 bits> -n HOST <nome da chave>
ao executar o
comando, o único retorno que teremos será algo do gênero:
K<nome da chave>.+157+04150
no nosso
exemplo,
Kdhcp.+157+04150. Iremos usar o valor final do arquivo com
o prefixo .key, Kdhcp.+157+04150.key, por exemplo.
dhcp.
IN KEY 512 3 157 Wx8rJhgnj/cAIjuTnB8EYA==
Vamos agora
editar o arquivo de configuração do DHCP3
(/etc/dhcp3/dhcpd.conf). A primeira coisa que faremos será
definir as propriedades globais do serviço:
|
ddns-update-style interim; #
define o tipo de atualização usada com o DNS option
domain-name-servers 10.4.0.1; # define o
servidor de nomes a ser usado em todas as
zonas default-lease-time 6000; #
Definem o tempo máximo que um IP max-lease-time 72000;
# fica preso a um
Equipamento authoritative; # Define
que este serdir de DHCP é o principal da rede log-facility
local7; # Define qual categoria de log o DHCP
irá usar |
Depois criaremos uma seção "key", como
mostrado abaixo:
|
key mykey { algorithm
hmac-md5; secret "Wx8rJhgnj/cAIjuTnB8EYA=="; };
|
e definiremos as zonas de domínio e domínio
reverso que iremos ter:
|
zone escritorio. { primary
10.4.0.1; key mykey; }
zone
0.4.10.in-addr.arpa. { primary
10.4.0.1; key mykey; } |
Vou considerar que o resto da sua
configuração, ou seja, a definição da subnet, esteja funcionando.
Caso tenha alguém dúvida, a minha configuração segue abaixo:
|
subnet 10.4.0.0 netmask 255.255.255.0
{ range 10.4.0.10 10.4.0.100; option
routers 10.4.0.1; option domain-name
"escritorio.lcl"; option subnet-mask
255.255.255.0; option broadcast-address
10.4.0.255; one-lease-per-client on;
option netbios-name-servers 10.4.0.1; } |
Reinicie o serviço de DHCP e verifique se não
há erros de sintaxe:
# /etc/init.d/dhcp3-server
restart Stopping DHCP server: dhcpd3. Starting DHCP
server: dhcpd3.
Se tudo correr bem, no syslog deve
aparecer algo semelhante a:
----- May 16 11:58:09 teste
dhcpd: Internet Software Consortium DHCP Server V3.0.1rc9 May 16
11:58:09 teste dhcpd: Copyright 1995-2001 Internet Software
Consortium. May 16 11:58:09 teste dhcpd: All rights
reserved. May 16 11:58:09 teste dhcpd: For info, please visit
http://www.isc.org/products/DHCP May 16 11:58:09 teste dhcpd:
Wrote 27 leases to leases
file. -----
|
|
Configuração do BIND9
Agora iremos preparar o servidor de nomes (Bind9)
para receber os pedidos de sincronização do DHCP.
No arquivo
de configuração (/etc/bind/named.conf), iremos definir uma
seção key, antes da seção options, igual a que criamos para o DHCP:
|
key mykey { algorithm
hmac-md5; secret "Wx8rJhgnj/cAIjuTnB8EYA=="; };
|
Em seguida iremos criar a seção
controls, que será a responsável por permitir a comunicação
entre o DHCP e o BIND:
|
controls { inet 127.0.0.1 port
953 allow { 127.0.0.1; } keys {
"mykey"; }; }; |
Para fechar a configuração, iremos agora
definir o nosso domínio e o seu reverso:
|
zone "escritorio" { type
master; notify no; file
"/etc/bind/db/db.escritorio"; allow-update { key
mykey; }; };
zone "0.4.10.in-addr.arpa"{
type master; notify no; file
"/etc/bind/db.10.4.0"; allow-update { key mykey;
}; }; |
Reinicie o serviço de DNS com o comando:
# /etc/init.d/bind9 restart
Correndo tudo
bem, uma mensagem semelhante a abaixo será colocada no arquivo
/var/log/syslog:
------ May 16 12:06:58 teste
named[7528]: starting BIND 9.2.1 May 16 12:06:58 teste
named[7528]: using 1 CPU May 16 12:06:58 teste named[7530]:
loading configuration from '/etc/bind/named.conf' May 16 12:06:58
teste named[7530]: no IPv6 interfaces found May 16 12:06:58 teste
named[7530]: listening on IPv4 interface lo, 127.0.0.1#53 May 16
12:06:58 teste named[7530]: listening on IPv4 interface eth1,
10.4.0.1#53 May 16 12:06:58 teste named[7530]: command channel
listening on 127.0.0.1#953 May 16 12:06:58 teste named[7530]:
zone 0.in-addr.arpa/IN: loaded serial 1 May 16 12:06:58 teste
named[7530]: zone 0.4.10.in-addr.arpa/IN: loaded serial 4 May 16
12:06:58 teste named[7530]: zone 127.in-addr.arpa/IN: loaded serial
1 May 16 12:06:58 teste named[7530]: zone 255.in-addr.arpa/IN:
loaded serial 1 May 16 12:06:58 teste named[7530]: zone
escritorio/IN: loaded serial 20040517 May 16 12:06:58 teste
named[7530]: zone localhost/IN: loaded serial 1 May 16 12:06:58
teste named[7530]: running -----
|
|
Testes e referências
Agora vamos testar para nos certificarmos que tudo
está funcionando 100%.
Monitore o arquivo
/var/log/syslog enquanto você força uma renovação do DHCP em
alguma estação cliente (/etc/init.d/network restart em
qualquer Debian ou ipconfig /renew em qualquer estação
Windows). Aparecendo:
----- May 16 11:54:32 teste
named[7363]: client 10.4.0.1#1174: updating zone 'escritorio/IN':
adding an RR May 16 11:54:32 teste named[7363]: client
10.4.0.1#1174: updating zone 'escritorio/IN': adding an RR May 16
11:54:32 teste dhcpd: Added new forward map from
papaleguas.escritorio to 10.4.0.100 May 16 11:54:32 teste
named[7363]: client 10.4.0.1#1174: updating zone
'0.4.10.in-addr.arpa/IN': deleting an rrset May 16 11:54:32 teste
named[7363]: client 10.4.0.1#1174: updating zone
'0.4.10.in-addr.arpa/IN': adding an RR May 16 11:54:32 teste
dhcpd: added reverse map from 100.0.4.10.in-addr.arpa. to
papaleguas.escritorio May 16 11:54:32 teste dhcpd: DHCPREQUEST
for 10.4.0.100 from 00:e0:7d:f1:92:00 (papaleguas) via eth1 May
16 11:54:32 teste dhcpd: DHCPACK on 10.4.0.100 to 00:e0:7d:f1:92:00
(papaleguas) via eth1 -----
Significa que o IP 10.4.0.100
foi associado à máquina papaleguas e que o registro correspondente
foi passado para o DNS. Vamos testar?
# host
papaleguas.escritorio.lcl papaleguas.escritorio has address
10.4.0.100 # host 10.4.0.100 100.0.4.10.in-addr.arpa
domain name pointer papaleguas.escritorio.
Prontinho... Tudo
funcionando!!!
Bibliografia e referências:
|
|
|
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1049
Voltar
para o site
|