DynDNS mit Mikrotik Router

Mikrotik bietet einen eigenen Cloud-Dienst für DynDNS an. Möchte man diesen nicht nutzen ist folgendes script nützlich.
Es nutzt nimmt zwar die public-IP aus /ip/cloud aber übergibt diese anschließend an den Service der Wahl, um z.b. mit der eigenen Domain arbeiten zu können.

Das Script benötigt folgende policies: read, test.


# set local public IP A-Record
:local pIPA [/ip/cloud/ get public-address];
# SPDYN DynDNS Hostname==Username
:local spdynhostname "example.spdns.de";
# SPDYN Token
:local spdynpassw "abcd-abcd-abcd";
# SPDYN Server Hostname
:local spdynhost "update.spdyn.de";
# SPDYN updateURL with parameters
:local spdynupdateURL "/nic/update?hostname=$spdynhostname&myip=$pIPA&user=$spdynhostname&pass=$spdynpassw";
# variable to provide result of fetch command ("local scope") outside of do. Hint: use "set"
#:local fetchreturn;
# wait a few seconds to circumvent script error after reboot
:delay 8s
# run update with error-handling and log to error if failed or to info if success
:do {
:local fetchreturn [/tool/fetch http-method=get mode=https host=$spdynhost output=user-with-headers url=$spdynupdateURL as-value];
:log info ("DynDNS update script successfully executed (" . [:tostr ($fetchreturn->"data")] . ")");
} on-error={:log error "failed to run DynDNS update script"};
# to console for testing. var only available if value is assigned with set in do
#:put ($fetchreturn->"data");

Im Ergebnis wird die IP aktualisiert und die Response des Serviceanbieters mit ins log geschrieben.

Bsp.:
21:06:12 script,info DynDNS update script successfully executed (nochg 10.10.123.123)

(To-Do: check if mikrotik sanitizes log file entry automatically)

Quellen:
https://wiki.mikrotik.com/wiki/Manual:Tools/Fetch
https://wiki.mikrotik.com/wiki/Manual:IP/Cloud
https://wiki.mikrotik.com/wiki/Manual:Scripting
https://wiki.securepoint.de/SPDyn/R%C3%BCckgabecodes