Ενημέρωση DynDNS ή No-IP από Mikrotik Router (How to Mikrotik Basics) Μέρος 6ο

Ενημέρωση DynDNS ή No-IP από Mikrotik Router

Στο 6ο μέρος της σειράς άρθρων που αφορούν τις βασικές ρυθμίσεις ενός Mikrotik θα δείξουμε πως να ενημερώνετε το DynDNS ή το No-IP.

Για το άρθρο αυτό θεωρούμε πως έχει γίνει πρώτα το βήμα που κάνει το Mikrotik Router με DHCP Server. Αν αυτό δεν έχει γίνει, διαβάστε ένα από τα προηγούμενα άρθρα αυτής της σειράς. Links για τα προηγούμενα άρθρα θα βρείτε στο τέλος αυτού του οδηγού.

Όταν κάνουμε μια σύνδεση internet ο πάροχος μας δίνει μια διεύθυνση IP που είναι μοναδική στον παγκόσμιο ιστό (World Wide Web ή αλλιώς WWW). Συνήθως η διεύθυνση αυτή είναι δυναμική (dynamic) δηλαδή αλλάζει κάθε φορά που κάνουμε σύνδεση, εκτός αν έχουμε ζητήσει από τον πάροχο να μας δώσει μια στατική (static) διεύθυνση η οποία είναι ίδια κάθε φορά που κάνουμε σύνδεση. Στατική διεύθυνση χρειαζόμαστε όταν πρέπει να βλέπουμε την σύνδεσή μας από οποιοδήποτε σημείο του παγκόσμιου ιστού.

Τι γίνεται όμως όταν η διεύθυνσή μας είναι δυναμική και για κάποιο λόγο πρέπει να την χρησιμοποιούμε σαν στατική; Υπάρχουν εταιρίες στο internet που έναντι μικρού τιμήματος ή ακόμα και δωρεάν μας δίνουν ένα “όνομα” που αντιστοιχεί στην διεύθυνση IP που μας έχει δώσει ο πάροχος. Το όνομα αυτό δεν αλλάζει και μπορούμε να το χρησιμοποιήσουμε από παντού στο WWW. Για να είναι όμως σωστή η αντιστοιχία του ονόματος με την διεύθυνση IP πρέπει να έχουμε μια διαδικασία που να ενημερώνει την εταιρία ότι ο πάροχος μας έστειλε μια καινούρια διεύθυνση IP. Στο άρθρο αυτό θα δούμε πως μπορούμε να ρυθμίσουμε το Mikrotik Router ώστε να κάνει αυτόματα την ενημέρωση. Προϋπόθεση είναι να έχουμε κάνει εγγραφή σε μια από αυτές τις εταιρίες και να έχουμε πάρει username, password και hostname (το όνομα με το οποίο θα μας βρίσκουν στο internet).

Ανοίγουμε πάλι το Winbox, βρίσκουμε το Mikrotik router στην λίστα, το επιλέγουμε πατώντας κλικ πάνω στην MAC Address και πατάμε το κουμπί Connect.

Επειδή η διαδικασία χρησιμοποιεί το ρολόι του συστήματος πρέπει πρώτα να το ρυθμίσουμε στην σωστή ημερομηνία και ώρα.

Μόλις ανοίξει το κεντρικό παράθυρο, πηγαίνουμε στο menu αριστερά επιλέγουμε System και μετά Clock. Στο παράθυρο που ανοίγει φτιάχνουμε την ημερομηνία και την ώρα αν δεν είναι σωστά, προσέχουμε το πεδίο Time Zone Autodetect να είναι επιλεγμένο και στο πεδίο Time Zone Name επιλέγουμε την Αθήνα (Athens). Μετά πατάμε το κουμπί “OK”.

Στο menu αριστερά επιλέγουμε System και μετά SNTP Client. Το πεδίο Enabled να είναι επιλεγμένο ώστε να ενεργοποιηθούν τα υπόλοιπα πεδία. Στο πεδίο Primary NTP Server καταχωρούμε την διεύθυνση IP ενός NTP Server (δίνει αυτόματα σωστή ημερομηνία και ώρα στην συσκευή μας). Μπορείτε να χρησιμοποιήσετε την διεύθυνση του  NTP Server που έχουμε στο παράδειγμα. Πατάμε το κουμπί “OK”.

Στο menu αριστερά επιλέγουμε System και μετά Scripts. Στο παράθυρο που ανοίγει πατάμε το κουμπί “+” και στο νέο παράθυρο, στο πεδίο Name δίνουμε ένα όνομα για το script που θα χρησιμοποιήσουμε. Στο πεδίο Source αντιγράφουμε το αντίστοιχο script για την εταιρία την οποία επιθυμούμε να ενημερώνουμε για τις αλλαγές στην διεύθυνση IP. Προσέχουμε να έχουμε βάλει στις θέσεις των αντίστοιχων πεδίων τα στοιχεία που με τα οποία έχουμε κάνει εγγραφή στην εν λόγω εταιρία (username, password και hostname).

