Mikrotik con DDNS Cloudflare

Mikrotik con DDNS Cloudflare
5
(2)

Vediamo come utilizzare Cloudflare per crearci un DDNS che verrà aggiornato ad ogni cambio IP del router Mikrotik

Requisiti

  • Account free Cloudflare
  • Dominio gestito (già configurato) da Cloudflare
  • Router Mikrotik
  • Connettività con IP Pubblico dinamico

Creazione Record DNS Cloudflare

Accediamo alla Dashboard di Cloudflare, clicchiamo su Siti Web e poi selezioniamo il nostro dominio, es: aclab.bid

cloudflare domain

Spostiamoci ora nella sezione DNS e clicchiamo su Aggiungi Record

aggiungi record Mikrotik con DDNS Cloudflare

Compiliamo le seguenti voci in questo modo:

  • Tipo: A
  • Nome: casa (questo sarà il sottodominio che utilizzeremo per il DDNS, che sarà appunto casa.aclab.bid)
  • Indirizzo IPV4: 1.2.3.4 (utilizziamo un indirizzo fittizio, verrà poi aggiornato dallo script)
  • Stato proxy: Disattiviamolo, deve essere impostato su Solo DNS

Clicchiamo su Salva

record a Cloudflare DDNS

Creazione Token API Cloudflare

Dobbiamo ora creare un Token che ci permetterà di utilizzare le API di Cloudflare per aggiornare il nostro DDNS tramite il Mikrotik.

Andiamo sulla sezione Panoramica ed in fondo alla pagina sulla parte destra troveremo la voce Ottieni il token API

Anche se possiamo recuperarlo nei passaggi successivi, prendiamoci nota dell’ID Zona; ci servirà successivamente

zone id cloudflare

Clicchiamo su Crea Token ed usiamo il modello Modifica DNS Zona

template API DNS Zone cloudflare

Impostiamo il modello come segue e poi clicchiamo su Vai al riepilogo e poi su Crea Token

new token Mikrotik con DDNS Cloudflare

Salviamoci il token generato perchè non sarà più recuperabile, ci servirà per lo script DDNS che configureremo sul nostro Mikrotik

token api Mikrotik DDNS Cloudflare

Recuperare Record ID

Per utilizzare il nostro Mikrotik con DDNS Cloudflare ci occorre reperire un ultimo dato.

Si tratta del Record ID associato al record A (casa) che abbiamo creato precedentemente.

Possiamo utilizzare curl (se usate ambiente Linux) con il comando seguente(sostituite le voci evidenziate con i vostri dati):

curl https://api.cloudflare.com/client/v4/zones/ZONE_ID/dns_records         -H "Authorization: Bearer API_TOKEN"

Oppure potete usare il tool Online REQBIN ed inserire la stringa sopra e poi cliccare su RUN

image 7

Una volta ottenuto il risultato dell’interrogazione, dobbiamo cercare il valore “id” relativo al record DNS casa.aclab.bid

Da queste informazioni possiamo anche recuperare la Zone ID

Annotiamoci il Record ID

record id Mikrotik con DDNS Cloudflare

Configurare il Mikrotik con DDNS Cloudflare

Accediamo ora al nostro Mikrotik, andiamo in System -> Script e creiamo un nuovo script dove dentro incolleremo il seguente codice, personalizzando le variabili sotto con i propri dati:

  • ZoneID: ID della vostra Zona
  • RecordID: ID del vostro record DNS
  • Token: Token API
  • Email: Email utilizzata per accedere al vostro account Cloudflare
  • DNSHost: Il vostro dominio/sottodominio definito in precedenza per il DDNS (es. casa.aclab.bid)
# Script: DDNS Cloudflare
#
# Description: Update Cloudflare A record when IP of main WAN change 
# Version: 1
# RouterOS v.7.15.3
# Created: 15/09/2024
# Author: Andrea Caracciolo
# Website: https://andreacaracciolo.it
# Mail: info@andreacaracciolo.it
#------------------------------------------------------------------------------

# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Change with your account details <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# Your Zone ID
:local ZoneID "XXXXXXXXXXXXXXXXXXX0c89"

# Your Record ID
:local RecordID "XXXXXXXXXXXXXXXXXXb60a"

# Your API Token
:local Token "XXXXXXXXXXXXXXXXXXXXXXXYSTl"

# Your account email
:local Email "vostraemail@gmail.com"

#  Your domain/subdomain to dynamically update
:local DNShost "casa.aclab.bid"

# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> END <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

# Do not edit below 
:local dateTime ([ /system clock get date ] . " " . [ / system clock get time ]);
:local currentIP ([/tool fetch url="https://ifconfig.me/ip" mode=https output=user as-value]->"data")
:local cloudflareDNSIP [:resolve $DNShost server=1.1.1.1];

:if ($currentIP != $cloudflareDNSIP) do={
  # If the IP has changed, update the Cloudflare record
  :local cfurl "https://api.cloudflare.com/client/v4/zones/$ZoneID/dns_records/$RecordID"
  :local cfDataDNS "{\"type\":\"A\",\"name\":\"$DNShost\",\"content\":\"$currentIP\",\"ttl\":120,\"proxied\":false,\"comment\":\"last update: $dateTime\"}"
  :local cfHeader "X-Auth-Email: $Email,Authorization: Bearer $Token,Content-Type: application/json"
  :log info ("Updating Cloudflare record. Old IP: " . $cloudflareDNSIP . " New IP: " . $currentIP);
  /tool fetch url=$cfurl http-data=$cfDataDNS http-header-field=$cfHeader http-method=put keep-result=no
}

Salvate lo Script cliccando su Apply e testiamone il funzionamento cliccando su Run Script

Se la procedura è andata a buon fine, troverete nei Log del Mikrotik la voce Updating Cloudflare record. Old IP: 1.2.3.4 New IP: XXX.XXX.XXX.135

Potete verificare nella Dashboard di Cloudflare che il record DNS creato in precedenza sarà valorizzato con il vostro IP Pubblico

Non vi resta che creare uno Scheduler sul Mikrotik che richiama lo script ogni 120 secondi


Se l’articolo Mikrotik con DDNS Cloudflare è stato di tuo gradimento esprimi il tuo voto

Per non perderti i nuovi post entra nel canale Telegram

Se riscontri errori nell’articolo segnalalo tramite il modulo Contatti

Ti è stato utile questo post?

Clicca sulla stella per votare!

Voto medio 5 / 5. Numero voti: 2

Nessun voto finora! Sii il primo a valutare questo post.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *