Cara Setting Update Dynamic DNS di MikroTik

Cara Setting Update Dynamic DNS di MikroTik, DDNS (Dynamic DNS) ADALAH sebuah sistem dalam jaringan yang memungkinkan untuk menerjemahkan nama domain ke IP Public yang dinamis (berubah-ubah). Administrator tidak perlu mengupdate DNS-server setiap kali ada permintaan pembaruan IP. IP Public yang diberikan akan berganti ketika modem ADSL putus atau pada waktu modem mati lalu dihidupkan lagi, contoh jika kita menggunakan layanan telkom speedy. Dalam mikrotik kita bisa memanfaatkan fitur script dan scheduler untuk update otomatis IP Dynamic DNS kita.

Cara Setting Update Dynamic DNS di MikroTik

Kapan anda memerlukan layanan Dynamic DNS ?

Ada beberapa skenario yang menentukan kapan Anda menggunakan layanan Dynamic DNS, yang tidak ingin dipusingkan dengan IP Public yang berubah-ubah. Kapan Anda membutuhkan layanan Dynamic DNS :

  • Saat Anda menggunakan layanan ISP yang memberikan IP public dinamis (berubah-ubah).
  • Anda mempunyai server atau aplikasi di jaringan internal Anda. Dengan IP Public & DDNS kita bisa melakukan beberapa hal, seperti :
  • Ingin remote mikrotik dengan winbox dari luar, misalnya remote dari rumah, kantor, kampus atau warnet contohnya.
  • Monitoring kantor, rumah, kampus atau warnet melalui kamera CCTV dari mana saja. Seperti contoh setting forwarding DVR/CCTV di Mikrotik di artikel saya sebelumnya.
  • Aplikasi server internal yang bisa diakses dari luar/internet, misalnya web server, VPN server, FTP, email server dll.


Apa yang harus dipersiapkan untuk setting Dynamic DNS di MikroTik ?

Untuk implemetasikan dynamic dns di mikrotik, ada beberapa step yang harus Anda lakukan dan mengetahui skenario jaringannya.

Registrasi ke situs layanan dynamic DNS di artikel ini situs yang memberikan layanan Dynamic DNS gratis dan support dengan mikrotik. Contoh di script ini saya menggunakan 2 situs layanan Dynamic DNS gratis :

ChangeIP.com
Gratis 7 sub domains, dalam arti anda bisa mempunyai 7 nama sub domain dengan IP Public yang berbeda.

NoIP.com
Gratis 3 sub domains, dalam arti anda bisa mempunyai 3 nama sub domain dengan IP Public yang berbeda.

Contoh skenario jaringan dengan modem ADSL telkom speedy
Modem ADSL ————–> MikroTik –> IP Server Internal
Bridge/IP Forwarding–> NAT ——->IP lokal tujuan

Dalam skenario diatas, kita akan menentukan settingan modem ADSL/speedy kita. Apakah mode bridge (Dial PPPoE Speedy di MikroTik), atau pakai mode forwarding (Setting Forwarding di Modem ADSL). Jika dalam mode forwarding, artinya mikrotik Anda dibelakang NAT modem ADSLnya, atau bahasa saya kena routing oleh modemnya. Anda harus terlebih dahulu setting forwarding (virtual server, port mapping, etc) pada modem ADSL Anda. Jika dalam mode bridge, IP public speedy anda akan langsung berada di interfaces wan mikrotik Anda.

Setting Script Update Dynamic DNS di MikroTik Untuk Dyndns, No-IP atau ChangeIP


Seperti yang sebelumnya saya sebutkan, kita bisa memanfaatkan fitur script dan scheduler untuk update otomatis IP Dynamic DNS kita. Dalam script ini mempunyai fungsi :

  • Update otomatis IP Dynamic DNS kita untuk layanan Dyndns, No-IP atau ChangeIP.
  • Opsi tangkap IP public dibelakang NAT atau tidak.
  • Log tanggal update, dan perubahan IP sebelumnya dengan IP barunya.
  • Otomatis menghapus record DNS internal kita (flush DNS mikrotik) agar hostname DDNS terupdate dengan IP barunya.


Masukan script ini di winbox System > Scripts, kolom “Name: update_ip_ddns” dan pada kolom “Source:” isi dengan script dibawah ini :

