Pesquisar neste blog

sexta-feira, 7 de novembro de 2008

Como integrar o serviço de DHCP com o de DNS no CentOS

A integração dos serviços de dhcp e dns é um recurso muito útil em uma rede. Pois minimiza o trabalho do administrador de redes e maximiza seu controle e agilidade do serviço.

Para que essa integração seja feita precisamos criar uma chave de segurança comum aos dois serviços para que eles possam se comunicar e trocar informações.

1 - Gerando a chave de segurança

# dnssec-keygen -a HMAC-MD5 -b 128 -n USER chave

O parâmetro -b 128 referece ao tamanho da chave em bits.
O comando acima produzirá no diretório corrente dois arquivos:

Kchave.+157+53416.key
Kchave.+157+53416.private

Execute o comando cat no arquivo .key

# cat Kchave.+157+53416.key

chave. IN KEY 0 2 157 mYWhWjs2haILAfiRq/ciyA==

A chave será a seqüencia de caracteres a seguir: mYWhWjs2haILAfiRq/ciyA==

Com a chave em mãos vamos a configuração do servidor DHCPD.

2 - Configuração do servidor DHCPD

Edite o arquivo dhcpd.conf

# vim /etc/dhcpd.conf


option domain-name-servers 10.7.0.1, 200.22.22.22;
default-lease-time 432000;
max-lease-time 864000;
log-facility local7;

# parametros de atualização
ddns-updates true;
ddns-update-style interim;
ddns-ttl 86400;

# Chave de atualização dinâmica nas zonas de dns
key nomedachave {
algorithm HMAC-MD5;
secret "mYWhWjs2haILAfiRq/ciyA==";
};


zone dominio.com.br. {
primary 192.168.2.1;
key nomedachave;
}

zone 2.168.192.in-addr.arpa. {
primary 192.168.2.1;
key nomedachave;
}


subnet 10.7.0.0 netmask 255.255.255.0 {
range 10.7.0.20 10.7.0.200;
default-lease-time 256000;
max-lease-time 256000;
option broadcast-address 10.7.0.255;
one-lease-per-client on;
option domain-name "dominio.com.br";
option routers 10.7.0.1;
option subnet-mask 255.255.255.0;
option netbios-name-servers 10.7.0.1;
}

Salve o arquivo e saia. (:wq)

Pronto, arquivo de configuração dhcp com as informações da chave de segurança e as zonas de dns que deveram ser atualizadas dinamicamente.



3 - Configuração do servidor DNS

Vamos editar o arquivo de configuração named.conf responsável pelas zonas de dns.

# vim /etc/named.conf

options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
};


//
// a caching only nameserver config
//
controls {
inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { nomedachave; };
};

key nomedachave {
algorithm hmac-md5;
secret "tR5z4MLWsOppFQi0jFu9YQ==";
};


zone "." IN {
type hint;
file "named.ca";
};

zone "localdomain" IN {
type master;
file "localdomain.zone";
allow-update { none; };
};

zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};

zone "dominio.com.br" IN {
type master;
notify no;
check-names ignore;
file "dominio.com.br";
allow-update { key nomedachave; };
};


zone "2.168.192.in-addr.arpa" IN {
type master;
notify no;
check-names ignore;
file "192.168.2.1";
allow-update { key nomedachave; };
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};

zone "255.in-addr.arpa" IN {
type master;
file "named.broadcast";
allow-update { none; };
};

zone "0.in-addr.arpa" IN {
type master;
file "named.zero";
allow-update { none; };
};


Pronto, salve e saia. (:wq)

4 - Template dos arquivos de nomes e reverso

# vim /var/named/dominio.com.br
------------------------- INICIO
$ORIGIN .
$TTL 86400 ; 1 day
dominio.com.br IN SOA nomedohost.dominio.com.br. root.
nomedohost.dominio.com.br. (
2009021360 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS
nomedohost.dominio.com.br.
A 192.168.2.1
$ORIGIN
dominio.com.br.

------------------------------ FIM


#vim /var/named/192.168.2.1
------------------------------- INICIO

$ORIGIN .
$TTL 86400 ; 1 day
2.168.192.in-addr.arpa IN SOA nomedohost.dominio.com.br. root.nomedohost.dominio.com.br. (
2007057177 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS nomedohost.dominio.com.br.
$ORIGIN 2.168.192.in-addr.arpa.
1 PTR nomedohost.dominio.com.br.

------------------------------- FIM


5 - Depois de editado os arquivos de configuração vamos reinicializar os serviços e monitorá-los.

Restartando o seviço de dhcp

# service dhcpd restart


Restartando o serviço de DNS

# service named restart


OBS:
Para que o bind tenha permissão para atualizar os arquivos das zonas de dns precisamos darmos permissão de escrita para o grupo named conforme exemplo abaixo:

# chmod 0770 /var/named

Vendo as permissões da pasta

# ls -l /var
drwxrwx--- 4 root named 4096 Nov 7 10:51 named


6 - Monitoramento

Vamos agora monitorar para termos certeza que a integração está funcionando.
Para isso execute o seguinte comando abaixo:

# tail -f /var/log/messages

Vá até uma estação e execute o seguinte comando:

Em windows:
c:\ ipconfig /release
c:\ ipconfig /renew

Em linux:
# service network restart
# /etc/init.d/network restart


Após executado os comandos acima nas estações clientes, verifique no arquivo de log e também verifique a pasta named para ver se os arquivos de controle foram criados:

# ls -l /var/named

Executando o comando acima deveram ser listados os arquivo com a extensão .jln

-rw-r--r-- 1 named named 327248 Nov 7 10:36 192.168.2.1.jnl
-rw-r--r-- 1 named named 327248 Nov 7 10:36 dominio.com.br.jnl

4 comentários:

Ueider disse...

Parabéns pelo artigo. Onde eu posso ver que relacionou o IP fornecido com o dhcp e o dns? Essa informação fica guardada em algum arquivo, tipo o arquivo hosts?

Marcos Abadi disse...

Olá Ueider,
você pode ver no próprio arquivo da zona de dns.

Ueider disse...

A minha chave eu tinha gerado novamente e estava dando problema...obrigado, funcionou blz.

Ueider disse...

Eu tinha renovado a chave e estava diferente nos dois arquivos. Olhei lá na zona de dns igual vc disse e está ok... Muito obrigado.