Solución al script de DuckDNS en Mikrotik RouterOS


Cuando quisiste usar DuckDNS.org en tu RouterOS tuviste problemas con la instalación?. Bueno a mi me paso que el script «corría»  pero no me devolvía nunca el resultado deseado (mas claro: NO ANDABA). Depurando linea por linea me di cuenta que el problema no era el script si no la vesion de mi RouterOS.

¿para que uso DuckDNS?
Para el que no lo conoce, se usa para cuando tenes un sitio remoto con IP publica Dinamica y queres accederlo desde afuera. Tambien podes usarlo para una camara IP.
En este caso, el script del routerOS se encarga de que cuando la IP cambie… el sistema de duckDNS guarde la nueva IP. Entonces cada vez que accedas a tudominio.duckdns.org vas a entrar a tu routerOS sin problemas.

Para el que no lo usa, la instalación es super sencilla:
La instalacion del script es muy sencilla solo basta con copiar y pegar y tan solo modificar «domains» por tu dominio y el «token» por el que te de al hacer login y «agregar un dominio».

domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2

Aqui abajo el script completo:

:global currentIP;
:local newIP [/ip cloud get public-address];
:if ($newIP != $currentIP) do={
    :log info "IP address $currentIP changed to $newIP";
    :set currentIP $newIP;
    /tool fetch mode=https url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=$newIP" dst-path=duckdns.txt;
    :local result [/file get duckdns.txt contents];
    :log info "Duck DNS update result: $result";
}

Conclusión y forma de resolverlo:
RouterOS agrego el «https»del comando fetch en la version 6.0, es por eso que el script no corre. Lo unico que hay que hacer es actualizar el RouterOS a la version 6.X.

8 comentarios en “Solución al script de DuckDNS en Mikrotik RouterOS

  1. Hola Nico, como andas? Che vos sabes que estoy probando este script con la versión 6.25 y no hay forma de hacerla andar. le pongo el token y el dominio que me aparece en la pagina y no hace nada. Lo extraño es que en enviroment me aparece la variable currenIP con x.x.x.x y en el log veo el mensaje «IP address changed to x.x.x.x» pero nunca me alcanza a mostrar en el log «Duck DNS update result: $result» No se si me explico ?

    Saludos Pablo

    Saludos Pablo

  2. Pablito!! que alegria encontrarte en mi blog!!. Mira, lo que yo hice para resolverlo es pegar esta linea en la terminal:

    /tool fetch mode=https url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=$newIP" dst-path=duckdns.txt;
    

    Y por supuesto modificale «exampledomain», «token» por los datos de tu panel. Y «$newIP» por los datos la direccion IP actual que tenes otorgada. Y ahi te deberia algun error que te ayude a encontrar el problema.

    Saludos amigo!!

  3. Me pasa lo mismo, no logro hacerlo funcionar. El error es «failure: unable to resolve hostname»
    Y esta absolutamente bien puesto como lo indica la sintaxis.

  4. El problema aparece luego de que actualizara a la version 6.25
    Incluso corregi para que funcione con Cloud pero sin exito. Me ocurre lo musmo que el comentario del primer post con problemas. El error esta en la sentencia fetch, pero no se como resolverlo. Saludos.

  5. Ahi estoy mirando en un RB donde lo tengo andando y es la version 6.12. Tal vez en la 25 se rompe algo. Fijate si podes ir bajando de a poco. O directamente hace un downgrade a la version 6.12.

  6. Matellito:
    Hay un temita con las versiones (lo explica bien en la pagina de DuckDNS). Aca va una traduccion para que lo entiendas:

    • add permissions for: read, write, policy, test
    • don’t forget to change interface name, domains and token according to your configuration!
    • don’t forget to set scheduler!
    • don’t forget to enable IP Cloud (if you can’t enable IP Cloud or are using an earlier version than RouterOS v6.14, use «newIP [/ip address get [find interface=»ether1-gateway»];» instead of «newIP [/ip cloud get public-address];» in your script.

    Dice lo siguiente:

    • Dar permisos para, read, write, policy, test
    • No olvide cambiar el nombre de la interfaz, dominio y token acorde a tu configuracion.
    • No olvide configurar el Scheduler
    • No olvide Habilitar «IP > Cloud», Si no podes habilitarlo, o estas usando una version de RouterOS mas vieja que 6.14, debes usar esta linea:
      newIP [/ip address get [find interface="ether1-gateway"];
      en vez de esta:
      newIP [/ip cloud get public-address];

    Es MUY importante que el nombre de tu interfaz coincida con interface=»ether1-gateway». Es decir que si tu interfaz WAN se llama «Publica» modifiques tambien eso.
    Espero se entienda.
    Saludos

Deja un comentario