min.6max.30
Goto Top

DynDNS Mikrotik Ionos

Hallo liebe IT'ler,

ich bin mit einer Domain umgezogen von Strato zu Ionos.
Bei Ionos läuft DynDNS ja etwas anders als bei Strato.
Das DynDNS Update mache ich per Mikrotik Script und zwar mit diesem:

# Set needed variables
:local username "USERNAME"  
:local password "PASSWORT"  
:local hostname "DOMAIN"  

:global dyndnsForce
:global previousIP

# print some debug info
:log info ("UpdateDynDNS: username = $username")  
:log info ("UpdateDynDNS: hostname = $hostname")  
:log info ("UpdateDynDNS: previousIP = $previousIP")  

# get the current IP address from the internet (in case of double-nat)
/tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"  
:delay 1
:local result [/file get dyndns.checkip.html contents]

# parse the current IP result
: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 "UpdateDynDNS: currentIP = $currentIP"  

# Remove the # on next line to force an update every single time - useful for debugging,
# but you could end up getting blacklisted by DynDNS!

#:set dyndnsForce true

# Determine if dyndns update is needed
# more dyndns updater request details http://www.dyndns.com/developers/specs/syntax.html

:if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={
:set dyndnsForce false
:set previousIP $currentIP
:log info "$currentIP or $previousIP"  
/tool fetch user=$username password=$password mode=http address="dyndns.strato.com" \  
src-path="nic/update?system=dyndns&hostname=$hostname&wildcard=OFF&backmx=NO&offline=NO" \  
dst-path="/dyndns.txt"  
:delay 1
:local result [/file get dyndns.txt contents]
:log info ("UpdateDynDNS: Dyndns update needed")  
:log info ("UpdateDynDNS: Dyndns Update Result: ".$result)  
:put ("Dyndns Update Result: ".$result)  
} else={
:log info ("UpdateDynDNS: No dyndns update needed")  
}
Jetzt benötigt man bei Ionos aber überhaupt keine Login Daten, bzw die werden einfach ignoriert.
Da benötigt man nur eine URL wie zb diese:
https://ipv4.api.hosting.ionos.com/dns/v1/dyndns?q=ZsWxJSLcX8Dpy40nu0fhycBXdnnTb0gM2yqKS3Xcmx4c3yA6EhZp3Sg0467MRvdn6dU4P0kQntSeskxpYsFMxXnrKmW8teSHSHc3eefgYu4tjb2veJH4tESXaTmW4tvNW6nrtSm6Vb6E7e2SpuqqjvFaqbBS4XGCS

Ich habe leider gar keine Ahnung von Mikrotik Scripten...
Könnt ihr mir sagen wie das Script aussehen muss damit das Update funktioniert ?

Beste Grüße

Content-Key: 93304883284

Url: https://administrator.de/contentid/93304883284

Printed on: May 3, 2024 at 08:05 o'clock

Member: min.6max.30
min.6max.30 Jan 26, 2024 at 08:04:46 (UTC)
Goto Top
Hab es jetzt einfach mal so ausprobiert: (URL abgeändert)
# Set needed variables
:local username "USERNAME"  
:local password "PASSWORT"  
:local hostname "DOMAIN"  

:global dyndnsForce
:global previousIP

# print some debug info
:log info ("UpdateDynDNS: username = $username")  
:log info ("UpdateDynDNS: hostname = $hostname")  
:log info ("UpdateDynDNS: previousIP = $previousIP")  

# get the current IP address from the internet (in case of double-nat)
/tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"  
:delay 1
:local result [/file get dyndns.checkip.html contents]

# parse the current IP result
: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 "UpdateDynDNS: currentIP = $currentIP"  

# Remove the # on next line to force an update every single time - useful for debugging,
# but you could end up getting blacklisted by DynDNS!

#:set dyndnsForce true

# Determine if dyndns update is needed
# more dyndns updater request details http://www.dyndns.com/developers/specs/syntax.html

