Skip to content

Servidores \ RTServer1 \ Dynamic DNS (DDNS)

rthomaz edited this page Jun 16, 2017 · 7 revisions

Dynamic DNS (DDNS)

Configuração

Gerar uma chave para verificação

Crie o arquivo ddns.key

Crie um novo arquivo (ddns.key) com o seguinte conteúdo (não se esqueça de substituir pela sua chave, a mesma usada no Servidor Master):

root@server:/# mkdir chaves

root@server:/# cd chaves

root@server:/# nano /chaves/ddns.key

key DDNS_UPDATE {
        algorithm HMAC-MD5.SIG-ALG.REG.INT;
        secret "<key>";
};

Copie a chave nos locais corretos

Copie este arquivo para /etc/bind/ e /etc/dhcp e ajuste as permissões de arquivo da seguinte maneira:

root@server:~# cp /chaves/ddns.key /etc/bind/

root@server:~# cp /chaves/ddns.key /etc/dhcp/

root@server:~# chown root:bind /etc/bind/ddns.key

root@server:~# chown root:root /etc/dhcp/ddns.key

root@server:~# chmod 640 /etc/bind/ddns.key

root@server:~# chmod 640 /etc/dhcp/ddns.key

Ou em duas linhas:

root@server:~# install -o root -g bind -m 0640 /chaves/ddns.key /etc/bind/ddns.key

root@server:~# install -o root -g root -m 0640 /chaves/ddns.key /etc/dhcp/ddns.key

Remover a pasta 'chaves':

root@server:/# rm -rf chaves

Configuração do Servidor DNS

Configure as zonas a serem atualizadas

O servidor DNS deve ser configurado para permitir atualizações para cada zona que o servidor DHCP estará atualizando. Os clientes no domínio rthomaz.local receberão endereços na sub-rede 192.168.0.0/24. Precisamos de uma declaração de chave para nossa chave e duas declarações de zona - uma para a zona de pesquisa direta e uma para a zona de pesquisa inversa. Para isso, adicione o seguinte ao arquivo /etc/bind/named.conf.local :

root@server:/# nano /etc/bind/named.conf.local

//
// Do any local configuration here
//

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

zone "rthomaz.local" {
    type master;
    notify no;
    file "/var/cache/bind/db.rthomaz.local";
    allow-update { key DDNS_UPDATE; };
};

zone "0.168.192.in-addr.arpa" {
    type master;
    notify no;
    file "/var/cache/bind/db.0.168.192";
    allow-update { key DDNS_UPDATE; };
};

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

A opção notify no; para a chamada (o daemon DNS) de reencaminhar informações sobre a rede local para servidores DNS externos. Isso só é útil se você usar endereços particulares em sua rede. Caso você use endereços públicos, você deseja que seu DNS envie essas informações para servidores DNS públicos. Para configurar isso, basta excluir a linha de notify no; .

Configuração do servidor DHCP

Além disso, você precisa configurar seu servidor DHCP para atualizar essas zonas. Para fazer isso, você precisa editar o arquivo /etc/dhcp/dhcpd.conf . Este arquivo consiste em diferentes seções. Na seção global, que é tudo o que não está dentro de uma sub-rede, ou bloco de grupo, você deve adicionar o seguinte:

root@server:/# nano /etc/dhcp/dhcpd.conf

[...]

ddns-updates           on;
ddns-update-style      interim;
ignore                 client-updates;
update-static-leases   on;

[...]

ddns-update-style

Esta opção deve ser sempre provisória. A única outra opção é adhoc, mas essa está desatualizada.

client-updates

Se você usa a opção permitir client-updates, os clientes podem registrar seu nome no servidor DNS por si só. Nós não queremos isso, então eu adicionei ignore client-updates (que já é a opção padrão), apenas para mostrar isso explicitamente.

update-static-leases

Por padrão, o servidor DHCP não atualiza as entradas de DNS de arrendamentos estáticos. Se você quiser atualizá-los, você deve configurar esta opção para ativar. Pode ser que isso cause alguns problemas, é por isso que a página de manual do dhcpd.conf não recomenda o uso dele. Se você tiver problemas, desligue-o, mas então você deve configurar estes hosts estaticamente não apenas para DHCP, mas também para DNS.

Você deve adicionar as seguintes linhas para as zonas que devem ser atualizadas pelo seu servidor DHCP:

root@server:/# nano /etc/dhcp/dhcpd.conf

[...]
    
## DDNS
include "/etc/dhcp/ddns.key";

zone rthomaz.local. {
  primary 192.168.0.101;
  key DDNS_UPDATE;
}

zone 0.168.192.in-addr.arpa. {
  primary 192.168.0.101;
  key DDNS_UPDATE;
}

[...]

A instrução primária especifica o endereço IP do servidor de nomes cuja informação de zona deve ser atualizada. Nesse caso, o servidor DHCP e DNS está sendo executado em outra máquina, é por isso que colocamos 192.168.0.101 lá. As descrições das zonas devem terminar com um período.

Por último adicione no arquivo um script para transformação dos nomes que o DHCP envia para o DNS dos Chromecasts da rede, pois todos possuem o mesmo hostname 'Chromecast':

root@server:/# nano /etc/dhcp/dhcpd.conf

[...]

## Resolvendo problema do Chromecast que todos possuem o mesmo hostname 'Chromecast'

host chromecast-01.rthomaz.local {
        hardware ethernet f4:f5:d8:fe:c0:58;
        ddns-hostname chromecast-01;
}

host chromecast-02.rthomaz.local {
        hardware ethernet 6c:ad:f8:d9:54:12;
        ddns-hostname chromecast-02;
}

host chromecast-03.rthomaz.local {
        hardware ethernet 08:9e:08:40:08:01;
        ddns-hostname chromecast-03;
}

Reinicie os servidores

root@server:/# /etc/init.d/isc-dhcp-server restart

root@server:/# /etc/init.d/bind9 restart

Teste

Agora que tudo está configurado é hora de testá-lo.

A maneira mais fácil de fazer isso é conectar um PC à sua rede e depois verificar /var/log/syslog no servidor. Você pode fazê-lo emitindo o seguinte comando:

root@server:/# tail -f /var/log/syslog

Se tudo funciona bem, você deve encontrar algo semelhante às seguintes linhas na saída deste comando:

named[1724]: client 127.0.0.1#59506: signer "ddns_update" approved
named[1724]: client 127.0.0.1#59506: updating zone 'example.org/IN': adding an RR at 'joob.example.org' A
named[1724]: client 127.0.0.1#59506: updating zone 'example.org/IN': adding an RR at 'joob.example.org' TXT
dhcpd: Added new forward map from joob.example.org to 192.168.61.36
named[1724]: client 127.0.0.1#48511: signer "ddns_update" approved
named[1724]: client 127.0.0.1#48511: updating zone '2.168.192.in-addr.arpa/IN': deleting rrset at '36.2.168.192.in-addr.arpa' PTR
named[1724]: client 127.0.0.1#48511: updating zone '2.168.192.in-addr.arpa/IN': adding an RR at '36.2.168.192.in-addr.arpa' PTR
dhcpd: added reverse map from 36.2.168.192.in-addr.arpa. to joob.example.org

Caso contrário, você pode querer fazer sua pesquisa na Internet e se você encontrar uma solução, você pode querer adicionar informações sobre isso a este documento.

Outra maneira de testá-lo

Vá para seus computadores clientes e habilite-os a tirar um IP de um servidor DHCP. Com o seguinte comando, verifique se o nome do seu computador cliente está atualizado no DNS. Ele resolverá seu nome com o novo IP alocado.

root@server:/# nslookup nomedocomputador.rthomaz.local

Referências

Clone this wiki locally