| Subcribe via RSS

Configurando um DDNS em um Mikrotik

setembro 1st, 2010 Posted in Geral


Uma das muitas coisas que faço é preparar Mikrotik´s. Em muitos casos é uma ótima alternativa a Firewall´s em Linux. São equipamentos robustos, estáveis e fáceis de configurar.

Uma das coisas que acho muito interessante no Mikrotik é a capacidade de escrevermos scripts, assim podemos customizar uma série de funções e automatizar tarefas. Uma dessas tarefas é exatamente a atualização do endereço de um cliente ADSL.

Já utilizei um grande número de scripts prontos que encontrei na Internet, mas depois de algumas adaptações, este foi o que funcionou melhor.

:global previousIP [:resolve hoteljangadeiro.ddns.info]
:local hostname “hoteljangadeiro.ddns.info”
:local username “sti”
:local password “master”
# Pegando o IP
/tool fetch mode=http address=”checkip.dyndns.org” src-path=”/” dst-path=”/dyndns.checkip.html”
:local result [/file get dyndns.checkip.html contents]
:local resultLen [:len $result]
:local startLoc [:find $result ": " -1]
:set startLoc ($startLoc + 2)
:local endLoc [:find $result "</body>" -1]
:local currentIP [:pick $result $startLoc $endLoc]
:log info “UpdatedDNS: currentIP = $currentIP”
# Atualizando
:if ([ :typeof $previousIP ] = “nothing” ) do={ :global previousIP 0.0.0.0/0 }
:if ($currentIP != $previousIP) do={
/tool dns-update name=$hostname address=$currentIP key-name=$username key=$password
:log info (“UpdatedDNS: Dyndns update needed”)
} else={
:log info (“UpdatedDNS: No ddns update needed”)
}

# By Humberto Caetano. http://www.vidalinux.com.br

:global previousIP [:resolve SEUDNS.ddns.info]
:local hostname “SEUDNS.ddns.info”
:local username “usuario”
:local password “senha”

# Pegando o IP
/tool fetch mode=http address=”checkip.dyndns.org” src-path=”/” dst-path=”/dyndns.checkip.html”
:local result [/file get dyndns.checkip.html contents]
:local resultLen [:len $result]
:local startLoc [:find $result ": " -1]
:set startLoc ($startLoc + 2)
:local endLoc [:find $result "</body>" -1]
:local currentIP [:pick $result $startLoc $endLoc]
:log info “UpdatedDNS: currentIP = $currentIP”

# Atualizando
:if ([ :typeof $previousIP ] = “nothing” ) do={ :global previousIP 0.0.0.0/0 }
:if ($currentIP != $previousIP) do={
/tool dns-update name=$hostname address=$currentIP key-name=$username key=$password
:log info (“UpdatedDNS: Dyndns update needed”)
} else={
:log info (“UpdatedDNS: No ddns update needed”)
}

Bom proveito.. Até a Próxima.

Tags:

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes