Criando seu próprio DynDNS (Atualização Dinâmica de DNS) - (DNS Dynamic Updates)
Vamos aos passos:
1º Passo - Instalação e configuração do Bind
Primeiramente vamos precisar ter o Bind instalado, configurado e funcionando conforme dica já passada aqui no blog: <>
2º Passo - Criação da Chave
Execute o comando abaixo, no seu servidor Bind, o comando dnssec-keygen faz parte do pacote bind.
# dnssec-keygen -a HMAC-MD5 -b 512 -n HOST servidorbind
Para quem se interessar em tirar dúvidas sobre os parâmetros do comando dnssec-keygen segue o link: <>
3º Passo - Copiar a chave
Kservidorbind.+157+10529.key
Kservidorbind.+157+10529.private
# cat Kservidorbind.+157+10529.key
servidorbind. IN KEY 512 3 157 Gnx6+MPkb94I1pQD740sPEopj4AWm8YgCGJwzKm6JQYQPXydFTrFLH39 IQle135rHybhCNroDyPTS1gVM2l2ww==
4º Passo - Configurar a chave no bind
Edite o arquivo named.conf e adicione o nome da chave conforme exemplo abaixo:
# vim /etc/named.conf
key servidorbind {
algorithm hmac-md5;
secret "IQle135rHybhCNroDyPTS1gVM2l2ww==";
};
5º Passo - Adicionar o nome da chave na zona
Agora vá até a zona e adicione o parâmetro allow-update conforme exemplo abaixo:
zone "meudominio.com.br" IN {
type master;
file " meudominio.com.br ";
allow-update { key servidorbind;};
};
Agora
os passos mais interessantes, iremos criar os scripts em php que irão
receber as informações de endereçamento dos clientes.
6º Passo - Criar e Configurar o arquivo dyndns_rcv.php
No sexto passo, você irá precisar de um servidor rodando apache com suporte a php, caso você esteja rodando o CentOS ou Redhat apenas execute o seguinte comando :
# yum install httpd php -y
Agora vá até a pasta root do servidor apache e crie o seguinte arquivo:
# vim /var/www/html/dyndns_rcv.php
Copie e cole o seguinte conteúdo:
$ip_host = $_REQUEST['ip_host'];
$nome_host = $_REQUEST['nome_host'];
$cmd_update = "/var/www/html/nsupdate.sh $ip_host $nome_host";
exec($cmd_update,$out);
?>
Salve e feche o arquivo.
7º Passo - Configurar o arquivo nsupdate.sh
No sétimo passo ainda dentro do servidor apache, iremos criar o arquivo chave de tudo, é o responsável pela recepção dos parâmetros e envio para atualização no servidor bind.
Execute o seguinte comando para criar o arquivo:
# vim /var/www/html/nsupdate.sh
Copie e cole o conteúdo abaixo, o arquivo é um shell script
#!/bin/bash
KEYNAME="servidorbind"
HASH="IQle135rHybhCNroDyPTS1gVM2l2ww=="
IP="$1"
SERVER="127.0.0.1"
ZONE="meudominio.com.br"
HOST="$2.meudominio.com.br"
# Definir comando de update
NSUPDATE="/usr/bin/nsupdate -y $KEYNAME:$HASH"
EXEC="server $SERVER\n
zone $ZONE\n
update delete $HOST A\n
update add $HOST 1440 A $IP\n
show\n
send"
# Executa a atualizacao
echo -e $EXEC | $NSUPDATE
Salve
o arquivo e feche. Lembrando que o mesmo é um shell script e precisamos
definir as permissões para execução do usuário apache, para isso
execute os seguintes comando abaixo:
Definindo a permissão de execução:
# chmod 0750 /var/www/html/nsupdate.sh
Definindo as permissões para o usuário apache:
# chown apache.apache /var/www/html/nsupdate.sh
Definindo as permissões para o usuário apache:
# chown apache.apache /var/www/html/nsupdate.sh
Agora
temos o servidor que irá receber as informações via servidor web apache
com php e enviá-las para o bind via shell script, não esqueça de
iniciar o serviço do servidor apache, para isso utilize o seguinte
comando:
# service httpd start
8º Passo - Criação do arquivo meuip
No
oitavo passo ainda dentro do servidor web apache, iremos criar um
arquivo chamado meuip_host.php, isso é para garantir que quando o host
cliente for enviar a informação do ip público, essa informação seja
confiável e também para não depender de serviço de sites de terceiros
como meuip.com.br, etc... que possam estar fora do ar no momento de um
envio de atualização do endereço ip acabarmos ficando sem acesso ao
host até que o serviço volte ao ar.
# vim /var/www/html/meuip_host.php
Copie e cole o seguinte conteúdo no arquivo acima:
$ip=$_SERVER['REMOTE_ADDR'];
print $ip."\n";
?>
Salve o arquivo e feche. Tudo pronto na parte do server de recepção, agora vamos para o cliente.
9 º Passo - Configurar o script dyndns_host.sh no cliente
No
nono passo iremos criar o arquivo escrito em shell script, ele é
responsável por buscar a informação do endereço ip publico ao qual ele
está rodando e enviar as informações de nome do host e ip para a
atualização no servidor de dns. Para isso crie o seguinte arquivo
conforme comando abaixo:
# vim /root/scripts/dyndns_host.sh
Copie e cole o conteúdo abaixo no arquivo acima.
#!/bin/sh
HOSTNAME="NOME_HOST"
LYNX=`/usr/bin/which lynx`
IP=`$LYNX -source http://www.meudominio.com.br/meuip_host.php`
$LYNX --dump "http://www.meudominio.com.br/dyndns_rcv.php?ip_host=$IP&nome_host=$HOSTNAME"
Personalize o nome do host de acordo com a sua necessidade, salve o arquivo e feche.
Personalize o nome do host de acordo com a sua necessidade, salve o arquivo e feche.
Para rodar o arquivo acima iremos precisar de um pacote adicional chamado lynx, para isso execute o seguinte comando:
# yum install lynx -y
Agora iremos definir as permissões de execução do arquivo:
Agora iremos definir as permissões de execução do arquivo:
# chmod 0755 /root/scripts/dyndns_host.sh
10º Passo - Configurar na crontab a execução do script
E por último, vamos colocar o script para rodar na crontab e nos enviar as informações de autualização de tempos em tempos, claro, de acordo com a sua necessidade:
a. # vim /etc/crontab
b. Inserir a seguinte linha:
*/10 * * * * root /root/scripts/dyndns_host.sh
c. Certificar que o serviço crond está rodando.
[root@host scripts]# service crond status
crond (pid 1165) is running...
Agora pronto, só testar!!
Grande abraço a todos e boa sorte, espero ter ajudado!
fonte: http://marcosabadi.blogspot.com.br/2011/10/criando-seu-proprio-dyndns-atualizacao.html