Veja como podemos atualizar um IP dinâmico no No-IP. Utilizando este script, podemos atualizar o endereço IP de uma interface PPPoE do Mikrotik no serviço de DNS dinâmico No-IP vinculando o IP da interface a um host do serviço, sempre que ocorrer alteração do endereço IP na interface monitorada.

O script pode, por exemplo, ser agendado para execução a cada 1 minuto (precisa configurar um scheduler).

Sempre que executado, o script verificará se o endereço IP da interface monitorada mudou. Se o endereço IP tiver sido alterado, será enviado o novo IP para o No-IP e algumas linhas de logs serão escritas.

Caso ao executar o script o IP da interface seja o mesmo IP anterior, o script será encerrado sem realizar nenhuma atividade.

SEGUE SCRIPT:

# Atualizacao automatica do No-IP

# Alterar as informacoes desta secao conforme os dados do seu login e host no-ip
:local noipuser "usuario"
:local noippass "senha"
:local noiphost "nomedomeuhost.no-ip.org"

# Nome da interface que devera ter o endereco IP vinculado ao host do no-ip
:local inetinterface "pppoe-out1"

:global previousIP

:if ([/interface get $inetinterface value-name=running]) do={
# Obtendo informacao sobre o IP atual
   :local currentIP [/ip address get [find interface="$inetinterface" disabled=no] address]
   :for i from=( [:len $currentIP] - 1) to=0 do={
       :if ( [:pick $currentIP $i] = "/") do={ 
           :set currentIP [:pick $currentIP 0 $i]
       } 
   }



  :if ($currentIP != $previousIP) do={
       :log info "No-IP: IP atual $currentIP diferente do IP anterior, atualizando."
       :set previousIP $currentIP

       # Enviando o novo IP via http
       :log info "No-IP: Atualizando o host $noiphost"
       /tool fetch mode=http user=$noipuser password=$noippass url="http://dynupdate.no-ip.com/nic/update3Fhostname=$noiphost&myip=$currentIP" keep-result=no
       :log info "No-IP: Host $noiphost atualizado no No-IP = $currentIP"
   }
} else={
   :log info "No-IP: $inetinterface desconectada. Impossivel atualizar No-IP."
}

Vídeo prático em detalhes: