Δυναμικό DNS στο Mikrotik

Από WNA
Μετάβαση σε: πλοήγηση, αναζήτηση

Τι είναι το Dynamic DNS

Κάθε φορά που το DSL modem συνδέεται με τον ISP μας, παίρνει και μια ip. Σε περίπτωση που τρέχουμε κάποια services τα οποία θέλουμε να είναι προσβάσιμα απο internet (web page, ftp server κλπ.), θα πρέπει με κάποιο τρόπο να στέλνουμε την ip μας στους κεντρικούς DNS servers.
Τα περισσότερα DSL modems έχουν πλέον τη δυνατότητα να κάνουν αυτή τη δουλειά αυτόματα. Στη σελίδα ρύθμισής τους υπάρχει σχετικό section.
Μερικές γνωστά site που προσφέρουν δωρεάν υπηρεσίες Dynamic DNS είναι:
dyndns.com
changeip.com

Dynamic DNS (dyndns.com)

Το μόνο που χρειάζεται είναι να έχει internet το mikrotik

Script: dyndns-update

''Τοποθετούμε το script στο/System Scripts και 'συμπληρώνουμε το username, password και to dyndns domain που έχουμε δημιουργήσει.

# Set needed variables
:local username "DYNDNSUSER"
:local password "DYNDNSPASS"
:local hostname "DYNDNSHOST"

:global dyndnsForce
:global previousIP

# print some debug info
:log info ("dyndns-update: username = $username")
:log info ("dyndns-update: password = $password")
:log info ("dyndns-update: hostname = $hostname")
:log info ("dyndns-update: 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"
: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 "dyndns-update: currentIP = $currentIP"

# Determine if dyndns update is needed
# more dyndns updater request details available at http://www.dyndns.com/developers/specs/syntax.html
:if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={
:set dyndnsForce false
:set previousIP $currentIP
/tool fetch user=$username password=$password mode=http address="members.dyndns.org" src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/dyndns.txt"
:local result [/file get dyndns.txt contents]
:log info ("dyndns-update: Dyndns update needed")
:log info ("dyndns-update: Dyndns Update Result: ".$result)
:put ("Dyndns Update Result: ".$result)
} else={
:log info ("dyndns-update: No dyndns update needed")
}

Script:dyndns-force

Σε περίπτωση που δεν θέλουμε να λήγει το account του dyndns μπορούμε να βάλουμε άλλο ενα script το οποίο θα ανανεώνει το dyndns κάθε 24 ώρες. Εάν το τρέχετε αυτό πιο συχνά υπάρχει περίπτωση να σας μπλοκάρουν το dyndns λογαριασμό.

:global dyndnsForce true
/system script run dyndns-update

Scheduler:

Ρυθμίστε το Scheduler στο Mikrotik σας να τρέχει τα συγκεκριμένα scripts κάθε 15 λεπτά και κάθε 24 ώρες το 2ο.

/system scheduler add comment="" disabled=no interval=15m name=dyndns-update on-event=\
dyndns-update start-date=jan/01/1970 start-time=00:00:00
/system scheduler add comment="" disabled=no interval=1d name=dyndns-force on-event=\
dyndns-force start-date=jan/01/1970 start-time=02:00:00


Dynamic DNS (changeip.com)

Το μόνο που χρειάζεται είναι να έχει internet το mikrotik

Script: changeip

Τοποθετούμε το script στο /System Scripts και συμπληρώνουμε το username, password και to dyndns domain που έχουμε δημιουργήσει.

# Define User Variables
:global ddnsuser "DYNDNSUSER"
:global ddnspass "DYNDNSPASS"
:global ddnshost "DYNDNSHOST"

# Define Global Variables
:global ddnsip
:global ddnslastip
:if ([:typeof $ddnslastip ] = nil ) do={:global ddnslastip "0" }

:global ddnsinterface
:global ddnssystem ("mt-" . [/system package get system version] )

# Define Local Variables
:local int

# Loop thru interfaces and look for ones containing
# default gateways without routing-marks
:global ddnsinterface "ethernet"

# Grab the current IP address on that interface.
:global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface ] address ]

# Did we get an IP address to compare?
:if ([:typeof $ddnsip ] = nil ) do={
:log info ("DDNS: No ip address present on " . $ddnsinterface . ", please check.")
} else={

:if ($ddnsip!= $ddnslastip) do={

:log info "DDNS: Sending UPDATE!"
:log info [:put [/tool dns-update name=$ddnshost address=[:pick $ddnsip 0 [:find $ddnsip "/"] ] key-name=$ddnsuser key=$ddnspass ] ]
:global ddnslastip $ddnsip

} else={
:log info "DDNS: No update required."
}

}

# End of script

Επίσης αλλάξτε το όνομα της κάρτα δυκτίου που έχετε βάλει στο mikrotik για να μπορέσει το script να βρεί την ip σας.

:global ddnsinterface "ethernet"

Scheduler: Ρυθμίστε το Scheduler στο Mikrotik σας να τρέχει το script κάθε 15 λεπτά

/system scheduler add name=changeip interval=15m on-event="/system script run changeip\r\n"




Δοκιμασμένη OS version: 3.22