#************************************************************************************************
# Script Update Dynamic DNS di MikroTik Untuk Dyndns, No-IP dan ChangeIP
# Thanks to : forum.mikrotik.com, threadnya lupa ^_^ 
# Adam Rachmad / Tested & Work @ ROS v.6.13 18-6-2014
# http://adamonline.web.id
#************************************************************************************************
# ganti dengan infomasi account anda, username/password/hostname DDNS Anda
#************************************************************************************************
 
:local username "username_anda"
:local password "password_anda"
:local hostname "hostname.anda"
 
# 2 pilihan untuk menangkap IP public anda "http" atau "iface"
# - http: akan menangkap/mencari IP public yang anda gunakan (skenario jika anda dibelakang NAT modem ADSL)
# - iface: akan menggunakan ip public yang di set di interface WAN mikrotik Anda
 
:local discoverBy "http"
 
# nama interface WAN yang akan digunakan menangkap IP public Anda (jika pilihan discoverBy = iface)
 
:local iface "nama_interface_wan_anda"
 
# pilih salah satu layanan Dynamic DNS yang anda gunakan: "dyndns", "noip", and "changeip"
 
:local service "changeip"
 
# Schedule(hari) untuk maksa update jika IP tidak berubah-ubah (agar account DDNS anda tetap aktif)
:local forceUpdate 15
 
#************************************************************************************************
# dibawah ini jangan di ganti2 jika anda tidak tahu apa yang anda lakukan
#************************************************************************************************
 
:local force
:global lastUpdate
:local currentIP
 
:if ($discoverBy="http") do={ 
   /tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"
   :local result [/file get dyndns.checkip.html contents]
   :local resultLen [:len $result]
   :local startLoc [:find $result ": " -1]
   :set startLoc ($startLoc + 2)
   :local endLoc [:find $result "" -1]
   :set currentIP [:pick $result $startLoc $endLoc]
} else={
   :set currentIP [ /ip address get [find interface=$iface disabled=no] address ]
   :for i from=( [:len $currentIP] - 1) to=0 do={
      :if ( [:pick $currentIP $i] = "/") do={ :set currentIP [:pick $currentIP 0 $i] } 
   }
}
 
:local resolvedIP [:resolve $hostname]
:local date [ /system clock get date ]
:local months ("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
:local month [ :pick $date 0 3 ]; :local day [ :pick $date 4 6 ]; :local year [ :pick $date 7 11 ];
:local mm ([ :find $months $month -1 ] + 1);
:if ($mm < 10) do={ :set month ("0" . $mm); } else={ :set month $mm; }
:set date ($year . $month . $day);
 
:if ([ :typeof $lastUpdate ]=[:nothing] || (($date-$lastUpdate) >= $forceUpdate  && $forceUpdate > 0)) do={ 
   :set force true 
}
 
:put ("Current IP: $currentIP ($discoverBy), Last update: $lastUpdate")
 
# Determine if dyndns update is needed
:if (($currentIP != $resolvedIP) || ($force = true)) do={
    
    :if ($service = "dyndns") do={
       /tool fetch user=$username password=$password mode=http address="members.dyndns.org" \
            src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }
    :if ($service = "noip") do={
       /tool fetch user=$username password=$password mode=http address="dynupdate.no-ip.com" \
            src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }
    :if ($service = "changeip") do={
       /tool fetch user=$username password=$password mode=http address="nic.changeip.com" \
            src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }
    :local result [/file get output.txt contents]
    :log info ("dynamic-dns-updater: Service = $service, Hostname = $hostname")
    :log info ("dynamic-dns-updater: CurrentIP = $currentIP, Resolved IP = $resolvedIP")
    :log info ("dynamic-dns-updater: Update result: ".$result)
    /ip dns cache flush
    :set lastUpdate $date
}

Kemudian kita buat Schedule agar update DDNS setiap 5 Menit

/system scheduler
add disabled=no interval=5m name="Update DDNS setiap 5 menit" on-event=update_ip_ddns policy=\
ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api start-date=mar/30/2014 start-time=14:24:00

Sekarang tinggal verifikasi apakah sudah berjalan baik atau tidak, dengan melihat IP address yang terupdate di situs DDNS anda. Atau coba akses dengan hostname yang sudah anda tentukan.


EmoticonEmoticon