Thursday, April 11, 2019

Setting Mikrotik, DNS-O-Matic dan Cloudflare Untuk IndiHome

Bagi pengguna IndiHome, pasti sudah mengetahui bahwa IP Address yang diperoleh adalah IP publik dinamik yang berubah setiap saat. Hal ini akan menjadi kendala bagi sebagian pengguna yang memiliki kebutuhan untuk memeliki service sendiri dirumah misal web server pribadi atau sekedar untuk meremote mikrotik atau perangkat lain dirumah seperti NVR CCTV atau perangkat lainnya. Dengan memanfaatkan kombinasi layanan dari DNS-O-Matic dan Cloudflare serta sebuah script update yang akan secara rutin berjalan di mikrotik, kita tidak perlu lagi dipusingkan dengan berubahnya IP address sewaktu-waktu karena jaringan kita bisa diakses menggunakan alamat domain maupun subdomain yang tidak berubah. Mungkin, sebagian pembaca sudah familiar dengan fitur IP Cloud yang di sediakan oleh MikroTik, namun bagaimana jika kita menginginkan alamat menggunakan nama domain sendiri yang kita beli?
Goal : Layanan/perangkat di rumah seperti webfig, web server atau NVR CCTV yang menggunakan ip publik dinamik Indihome dapat diakses menggunakan domain TLD milik sendiri seperti .com, .net, .org, .id, .my.id, .web.id dan ekstensi domain TLD lainnya.
Secara teknis pembahasannya :

Update A Record domain di Cloudflare dengan IP publik dinamik IndiHome menggunakan script MikroTik dan layanan DNS-O-Matic

Kebutuhan :
  • sebuah domain TLD yang memeliki akses domain panel
  • akun DNS-0-Matic
  • akun Cloudflare
  • Modem/ONT Indihome dengan setting pppoe bridge
  • Router mikrotik, dengan ether1 terhubung dengan port internet Modem/ONT Indihome

To Do :
  1. Bagi yang belum memiliki akun Cloudflare, silahkan daftar dahulu disini. Login dan tambahkan domain yang anda miliki kedalam service Cloudflare. Pastikan Nameserver untuk domain anda sudah diganti dari domain panel mengarah ke nameserver yang diberikan oleh Cloudflare saat menambahkan domain tadi. Dari menu DNS di cloudflare, tambahkan sebuah A record dengan nama yang nantinya akan bisa diakses, misal dinamik.yourdomain.tld maka isikan parameter sebagai berikut :
    name : dinamik
    type : A
    value : 123.123.123.123
    
    Jika anda ingin jaringan, service atau perangkat dirumah bisa diakses menggunakan TLD misal saat mengakses yourdomain.tld, maka buat sebuah record lagi dengan parameter :
    name : yourdomain.tld
    type : CNAME
    Value : dinamik.yourdomain.tld
    
  2. Buka menu My Profile di pojok kanan halaman Cloudflare, dan cari bagian API key, kemudian klik tombol View API Key untuk Global API Key dan salin/copy.
  3. Buka/buat akun DNS-O-Matic, dan tambahkan service, pilih service Cloudflare. Isikan parameter sebagai berikut :
    Email : <login cloudflare>
    API Token : <Global API key>
    Hostname : dinamik
    Domain : yourdomain.tld
    
  4. Buka winbox, dan buat sebuah interface PPP-Client isikan :
    name: pppoe-out1
    interface : ether1
    user : 12345678910@telkom.net
    password : 
    add default route : yes
    Default route distance : 0
    
  5. Buat sebuah script :
    name : dnsomatic
    policy : all kecuali dude dan romon
    script :
    # DNS-O-Matic automatic DNS updates
    
    #--------------- Rubah parameter dibawah ini------------------
    
    # User account info DNS-O-Matic
    
    :local maticuser "email dnsomatic"
    :local maticpass "password dnsomatic"
    
    # Set the hostname or label of network to be updated. This is the part after the double colon (::) on the DNS-O-Matic services page.
    # Hostnames with spaces are unsupported. Replace the value in the quotations below with your host names.
    # To specify multiple hosts, separate them with commas. 
    # Use "all.dnsomatic.com" for the matichost to update all items in dnsomatic with this IP.
    
    :local matichost "dinamik"
    
    # Change to the name of interface that gets the changing IP address
    
    :local inetinterface "pppoe-out1"
    
    #------------------------------------------------------------------------------------
    
    # 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 "DNS-O-Matic: 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 "http://updates.dnsomatic.com/nic/update\3Fmyip=$currentIP&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG"
            :local matichostarray;
            :set matichostarray [:toarray $matichost];
            :foreach host in=$matichostarray do={
                :log info "DNS-O-Matic: Sending update for $host"
                /tool fetch url=($url . "&hostname=$host") user=$maticuser password=$maticpass mode=http dst-path=("dnsomaticupdate-" . $host . ".txt")
                :log info "DNS-O-Matic: Host $host updated on DNS-O-Matic with IP $currentIP"
            }
        }  else={
    #        :log info "DNS-O-Matic: Previous IP $previousIP and current IP equal, no update need"
        }
    } else={
        :log info "DNS-O-Matic: $inetinterface is not currently running, so therefore will not update."
    }
    
  6. Buka scheduler, buat sebuah schedule yang akan menjalankan script dnsomatic diatas setiap menit.
    name : dns-o-matic
    start date : Okt/29/2017
    Start time : 12:00:00
    Interval : 00:01:00
    On Event : dnsomatic
    
  7. Ada kalanya script dnsomatic diatas tidak bekerja karena gagal update sebelumnya, dan tidak akan merubah ip dinamik sampai ip tersebut (pppoe-out1) berubah. Maka perlu menjalankan sebuah script lain untuk memaksa perubahan IP.
    :global previousIP;
    :set previousIP ""
    
    :log info "Cleared previousIP to force DNS-O-Matic update on next run."
    
  8. Silahkan coba untuk melakukan dial pppoe, dan saat terkoneksi tunggu beberapa saat sampai script dnsomatic berjalan, dan perhatikan log mikrotik. Jika script dan setting pada DNS-O-Matic berjalan dengan benar, maka akan muncul Log seperti berikut :
    DNS-O-Matic: Update needed
    DNS-O-Matic: Sending update for dinamik
    fetch: file "dnsomaticupdate-dinamik.txt" downloaded
    DNS-O-Matic: Host dinamik updated on DNS-O-Matic with IP xx.xy.yy.yz
    
    Buka kembali akun Cloudflare, dan cek A record untuk host dinamik, apakah sudah menggunakan IP yang baru xx.xy.yy.yz sama seperti ip address yang diperoleh interface pppoe-out1 dari server Indihome
  9. Untuk memastikan bahwa setting anda sudah sesuai dengan harapan, anda bisa melakukan cek nslookup atau dig dari command line/prompt atau bisa juga menggunakan layanan online seperti network-tools.com dengan memasukkan host dinamik.yourdomain.tld, jika hasil resolve sesuai dengan ip address IndiHome yang ada pada interface pppoe-out1 mikrotik maka dipastikan, jaringan anda sudah bisa diakses dari publik menggunakan hostname atau domain yang kita inginkan. Selanjutnya anda tinggal menambahkan NAT maupun port forwading pada mikrotik untuk me-metakan berbagai service yang anda miliki dirumah