:if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={
:set dyndnsForce false
:set previousIP $currentIP
:log info "$currentIP or $previousIP"  
/tool fetch user=$username password=$password mode=https address="ipv4.api.hosting.ionos.com" \  
src-path="dns/v1/dyndns?q=NDI0YzRkNWYzODJmNDyYTE5YTkuME5vZ1FpbGx2dlNIeWtXbkh502Z1VRY3dXd5TFVSaERLSjNnblZlYTJEUVVQQ0pJWVE" \  
dst-path="/dyndns.txt"  
:delay 1
:local result [/file get dyndns.txt contents]
:log info ("UpdateDynDNS: Dyndns update needed")  
:log info ("UpdateDynDNS: Dyndns Update Result: ".$result)  
:put ("Dyndns Update Result: ".$result)  
} else={
:log info ("UpdateDynDNS: No dyndns update needed")  
}

Aber das scheint nicht die Lösung zu sein...
Mitglied: 11078840001
Solution 11078840001 Jan 26, 2024 updated at 08:45:57 (UTC)
Goto Top
Das Ding is schon echt alt mit Speichern der html Seiten im Flash, das geht mittlerweile auch ohne den Flash jedes mal zu beschreiben ...

Probier mal (die XXXX an deine URL anpassen aber am Ende den Parameter für die IP behalten!)
:global dyndnsForce
:global previousIP
:global currentIP

:do {
    :set currentIP ([/tool fetch url="https://ip.skittel.de" output=user as-value]->"data")  
} on-error={
    /log warning message="Error resolving external IP"  
    :quit
}

#:set dyndnsForce true

:if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={
    :set dyndnsForce false
    :set previousIP $currentIP
    /log info message="UpdateDynDNS: Dyndns update needed"  
    :do {
         /tool fetch url="https://ipv4.api.hosting.ionos.com/dns/v1/dyndns\?q=XXXXXXXXXXXXXXXXXXXXXXX&ipv4=$currentIP" output=user  
         /log info message="UpdateDynDNS:  New IP $currentIP"  
    } on-error={
         /log warning message="UpdateDynDNS: Error updating IP."  
    }
} else={
    /log info message="UpdateDynDNS: No dyndns update needed"  
}
Member: aqui
aqui Jan 26, 2024 at 08:33:35 (UTC)
Goto Top
Wozu so einen Aufwand wenn man den Mikrotik eigenen, kostenlosen DDNS Dienst mit einem simplen Mausklick nutzen kann:
https://mikrotik-blog.com/dyndns-unter-mikrotik-routeros-einrichten
Quasi das MyFritz von Mikrotik. face-wink
Mitglied: 11078840001
11078840001 Jan 26, 2024 updated at 08:43:09 (UTC)
Goto Top
Zitat von @aqui:

Wozu so einen Aufwand wenn man den Mikrotik eigenen, kostenlosen DDNS Dienst mit einem simplen Mausklick nutzen kann:
https://mikrotik-blog.com/dyndns-unter-mikrotik-routeros-einrichten
Quasi das MyFritz von Mikrotik. face-wink

Der auch immer mal wieder stundenlang manchmal auch tagelang ausfällt 😆.
Member: min.6max.30
min.6max.30 Jan 26, 2024 at 09:18:00 (UTC)
Goto Top
Zitat von @aqui:

Wozu so einen Aufwand wenn man den Mikrotik eigenen, kostenlosen DDNS Dienst mit einem simplen Mausklick nutzen kann:
https://mikrotik-blog.com/dyndns-unter-mikrotik-routeros-einrichten
Quasi das MyFritz von Mikrotik. face-wink

Hi, weil ich gerne meine eigenen (Sub)Domains nutzen möchte face-smile


Zitat von @abamakabra:

Das Ding is schon echt alt mit Speichern der html Seiten im Flash, das geht mittlerweile auch ohne den Flash jedes mal zu beschreiben ...

Probier mal (die XXXX an deine URL anpassen aber am Ende den Parameter für die IP behalten!)
:global dyndnsForce
:global previousIP
:global currentIP

:do {
    :set currentIP ([/tool fetch url="https://ip.skittel.de" output=user as-value]->"data")  
} on-error={
    /log warning message="Error resolving external IP"  
    :quit
}

#:set dyndnsForce true

:if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={
    :set dyndnsForce false
    :set previousIP $currentIP
    /log info message="UpdateDynDNS: Dyndns update needed"  
    :do {
         /tool fetch url="https://ipv4.api.hosting.ionos.com/dns/v1/dyndns\?q=XXXXXXXXXXXXXXXXXXXXXXX&ipv4=$currentIP" output=user  
         /log info message="UpdateDynDNS:  New IP $currentIP"  
    } on-error={
         /log warning message="UpdateDynDNS: Error updating IP."  
    }
} else={
    /log info message="UpdateDynDNS: No dyndns update needed"  
}

