Tempo de leitura: 5 minutos
Neste Post veremos como integrar um DHCP e DNS de forma que leases feito pelo DHCP para hosts na rede, sejam automáticamente atualizados nos registros do DNS Bind.
Muito interessante para onde existe a necessidade de resolução de nomes para qualquer cliente na rede.
Para este tutorial usarei um Debian like, então as configurações, instalação de pacotes serão baseados nos mesmo.
Neste ambiente podemos usar a mesma máquina, ou maquinas distintas para o servidores DHCP e DNS. Então veja abaixo nosso ambiente:
Antes de vermos as configurações de rede de nosso servidor. Abaixo iremos descrever a configuração , iremos iniciar no gateway:
cat /etc/network/interfaces
auto lo iface lo inet static
iface LAN inet static address 172.16.10.254 netmask 255.255.255.0 dns-nameservers 172.16.10.1 dns-search tendo.local post-up iptables-restore < /etc/iptables.up.rules
auto WAN iface WAN inet static address 200.0.0.1 netmask 255.255.255.0 dns-nameservers 200.0.0.10
|
Acima somente a configuração básica, toda parte de compartilhamento e regras de firewall são carregadas após a LAN subir através do arquivo /etc/iptables.up.rules.
Vamos agora configurar nosso servidor DNS, para isso iremos instalar o bind e mais alguns pacotes.
apt-get install bind9 dnsutils |
Devemos além de configurar nosso DNS como servidor, podemos configurar em /etc/hosts a resolução para o mesmo.
cat /etc/hosts
127.0.0.1 dnssrv localhost.localdomian localhost 172.16.10.1 dnssrv.tendo.local dnssrv |
Agora vamos para a configuração de nosso servidor. Os aruqivos de configuração ficam no diretório /etc/bind, e o arquivo que iremos atualizar será o named.conf.options, para alterarmos o forwarders. Os forwarders serão os servidores DNS que será utilizado para resolução de nomes, quando o domínio não for local, e neste caso usaremos os DNS do Google.
options {
directory “/var/cache/bind”; forwarders { 8.8.8.8; 8.8.4.4 }; auth-nxdomain no; listen-on-v6 { any; }; }; |
Neste próxima sessão iremos gerar a chave que usaremos entre os servidor DNS e DHCP para validar a atualização entre ambos. Para tanto usamos o comando dnssec-keygen, usando criptografia MD5 de 128 bits para hosts. Após executado o comando, serão gerados dois arquivos um com extensão private e outro com extensão key. Usaremos a chave que está dentro do arquivo private.
#dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER
#cat Kdhcp_updater.*.private | grep Key Key: D9wQOYmJU+SUsJ1zXSC78A== |
Com a chave em mãos que é justamento o valor da linha key, iremos configurar nosso arquivo /etc/bind/named.conf.local para utiliza-la, e já aproveitando a edição do mesmo, iremos fazer as configurações de domínio. Neste arquivo iremos informar nossos domínios e quais arquivos irão estar armazenando nossos registros, e por fim se pode-se ou não atualizar. No caso abaixo iremos fazer a configuração inicialmente da chave de criptografia e por fim mais dois domínios um padrão e o reverso da rede 172, e neste domínio permitiremos atualizações somente com a chave já configurada.
key “rndc-key” {
algorithm hmac-md5; secret “D9wQOYmJU+SUsJ1zXSC78A==” };
zone “tendo.local” { type master; file “/var/lib/bind/tendo.local.db”; allow-update { key rndc-key}; };
zone “10.16.172.in-addr.arpal” { type master; file “/var/lib/bind/10.16.172.rev”; allow-update { key rndc-key}; };
|
Uma vez feito a configuração de nosso dominios deveremos criar nossos arquivos de dados e registros mencionados anteriormente. Iremos criar primeiro o /var/lib/bind/tendo.local.db. Para não fazer do zero, você poder fazer um cópia do arquivo empty.db que é um arquivo de exemplo. No exemplo abaixo iremos configurar o domínio tendo.local e com seus registros para o DNS, e as máquinas dhcp e gateway. Lembrando que neste Post teremos uma máquina para DHCP e outra para DNS.
$ORIGIN .
$ttl 907200 tendo.local IN SOA dnssrv.tendo.local. root.tendo.local. ( 950749049 10800 3600 432000 38400 ) @ IN NS dnssrv.tendo.local. IN A 172.16.10.1 $ORIGIN tendo.local dhcpsrv A 172.16.2.1 dnssrv A 172.16.2.2 gateway A 172.16.2.254 |
Agora vamos para o segundo arquivos, onde é configurado o reverso, em /var/lib/bind/10.16.172.rev.
$ORIGIN .
$ttl 907200 tendo.local IN SOA dnssrv.tendo.local. root.tendo.local. ( 950749049 10800 3600 432000 38400 ) @ IN NS dnssrv.tendo.local. $ORIGIN tendo.local 1 PTR dnssrv.tendo.local. 2 PTR dhcpsrv.tendo.local. 254 PTR gateway.tendo.local. |
Uma vez configurado, basta reiniciar o serviço.
service bind9 restart |
Agora que já temos instalado nosso DNS, vamos partir para o DHCP. Lembrando novamente, neste Post estou usando dois servidores diferentes, um para cada serviço, mas não impede de usarmos apenas um servidor para ambos os serviços. Normalmente o nome do pacote no Debian é isc-dhcp-server e seu arquivo de configuração é o /etc/dhcp/dhcpd.conf. Mas dependendo da distribuição que usar, isso pode mudar. Então vamos editar o arquivo de configuração de nosso serviço DHCP, iremos configurar a chave e quais domínios serão atualizados.
ddns-update-style on;
ddns-update-style ínterim; update-static-leases on; authoritative; key rndc-key { algorithm hmac-md5; secret D9wQOYmJU+SUsJ1zXSC78A== }; allow-unknow-clients; use-host-decl-names on; default-lease-time 600; max-lease-time 7200; log-facility local 7; |
Nesta primeira parte fizemos as configurações para ativar o update de hosts, bem como a configuração da chave de criptografia , lease e opções de log. Abaixo a configuração para os domínios.
zone tendo.local {
primary 172.16.2.1; key rndc-key; };
zone 10.16.172.in0addr.arpa. { primary 172.16.2.1; key rndc-key; };
|
E por fim é necessário passer as informações para os cliente, como range, mascará, gateway, dns, entre outras.
subnet 172.16.10.0 netmaks 255.255.255.0 {
range 172.16.10.100 172.16.10.200; option subnet-mask 255.255.255.0; option broadcast-address 172.16.10.255; option routers 172.16.10.254; option domain-name-servers 172.16.10.1; option domain-name “tendo.local”; ddns-domainname “tendo.local.”; ddns-ver-domainname “in-addr.arpa”; };
|
Enfim, tudo pronto, devemos reiniciar os serviços e acompanhar nos logs se tudo funcionará corretamente. No servidor DHCP:
service ics-dhcp-server restart |
No servidor DNS:
service bind9 restart |
Vejamos os logs, abaixo o log no DHCP server:
Podemos ver que o DHCP adicionou um nova entrada para a maquina winxp-pc e um reverso também. Abaixo a entrada no Log do DNS:
E por fim um verificando o cliente DHCP:
Espero que aproveitem.
André Stato