Ada cara yang lebih praktis gak?
Ada doong.. bagi yang gak pingin ribet pake script update, DNS-O-Matic dan cloudflare tapi tetep pengen remote atau akses jaringan yang pakai ip publik dinamik menggunakan domain sendiri, cukup memanfaatkan fitur IP Cloud yang ada di routerboard MikroTik dan domain panel yang agan pakai (hanya berlaku di MikroTik routerboard ya, x86 belum bisa). Caranya :
  1. Buka winbox dan aktifkan fitur IP Cloud, setelah dapat mendapatkan alamat DNS Name, copy alamatnya (formatnya serialnumber.sn.mynetname.net)
  2. Buka domain panel atau domain management (bawaan registrar ataupun menggunakan layanan seperti Cloudflare), dan buat sebuah CNAME record dengan parameter :
    Type : CNAME
    name : dinamik
    domain : serialnumber.sn.mynetname.net
    TTL : 600s
    
    Dengan setting diatas maka jaringan kita dapat diakses dengan alamat dinamik.yourdomain.tld, namun jika menginginkan akses yourdomain.tld langsung, maka anda harus menghapus A record untuk yourdomain.tld, dan parameter name pada CNAME diatas di isikan “yourdomain.tld”
catatan :
Cloudflare : Adalah sebuah layanan DNS Manager dan Content Delivery Network atau CDN. Dengan DNS Manager anda dapat menambah dan menghapus DNS record sesuai kebutuhan, sedangkan CDN memungkinkan konten yang anda miliki tersebar diseluruh jaringan server yang dimiliki oleh Cloudflare dan saat ada permintaan akses, maka akan diambilkan dari server terdekat sehingga waktu akses menjadi lebih cepat
DNS-O-Matic : DNS-O-Matic memberi Anda cara mudah dan gratis untuk mengumumkan perubahan IP dinamis Anda ke beberapa layanan dengan cukup satu kali update.
DNS Record : merupakan sebuah catatan yang berisi pemetaan dan peng-alamatan sebuah domain, dimana terdiri dari beberapa macam diantaranya A, AAAA, MX, CNAME, TXT, dll.
A Record : catatan DNS berisi alamat IP yang menunjukkan letak server dari sebuah nama domain atau subdomain, dimana saat nama domain atau subdomain diakses, maka DNS server akan mengarahkan ke ip address yang terekam dalam A record tersebut.

Sumber: https://ndra16.my.id/2017/10/setting-mikrotik-dns-o-matic-dan-cloudflare-untuk-indihome/#more-727

0 Comments:

Post a Comment

<< Home