Prof. Thiago Guimarães Tavares - thiagogmta@gmail.com IFTO Campus Palmas
Ao final deste capítulo você deverá ser capaz de:
Compreender os detalhes de funcionamento do servidor DDNS e sua relação com o DHCP e DNS
Realizar a configuração do servidor DDNS em ambiente Linux
Realizar testes para atualização automática das tabelas de nomes do servidor DNS
DDNS é abreviação para Dynamic DNS, ou Sistema de Nomes de Domínios Dinâmico. É um método utilizado para atualizar automaticamente um servidor de nomes de domínio.
O DDNS é um complemento ao DNS e tem como objetivo relacionar um nome de domínio a um determinado usuário/host e manter esse relacionamento mesmo que o endereço IP desse usuário/host seja alterado. Podemos apresentar o exemplo de uma conexão de internet comum em uma residência. O modem do usuário irá receber um endereço de IP fixo do provedor para que possa acessar a internet. Entretanto, eventualmente o endereço do modem do usuário pode mudar, em decorrência de um eventual desligamento do aparelho ou de configurações preestabelecidas pelo provedor. Essa forma de funcionamento impede o usuário de realizar um relacionamento de nome com seu IP pois este irá ser alterado de tempos em tempos. Através do DDNS é possível por exemplo relacionar o domínio thiagogmta.net a um determinado host, mesmo que o endereço IP desse host mude. Podemos citar o No-IP um dos mais famosos provedores de serviços DDNS que disponibiliza seu serviço de forma gratuita até três hosts.
Note
|
Leve em consideração que nosso ambiente tem a seguinte topologia implementada através do netkit: |
Warning
|
Para implementação do DDNS será necessário a configuração de um servidor DHCP e o relacionamento deste servidor com o servidor DNS. Dessa forma, iremos levar em consideração que o PC1 será o servidor DHCP e DNS. |
O servidor DHCP deve possuir um IP fixo. Dessa forma este host será configurado com o endereço IP 10.1.1.1.
$ ifconfig eth1 10.1.1.1/29
As configurações referentes ao dhcp serão feitas no arquivo /etc/dhcpd3/dhcpd.conf
Tip
|
É possível inserir as configurações desejadas diretamente no arquivo original ou fazer um backup do arquivo e criar um novo apenas com as configurações desejadas. Fica ao seu critério. Para o desenvolvimento deste material foi criado um novo arquivo. |
$ mv /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.old
$ touch /etc/dhcp3/dhcpd.conf
$ nano /etc/dhcp3/dhcpd.conf
No novo arquivo de configuração foram inseridas as seguintes linhas:
ddns-update-style none; (1)
default-lease-time 600; (2)
max-lease-time 7200; (3)
authoritative; (4)
subnet 10.1.1.0 netmask 255.255.255.248{ (5)
range 10.1.1.2 10.1.1.6; (6)
option subnet-mask 255.255.255.248; (7)
option routers 10.1.1.1; (8)
option broadcast-address 10.1.1.7; (9)
option domain-name-servers 10.1.1.1; (10)
option domain-name "thiago.net"; (11)
}
-
Desabilita atualização dinâmica
-
Informa que o servidor dhcp irá verificar a cada 600 segundos se as estaçãoes estão ativas.
-
Determina o tempo máximo que um host pode ficar com um endereço.
-
Define como servidor DHCP principal da rede
-
Informa o endereço da rede e sua máscara. Dentro do seu bloco são inseridas as configurações para distribuição de endereços.
-
Faixa de distribuição de endereços
-
Máscara da rede
-
Endereço de Gateway padrão
-
Endereço de broadcast da rede
-
Servidor DNS (caso exista)
-
Nome do domínio
> Interfaces
Como nosso servidor possui duas interfaces de rede precisamos informar ao servidor qual das duas interfaces irá responder às solicitações de endereçamento IP. Para isso devemos editar o arquivo /etc/default/dhcp3-server. Dentro dessa linha alterar o parâmetro INTERFACES e informar a interface desejada fincando dessa maneira:
#/etc/default/dhcp3-server
INTERFACES="eth1"
Salve e feche o arquivo.
Ao finalizar inicie (ou reinicie) o servidor para validar as configurações.
$ /etc/init.d/dhcp3-server start
Feitas as configurações, acessaremos apenas o host pc2 inicialmente e solicitaremos atualização de endereço.
$ dhclient eth0
Posteriormente faremos testes nos pcs 3 e 4.
Caso seja necessário a remoção de endereço em algum dos hosts para realizar novos testes utilize o comando:
$ ip address flush dev eth0
Configurações iniciais do servidor DHCP finalizadas.
Feita a configuração do servidor DHCP partiremos para a configuração do servidor DNS.
Important
|
Utilizaremos como base o domínio thiago.net. Não se esqueça de configurar essa informação no arquivo /etc/hosts. |
O primeiro passo para configuração do DNS é acessar o arquivo named.conf.local e criar as zonas de configuração.
$ nano /etc/bind/named.conf.local
//Zona de pesquisa direta
zone "thiago.net"{ (1)
type master; (2)
file "/etc/bind/db.thiago.net"; (3)
};
//Zona de pesquisa reversa
zone "1.1.10.in-addr.arpa"{ (4)
type master;
file "/etc/bind/db.10"; (5)
};
-
Nome da zona onde thiago.net é o domínio
-
Tipo de zona
-
Caminho do arquivo da zona direta (deverá ser criado)
-
Zona reversa que é representada pelo Ip do servidor ao contrário sem o ultimo octeto seguido da terminação .in-addr.arpa (padrão)
-
Caminho do arquivo de zona reversa
A medida que nosso servidor DNS receber requisições de resolução de nomes quais ele não saiba a resposta deverá encaminha-las a um próximo servidor DNS. Descomentar o bloco representado lobo a baixo e inserir um endereço Ip de outro servidor DNS.
$ nano /etc/bind/named.conf.options
fowarders{
8.8.8.8
}
Para facilitar o trabalho faremos uma cópia de dois arquivos já existentes que servirão de base:
$ cp /etc/bind/db.local /etc/bind/db.thiago.net
$ cp /etc/bind/db.127 /etc/bind/db.10
Zona Direta
$ nano /etc/bind/db.thiago.net
; BIND - Zona Direta (nome.com.br)
;---
$TTL 604800
@ IN SOA pc1.thiago.net. root.thiago.net. (
2014051801 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS pc1.thiago.net.
pc1 IN A 10.1.1.1
@ IN NS localhost.
@ IN A 127.0.0.1
@ IN AAAA ::1
Zona Reversa
$ nano /etc/bind/db.10
; BIND - Zona Reversa (nome.com.br)
;---
$TTL 604800
@ IN SOA pc1.thiago.net. root.thiago.net. (
2014051801 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS pc1.thiago.net.
1 IN PTR pc1.thiago.net.
@ IN NS localhost.
1.0.0 IN PTR localhost.
Validando configurações
Após as configurações podemos checar as configurações de zonas e verificar eventuais erros através dos comandos:
Para checar as configurações do servidor execute o comando:
$ named-checkconf
Para verificar as configurações das zonas utilize os comandos:
$ named-checkzone thiago.net /etc/bind/db.thiago.net
$ named-checkzone thiago.net /etc/bind/db.10
Caso retorne OK a configuração está correta. Inicie o servidor.
$ /etc/init.d/bind start
Para verificar se as zonas foram preenchidas corretamente podemos verificar sua tabela através do comando:
$ host -l thiago.net
Para testar se os hosts cadastrados estão respondendo por seus respectivos nomes podemos utilizar os comandos ping ou host a partir do pc2 para o pc1.
$ host pc1.thiago.net
$ ping pc1.thiago.net
O comando host irá retornar o endereço Ip do pc1 e o comando ping irá enviar um pacote para o ip correspondente ao pc1.
O ponto interessante do DDNS é que a medida que o servidor DHCP recebe requisições dos clientes ele envia essas informações ao servidor DNS que por sua vez atualiza suas tabelas de resolução de nomes. As configurações apresentadas até este ponto são configurações básicas para o funcionamento de ambos os serviços DHCP e DNS. Faremos então algumas alterações para habilitar o DDNS.
Criando chave de autenticação
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST ddns
Ao executar o comando teremos um retorno semelhante a esse:
K<nome da chave>.+157+60250
Também será criado um arquivo de mesmo nome. No caso desse exemplo foi criado o arquivo: Kddns.+157+60250.key
acesse o arquivo criado copie a chave gerada. No caso desse exemplo a chave gerada foi: N5+rdUh6jLGHPinu4bmalg==
acesse o arquivo dhcpd.conf e certifique-se das seguintes configurações:
Realizando configurações
ddns-update-style interim;
option domain-name "thiago.net";
authoritative;
log-facility local7;
Crie uma sessão para a chave
key ddns {
algorithm hmac-md5;
secret "<sua chave aqui>";
};
Defina suas zonas
zone thiago.net. {
primary 10.1.1.1;
key ddns;
}
zone 1.1.10.in-addr.arpa. {
primary 10.1.1.1;
key ddns;
}
Reinicie o servidor dhcp
Acesse o arquivo de configuração named.conf e insira a chave criada no passo anterior:
key ddns {
algorithm hmac-md5;
secret "<sua chave aqui>";
};
Crie a sessão controls no mesmo arquivo named.conf
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; }
keys { "ddns"; };
};
Acesse o arquivo named.conf.local e adicione as seguintes configurações em seus arquivos de zonas:
zone "thiago.net" {
type master;
file "/etc/bind/db.thiago.net";
notify no;
allow-update { key ddns; };
};
zone "1.1.10.in-addr.arpa"{
type master;
file "/etc/bind/db.10";
notify no;
allow-update { key ddns; };
};
Altere o conteúdo do arquivo rndc.key (/etc/bind/rndc.key) e insira a sua chave dentro do arquivo.
Vamos checar as configurações do servidor:
$ named-checkconf
Caso tudo esteja ok, reinicie o servidor.
O pulo do Gato
Para máquinas linux é preciso alterar o arquivo /etc/dhcp3/dhclient.conf nos computadores clientes e alterar a seguinte linha:
send host-name "hostname";
Onde "hostname" deve ser substituido pelo nome da máquina
Testando
Chegou a hora da verdade!
-
Execute, no servidor, o comando tail -f /var/log/syslog para monitorar as entradas do servidor. Através desse comando poderemos visualizar as solicitações de endereçamento IP dos nossos clientes.
-
Lembra que até o momento só setamos endereço IP no pc 02 através do dhcp? Bom agora vamos fazer o teste nos pcs 03 e 04 execute o comando dhclient eth0.