DynDNS mit einem MikroTik Router
DynDNS mit einem MikroTik Router
DynDNS mit einem MikroTik Router
Wenn Ihr Internetanschluss keine feste IP-Adresse hat, können Sie einen DNS-Eintrag bei FireStorm automatisch von Ihrem MikroTik Router aktualisieren lassen. Der Router prüft in kurzen Abständen seine WAN-IP und meldet eine Änderung über unsere DNS-API. Damit bleibt zum Beispiel vpn.ihredomain.ch immer erreichbar, ohne dass Sie einen fremden DynDNS-Anbieter brauchen.
Das Skript ist bewusst sparsam: Zuerst löst es den Eintrag über einen öffentlichen Resolver auf. Stimmt die IP bereits, endet der Durchlauf ohne einen einzigen API-Aufruf. Erst bei einer Abweichung fragt es den aktuellen Wert bei uns ab und setzt den Record neu.
Voraussetzungen
- Die Domain muss auf unsere Nameserver zeigen, die DNS-Zone also bei FireStorm liegen
- API-Zugang im Kundenbereich aktiviert (
admin.firestorm.ch=> Konto => Kundenprofil) - MikroTik mit RouterOS 7
- Der DNS-Eintrag, der aktualisiert werden soll, muss einmalig vorhanden sein. Legen Sie ihn im Kundenbereich mit einer beliebigen IP und TTL 60 an
1. API-Key erstellen
Melden Sie sich im Kundenbereich an und öffnen Sie Konto => Kundenprofil.

Setzen Sie den Haken bei API Zugang und klicken Sie auf API KEYS VERWALTEN.

Erstellen Sie einen neuen Key:
- Bezeichnung: zum Beispiel
dyndns mikrotik - Domains: nur die Domain auswählen, die der Router ändern darf
- Auch volle DNS-Verwaltung erlauben: Haken setzen. Ohne diese Berechtigung darf der Key nur Zertifikats-Challenges setzen, aber keinen A-Record ändern
Notieren Sie sich anschliessend Benutzername und API Key. Der Key wird nur ein einziges Mal angezeigt.
2. Zone-ID herausfinden
Das Skript arbeitet mit der numerischen Zone-ID. Diese liefert Ihnen die API. Der folgende Aufruf funktioniert auf jedem Rechner mit curl, zum Beispiel am Mac, unter Linux oder in der Windows PowerShell:
curl -H "X-Api-Key: IHR-API-KEY" https://api.firestorm.ch/dns/v1/zones
Die Antwort enthält alle Zonen, auf die der Key zugreifen darf, jeweils mit id und name. Die id Ihrer Domain tragen Sie später im Skript ein.
3. Root-Zertifikat im Router importieren
RouterOS bringt von Haus aus keine Zertifizierungsstellen mit. Damit der Router die Verbindung zu unserer API wirklich prüfen kann, importieren Sie einmalig das Root-Zertifikat ISRG Root X1 von Let’s Encrypt. Ohne diesen Schritt müssten Sie die Zertifikatsprüfung abschalten, was wir nicht empfehlen.
Laden Sie die Datei isrgrootx1.pem von letsencrypt.org/certs/isrgrootx1.pem herunter und schieben Sie sie in Winbox per Drag and Drop in den Bereich Files. Danach im Terminal:
/certificate import file-name=isrgrootx1.pem passphrase=""
Alternativ holt der Router die Datei selbst:
/tool fetch url="https://letsencrypt.org/certs/isrgrootx1.pem" check-certificate=no /certificate import file-name=isrgrootx1.pem passphrase=""
Prüfen Sie mit folgendem Aufruf, ob die geprüfte Verbindung steht. Kommt eine Zonenliste zurück, ist alles bereit:
/tool fetch url="https://api.firestorm.ch/dns/v1/zones" http-header-field="X-Api-Key: IHR-API-KEY" check-certificate=yes-without-crl as-value output=user
4. Skript anlegen
Laden Sie das Skript herunter: firestorm_mikrotik_dyndns.rsc
In Winbox oder WebFig unter System => Scripts auf [+] klicken, als Name zum Beispiel firestorm_dyndns_update eintragen und die Berechtigungen read, write, policy und test setzen. Fügen Sie den Inhalt der Datei ein und passen Sie oben die Einstellungen an:
| Einstellung | Bedeutung |
|---|---|
apiUser |
Benutzername aus Schritt 1 |
apiKey |
API Key aus Schritt 1 |
zoneId |
Zone-ID aus Schritt 2 |
recordName |
Vollständiger Name des Eintrags, zum Beispiel vpn.ihredomain.ch |
recordType |
A für IPv4 oder AAAA für IPv6 |
wanInterface |
Name Ihres WAN-Interfaces. Bei PPPoE ist das nicht ether1, sondern zum Beispiel pppoe-out1 |
ttl |
Gültigkeitsdauer in Sekunden, empfohlen 60 |
Klicken Sie danach auf Run Script und schauen Sie unter Log nach. Dort steht, ob der Eintrag bereits aktuell war oder gerade aktualisiert wurde.
5. Zeitplan einrichten
Unter System => Scheduler auf [+] klicken:
- Name: zum Beispiel
FirestormDyndns - Interval:
00:05:00für eine Prüfung alle fünf Minuten - On Event: exakt der Name Ihres Skripts, zum Beispiel
firestorm_dyndns_update - Policies: auch hier
read,write,policyundtestsetzen
Der Router prüft nun selbständig und meldet nur dann eine Änderung an uns, wenn sich die IP-Adresse tatsächlich geändert hat.
Fehlerbehebung
«Keine passende Adresse auf Interface … gefunden»
Der eingetragene Interface-Name stimmt nicht. Unter IP => Addresses sehen Sie, auf welchem Interface Ihre öffentliche Adresse liegt. Bei PPPoE-Anschlüssen ist das die pppoe-out-Verbindung.
«API-Abfrage fehlgeschlagen»
Meist fehlt das Root-Zertifikat aus Schritt 3, oder der Key ist falsch. Testen Sie den Aufruf aus Schritt 3 von Hand.
«Record … ist in Zone … nicht vorhanden»
Das Skript legt keine neuen Einträge an, es aktualisiert nur bestehende. Legen Sie den Eintrag einmalig im Kundenbereich an.
Antwort «Record not found» beim Aktualisieren
Der Eintrag wurde zwischenzeitlich von Hand geändert. Das Skript liest den aktuellen Wert beim nächsten Durchlauf neu ein und korrigiert sich selbst.
Der Router hängt hinter einem Anschluss ohne öffentliche IP
Bekommt Ihr Router vom Provider nur eine private Adresse, etwa aus dem Bereich 100.64.x.x, trägt das Skript genau diese ein und der Name bleibt von aussen unerreichbar. In diesem Fall brauchen Sie bei Ihrem Provider eine öffentliche IP-Adresse.
Weitere Anleitungen zu unserer Schnittstelle finden Sie im Artikel DNS API. Das Skript wurde uns freundlicherweise von einem unserer Kunden zur Verfügung gestellt.

