MIKROTIK DDNS – IP PUBBLICO DINAMICO
MIKROTIK
PRIMI PASSI CON ROUTEROS – ATTESTARE UN DDNS GRATUITO
In questa guida, affronteremo la risoluzione del nostro IP pubblico dinamico con un DDNS su dominio di terzo livello totalmente gratuito, configurabile nel vostro Router Mikrotik.
Quante volte capita che il nostro Provider ci fornisce IP pubblico dinamico e non fornisce un DDNS se non a pagamento?
Nessun problema, nei prossimi paragrafi vedremo come risolvere questo problema senza acquistare servizi a pagamento. Analizziamo due possibili soluzioni, sistema proprietario e Duck DNS.
Procediamo con configurare il DDNS con Mikrotik.
Componenti neccessari:
- Un Router Mikrotik qualsiasi
- Una connessione internet funzionante
- Un pc con Winbox
Livello difficoltà: Semplice
Ipotizziamo di avere una rete come nel diagramma seguente:
Analizziamo due possibili metodi per configurare il nostro DDNS:
Obbiettivo 1: Usare il DDNS proprietario Mikrotik.
Il nostro fantastico Router Mikrotik, su tutti i modelli di hardware disponibile, offre una piattaforma proprietaria su cui viene generato un dominio di terzo livello univoco non personalizzabile, ma gratuito. Vediamo come Configurarlo:
- Apri Winbox e collegati al tuo router.
- Clicca sul tab IP, Cloud.
- Ti apparirà una finsetra per configurare il servizio cloud.
- Inserisci il flag sul campo DDNS Enabled.
- Nel campo DDNS Update Interval, inserisci 00:00:01
- Clicca sul tasto Apply.
- Apparirà il campo DNS Name.
- In questo modo il campo DNS Name, indica il nostro DDNS.
Chiamando il DDNS citato dal web, verremo indirizzati al nostro IP pubblico dinamico. Dovresti trovarti una schermata simile a quella in figura 2.
Obbiettivo 2: Usare Duckdns.
Per chi non lo conoscesse, Duck DNS, è un servizio di terze parti che offre la possibilità di ottenere alcuni domini di terzo livello che punteranno il nostro IP pubblico dinamico.
Inanzitutto eseguire la registrazione o il login sul sito: DUCKDNS
Dopo aver eseguito il login, ti troverai una schermata simile a quella in Figura 3.
Eseguiamo i seguenti passaggi per creare un dominio:
- Nel campo sub domain, digita un nome a tuo piacere (es. mariored).
- Clicca su add domain.
- Dovrebbe apparirti una notifica simile “success: domain mariored.duckdns.org added to your account” come in figura 4. Inoltre in basso a destra apparirà il campo current ip, che io ho oscurato per motivi di sicurezza.
Ora il dominio è creato, colleghiamoci al nostro router Mikrotik con Winbox, ed eseguite i seguenti passaggi:
- Clicca sul tab System, Script e poi sul tasto + .
- Nel campo name, digita duck-script
- Inserisci il flag nel campo Don’t Require Permissions
- Nella finestrella Source, nella parte inferiore inserisci il seguente script, avendo cura di sostituire i campi in verde, con quelli presenti nella vostra pagina DuckDNS:
- Infine clicca sul tasto Apply.
IMPORTANTE NON MODIFICARE NESSUN ALTRO CAMPO:
#----------SCRIPT INFORMATION------------------
#
# Script: DuckDNS.org Dynamic DNS Update Script
# Created: 29/12/2022
# Author: Fabio Fois
# Website: foisfabio.it
#
#----------MODIFY THIS SECTION AS NEEDED--------
# DuckDNS Sub Domain
:local duckdnsSubDomain "mariored.duckdns.org"
# DuckDNS Token
:local duckdnsToken "63cd6662-e190-4e47-adcd-51d6e694494a"
# Set true if you want to use IPv6
:local ipv6mode false;
# Online services which respond with your IPv4, two for redundancy
:local ipDetectService1 "https://api.ipify.org/"
:local ipDetectService2 "https://api4.my-ip.io/ip.txt"
# Online services which respond with your IPv6, two for redundancy
:local ipv6DetectService1 "https://api64.ipify.org"
:local ipv6DetectService2 "https://api6.my-ip.io/ip.txt"
#----------------------------------------------------
:local previousIP; :local currentIP
# DuckDNS Full Domain (FQDN)
:local duckdnsFullDomain "$duckdnsSubDomain.duckdns.org"
#:log warning message="START: DuckDNS.org DDNS Update"
if ($ipv6mode = true) do={
:set ipDetectService1 $ipv6DetectService1;
:set ipDetectService2 $ipv6DetectService2;
:log error "DuckDNS: ipv6 mode enabled"
}
# Resolve current DuckDNS subdomain ip address
:do {:set previousIP [:resolve $duckdnsFullDomain]} on-error={ :log warning "DuckDNS: Could not resolve dns name $duckdnsFullDomain" };
# Detect our public IP adress useing special services
:do {:set currentIP ([/tool fetch url=$ipDetectService1 output=user as-value]->"data")} on-error={
:log error "DuckDNS: Service does not work: $ipDetectService1"
#Second try in case the first one is failed
:do {:set currentIP ([/tool fetch url=$ipDetectService2 output=user as-value]->"data")} on-error={
:log error "DuckDNS: Service does not work: $ipDetectService2"
};
};
:log info "DuckDNS: DNS IP ($previousIP), current internet IP ($currentIP)"
:if ($currentIP != $previousIP) do={
:log info "DuckDNS: Current IP $currentIP is not equal to previous IP, update needed"
:log info "DuckDNS: Sending update for $duckdnsFullDomain"
:local duckRequestUrl "https://www.duckdns.org/update\?domains=$duckdnsSubDomain&token=$duckdnsToken&ip=$currentIP&verbose=true"
:log info "DuckDNS: using GET request: $duckRequestUrl"
:local duckResponse
:do {:set duckResponse ([/tool fetch url=$duckRequestUrl output=user as-value]->"data")} on-error={
:log error "DuckDNS: could not send GET request to the DuckDNS server. Going to try again in a while."
:delay 5m;
:do {:set duckResponse ([/tool fetch url=$duckRequestUrl output=user as-value]->"data")} on-error={
:log error "DuckDNS: could not send GET request to the DuckDNS server for the second time."
:error "DuckDNS: bye!"
}
}
# Checking server's answer
:if ([:pick $duckResponse 0 2] = "OK") do={
:log info "DuckDNS: New IP address ($currentIP) for domain $duckdnsFullDomain has been successfully set!"
} else={
:log warning "DuckDNS: There is an error occurred during IP address update, server did not answer with \"OK\" response!"
}
:log info "DuckDNS: server answer is: $duckResponse"
} else={
:log info "DuckDNS: Previous IP ($previousIP) is equal to current IP ($currentIP), no need to update"
}
#:log warning message="END: DuckDNS.org DDNS Update finished"
Dopo aver cliccato sul tasto Apply, lo script sarà funzionante. Apparirà come in figura 5.
Ora vediamo come pianificare lo script in modo che venga eseguito continuamente.
- Clicca sul tab System, Scheduler e poi sul tasto +.
- Nel campo name, inserisci duck-schedule .
- Nel campo Interval, inserisci 00:01:00
- Nella finestrella On Event, digita duck-script
- Infine Clicca su Apply
In questa maniera, il router Mikrotik, si connettera al vostro account duck dns è sincronizzerà il vostro IP dinamico con il vostro dominio.
Ora nei log del router Mikrotik, appariranno le voci di duckDNS ad ogni aggiornamento del l’indirizzo IP dinamico collegato al relativo ddns.
E’ disponibile anche una nuova versione di questo script che integra la possibilità di notificare quale connessione si sta utilizzando nell’eventualità si avessero due IP pubblici statici di due ISP differenti. La trovate qui: “DuckDNS Nuova Versione“
Scopri hAP ax lite, il nuovo router Mikrotik con potente processore ARM.
Copyright © 2023 foisfabio.it | Powered by Fabio Fois
Ti è piaciuta questa guida? Segui tutte le guide su RouterOS alla pagina: Guide Mikrotik.
Puoi inviare il tuo contributo Paypal oppure commenta e condividi questo contenuto.
Hai riscontrato errori in questa guida?? segnalacelo tramite la scheda CONTATTI
Quanto è stato utile questo post?
Clicca su una stella per valutarla!
Voto medio 0 / 5. Conteggio dei voti: 0
Nessun voto finora! Sii il primo a valutare questo post.
per chi usa https://freemyip.com/ basta scrievre i campi giusti e sostuire al punto giusto qusta sringa:
:local duckRequestUrl “https://freemyip.com/update\?token=$duckdnsToken&domain=$duckdnsSubDomain&ip=$currentIP&verbose=true”
ovviamnete per un test rapido ho lascito i nomi duckdns per far funzionare lo script
grazie per l’aiuto, lo script funziona. Ho un solo problema: ho dovuto creare una regola firewall dstnat, inserendo come Dst. Address il mio DDNS di duckdns, ovvero xxx.duckdns.org. Il problema è che applicando la regola, la scritta sparisce a favore di un ip numerico, e tutto funziona. Solo che immagino che l’IP numerico non cambi nella regola in caso di aggiornamento ip di duckdns, rendendo inutile il tutto. Come posso risolvere? Grazie
Se cerchi la guida Hairpin nat è spiegato nell’obbiettivo due come risolvere questo problema.
In sintesi devi usare gli address list con il campo dst address list.
Clicca su Guide Mikrotik alla fine di questo annuncio e troverai tra le varie, una guida dedicata all’hairpin nat
E’ disponibile anche una nuova versione di questo script che integra la possibilità di notificare quale connessione si sta utilizzando nell’eventualità si avessero due IP pubblici statici di due ISP differenti. La trovate qui: https://github.com/abbio90/Mikrotik-DuckDNS