Pobiere ich gleich mal, danke schon mal
Member: Michi91
Michi91 Jan 26, 2024 at 10:04:48 (UTC)
Goto Top
Zitat von @aqui:

Wozu so einen Aufwand wenn man den Mikrotik eigenen, kostenlosen DDNS Dienst mit einem simplen Mausklick nutzen kann:
https://mikrotik-blog.com/dyndns-unter-mikrotik-routeros-einrichten
Quasi das MyFritz von Mikrotik. face-wink

Hi, weil ich gerne meine eigenen (Sub)Domains nutzen möchte face-smile

Du könntest einen CNAME für deine Subdomain setzen, der auf den DDNS Eintrag von Mikrotik verweist.
So bleibt auch deine (Sub)domain zur IP Auflösung korrekt.

Das halte ich für sehr viel einfacher, als der Versuch mit der Mikrotik Scriptsprache einen umfangreichen REST Service anzusprechen... Die API ist deutlich komplexer als nur ein URL Fetch...
https://developer.hosting.ionos.de/docs/dns
Mitglied: 11078840001
11078840001 Jan 26, 2024 updated at 10:27:55 (UTC)
Goto Top
Zitat von @Michi91:
Das halte ich für sehr viel einfacher, als der Versuch mit der Mikrotik Scriptsprache einen umfangreichen REST Service anzusprechen... Die API ist deutlich komplexer als nur ein URL Fetch...
https://developer.hosting.ionos.de/docs/dns
Die Update-URL muss man nur einmalig für die Domain mit dem API-Token anfordern was man manuell erledigen kann, danach reichen am Mikrotik simple GET Requests mit der generierten URL und angehängtem Parameter &ipv4=<IP> für das Update der Domain völlig aus.

CNAME geht natürlich immer, wenn der DDNS Service von Mikrotik nur nicht so unzuverlässig wäre.

Aber kann ja Gott sei Dank jeder selbst entscheiden wie er was realisiert 🙂.
Member: Michi91
Michi91 Jan 26, 2024 at 10:31:47 (UTC)
Goto Top
@abamakabra
hast recht, ziehe meine Antwort zurück. Scheint doch recht easy zusein sobald man den Token hat face-smile Wird hier auch nochmal beschrieben: https://www.ionos.de/hilfe/domains/ip-adresse-konfigurieren/dynamisches- ...

ich hatte mich auch schon gewundert, warum es so komplex wirkte... face-smile
Member: min.6max.30
min.6max.30 Jan 26, 2024 at 11:52:16 (UTC)
Goto Top
Hat wunderbar geklappt, vielen Dank!

Kann man das Script auch so erweitern das ich 2 oder 3 subdomains damit updaten kann?
Ich weiß man könnte das auch per cname machen aber es gibt anwendungen die dann die Ursprungsdomain anzeigen, also den cname statt der Subdomain. Und bei ionos sind10.000 Subdomains inklusive also warum nicht :D
Mitglied: 11078840001
11078840001 Jan 26, 2024 updated at 12:22:23 (UTC)
Goto Top
Kann man das Script auch so erweitern das ich 2 oder 3 subdomains damit updaten kann?
Kopiere halt einfach die Fetch Zeile für deine weiteren URLs ...
Member: min.6max.30
min.6max.30 Jan 26, 2024 at 15:20:53 (UTC)
Goto Top
Zitat von @abamakabra:

Kann man das Script auch so erweitern das ich 2 oder 3 subdomains damit updaten kann?
Kopiere halt einfach die Fetch Zeile für deine weiteren URLs ...

Ok probiere ich mal. Hatte nur etwas Sorge, dass die Gegenseite das vielleicht als Spam sieht wenn mehrere Anfragen von der selben Quelle quasi „gleichzeitig“ kommen
Mitglied: 11078840001
11078840001 Jan 26, 2024 updated at 15:26:13 (UTC)
Goto Top
Zitat von @min.6max.30:
Ok probiere ich mal. Hatte nur etwas Sorge, dass die Gegenseite das vielleicht als Spam sieht wenn mehrere Anfragen von der selben Quelle quasi „gleichzeitig“ kommen
Nee, kein Problem 3 mal hintereinander ist absolut kein Thema.
Bis zu 1200 Anfragen pro API Key und Stunde sind kein Problem