Scripts για τις εταιρίες DynDNS και No-IP θα βρείτε στο τέλος αυτού του οδηγού.

Τέλος, πρέπει να ορίσουμε κάθε πότε θα γίνεται η ενημέρωση. Ένας καλός χρόνος είναι κάθε 10 λεπτά.

Στο menu αριστερά επιλέγουμε System και μετά Scheduler. Στο παράθυρο που ανοίγει πατάμε το πλήκτρο “+” και στο νέο παράθυρο, στο πεδίο Name δίνουμε ένα όνομα στην διαδικασία. Στο πεδίο Interval ορίζουμε το κάθε πόσο χρονικό διάστημα θα γίνεται η ενημέρωση (στο παράδειγμα κάθε 10 λεπτά). Στο πεδίο On Event πληκτρολογούμε:

/system script run DynDNS

όπου DynDNS είναι το όνομα που δώσαμε στο script (βλ. προηγούμενη εικόνα)

Για να ελέγξετε αν γίνεται σωστά η ενημέρωση ανοίξτε το Log (στο αριστερό menu). Κάθε 10 λεπτά πρέπει να τρέχει το script και να βλέπετε τα αποτελέσματα της ενημέρωσης στο Log.

Συγχαρητήρια. Το Mikrotik ενημερώνει πλέον κάθε 10 λεπτά για κάθε αλλαγή της IP διεύθυνσής σας από τον πάροχο.

 

 

ΣΗΜΕΙΩΣΕΙΣ

O παραπάνω οδηγός αφορά εκείνους που έχουν τις βασικές γνώσεις συνδέσεων δικτύου.

Τα προηγούμενα άρθρα θα τα βρείτε στα παρακάτω links:

Ρύθμιση ενός Mikrotik ως Router με DHCP Server με Master-Slave LAN (How to Mikrotik Basics) – Μέρος 1ο

Ρύθμιση Mikrotik ως Router με DHCP Server με χρήση Bridge (How to Mikrotik Basics) Μέρος 2ο

Ρύθμιση Mikrotik σαν Access Point Router με DHCP Server (How to Mikrotik Basics) – Μέρος 3ο

 

Βαθμός δυσκολίας 1-10 = 3

Χρόνος προγραμματισμού = 10 λεπτά

Καλή επιτυχία!

 

e-wireless.gr

Το νούμερο 1 κατάστημα τεχνολογίας

 

 

Script (Για ενημέρωση DynDNS)

# Set needed variables
:local username “dyndns username
:local password “dyndns password
:local hostname “host name

:global dyndnsForce
:global previousIP

# print some debug info
:log info (“UpdateDynDNS: username = $username”)
:log info (“UpdateDynDNS: password = $password”)
: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 https://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=”members.dyndns.org” \
src-path=”nic/update?system=dyndns&hostname=$hostname&myip=$currentIP&wildcard=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”)
}

 

 

Script (Για ενημέρωση NoIP)

 # No-IP automatic Dynamic DNS update

#————— Change Values in this section to match your setup ——————

# No-IP User account info
:local noipuser “your_no-ip_user
:local noippass “your_no-ip_pass

# Set the hostname or label of network to be updated.
# Hostnames with spaces are unsupported. Replace the value in the quotations below with your host names.
# To specify multiple hosts, separate them with commas.
:local noiphost “hostname.no-ip.net

# Change to the name of interface that gets the dynamic IP address
:local inetinterface “your_external_interface

#————————————————————————————
# No more changes need

:global previousIP

:if ([/interface get $inetinterface value-name=running]) do={
# Get the current IP on the interface
:local currentIP [/ip address get [find interface=”$inetinterface” disabled=no]address]

# Strip the net mask off the IP address
:for i from=( [:len $currentIP] – 1) to=0 do={
:if ( [:pick $currentIP $i] = “/”) do={
:set currentIP [:pick $currentIP 0 $i]
}
}

:if ($currentIP != $previousIP) do={
:log info “No-IP: Current IP $currentIP is not equal to previous IP, update needed”
:set previousIP $currentIP

# The update URL. Note the “\3F” is hex for question mark (?). Required since ? is a special character in commands.
:local url “https://dynupdate.no-ip.com/nic/update\3Fmyip=$currentIP”
:local noiphostarray
:set noiphostarray [:toarray $noiphost]
:foreach host in=$noiphostarray do={
:log info “No-IP: Sending update for $host”
/tool fetch url=($url . “&hostname=$host”) user=$noipuser password=$noippass mode=http dst-path=(“no-ip_ddns_update-” . $host . “.txt”)
:log info “No-IP: Host $host updated on No-IP with IP $currentIP”
}
} else={
:log info “No-IP: Previous IP $previousIP is equal to current IP, no update needed”
}
} else={
:log info “No-IP: $inetinterface is not currently running, so therefore will not update.”
}

 

 

Leave A Reply