Mengatasi IP Private Indihome

 


Apabila Anda memiliki sebuah Web Server, atau aplikasi-aplikasi pada jaringan LAN dan Anda ingin supaya Website atau applikasi tersebut dapat diakses melalui internet maka tentu saja Anda harus memiliki sebuah IP Publik dan melakukan Forwarding/DST NAT dari router ke web server atau applikasi server tersebut sehingga Website dan aplikasi tersebut bias diakses dari internet. Untuk mendapatkan IP Publik ini Anda harus berlangganan internet dari sebuah ISP, seperti Telkom dan yang lainnya.

Untuk IP publik yang statik maka Anda bias dengan mudah mengakses website atau aplikasi tersebut dari internet, dengan cara memanggil langsung IP Publik statik yang Anda miliki. Adapun jika IP Publik yang anda dapatkan bersipat dinamis yang selalu berubah-ubah maka anda bias menggunakan layanan DDNS untuk mengatasi perubahan IP Publik yang dinamis ini. Namun adakalanya untuk IP Publik yang dinamis ini Anda malah akan mendapatkan IP Private akibatnya website dan applikasi yang Anda miliki tidak akan bisa diakses walaupun anda menggunakan DDNS !! Untuk penjelasan IP Publik dan IP Private bisa anda baca pada tulisan sana di link ini. Oleh karena itu pada tulisan kali ini akan dibahas cara menangani IP Private yang didapatkan oleh router Anda dari ISP tersebut.

Salah satu IPS yang banyak dimanfaatkan layanan internet nya saat ini adalah Telkom, penulis juga menggunakan layanan internet dari Telkom untuk mendapatkan IP Publik ini. Tapi seperti ulasan sebelumnya, sering sekali router pada tempat penulis mendapatkan IP Private yang mana seharusnya mendapatkan IP Publik. Sebenarnya cukup mudah untuk mengatasi hal ini, tinggal restart saja modem/router yang anda miliki (dengan asumsi anda juga menggunakan layanan Telkom) sampai Anda kembali mendapatkan IP Publik. Tapi apakah Anda sanggup untuk me-restart modem tersbut puluhan kali dalam satu hari jika dalam hari itu Anda mendapatkan IP Private berkali – kali ?? dari pengalaman saya sendiri hal ini cukup melelahkan…

Oleh karena itu, kalau kita sudah mengetahui solusinya bagaimana yaitu dengan merestart modem router nya, maka selanjutnya kita tinggal cari cara bagaimana setiap router mendapatkan IP Private router tersebut akan merestart dirinya sendiri atau men-disable dan enable kembali interface tempat tertanamnya IP Private (yang seharusnya IP Publik) tersebut. Jika Anda hanya menggunakan modem standar bawaan Telkom, tentu saja auto restart/disable interface ini tidak bisa dilakukan. Untuk itu Anda perlu menggunakan router lain seperti router mikrotik. Anda bisa baca pada tulisan tentang cara untuk memasang dan setting router mikrotik pada Indihome nya Telkom pada link ini.

Langkah Konfigurasi

Untuk mengatasi IP Private dari Indihome ini, gunakan script dibawah ini dan tanamkan script nya pada router mikrotik Anda.

#Email Params

:local from [/tool e-mail get user];

:local toList {"email-anda@gmail.com"};

:local sendEmail 0; # 1=Enable 0=Disable

 

#Telegram Params

:local botAPI "760495160:AAFEOmP6WZ_qs3vhZjng0ADkYd6Z1Qrfe14"; #API RouterMikrotikBot

:local chatID {"ID-Telegram-Anda";};

:local sendTelegram 0; # 1=Enable 0=Disable

 

#Interface Params

:local PPPoEInterfaceList {"Nama-Interface-PPPoE";};

 

#Declare Variable

:local LastIP "";

:local LastCharacter 0;

:local currentIP  "";

:local checkIP "";

:local Message "";

:local DNSName "";

:local DNSStatus "";

:local DNSAddress "";

:local xdate [/system clock get date];

:local xtime [/system clock get time];

 

:foreach PPPoEInterface in=$PPPoEInterfaceList do={

            #Find LastIP

            foreach i in=([/log find where message~"LastIP_$PPPoEInterface"]) do={

                        :set $LastIP [/log get $i message];

            }

            :set $LastCharacter ([:find $LastIP ":" -1]);

            :set $LastCharacter ($LastCharacter + 1);

            :set $LastIP [:pick $LastIP $LastCharacter 50];

 

            #Find CurrentIP

            :set currentIP [/ip address get [find interface="$PPPoEInterface"] address];

            :set currentIP [:pick $currentIP 0 [:find $currentIP "/" -1]];

            :set checkIP [:pick $currentIP 0 [:find $currentIP "." -1]];

 

            #Jika mendapatkan IP Private

            :if ($checkIP = "10") do={

                        /log info "LastIP_$PPPoEInterface:$currentIP";

                        :delay 10s;

                        /log error "$PPPoEInterface connection restored with assigned ip address $currentIP. Restarting Connection ...";

                        #sendMessage to Email

                        :if ($sendEmail = "1") do={

                                    :foreach to in=$toList do={

                                                /tool e-mail send to="$to" from="$[/system identity get name] <$from>" subject="$[/system identity get name] $PPPoEInterface Status" \

                                                            body="$PPPoEInterface connection restored with assigned ip address $currentIP. Restarting Connection ..."

                                    }

                        }

 

                        #sendMessage to Telegram

                        :if ($sendTelegram = "1") do={

                                    :set Message "<b>.: $[/system identity get name] :.</b> %0A$PPPoEInterface connection restored with assigned ip address $currentIP. %0A<b>Restarting Connection ...</b> %0A%0A$xdate | $xtime WIB"

                                    :foreach SendingChatID in=$chatID do={

                                                /tool fetch "https://149.154.167.220/bot$botAPI/sendMessage?chat_id=$SendingChatID&parse_mode=HTML&text=$Message" keep-result=no

                                    }

                        }

           

                        :delay 10s;

                        /interface pppoe-client disable $PPPoEInterface;

                        :delay 10s;

                        /interface pppoe-client enable $PPPoEInterface;

            } else={

                        #Jika LastIP = currentIP hanya menambahkan log

                        if ("$LastIP" = "$currentIP") do={

                                    /log info "LastIP_$PPPoEInterface:$currentIP";

                                    /ip cloud force-update;

                        } else={

                                    #Jika mendapatkan sudah mendapatkan IP Public

                                    /log info "LastIP_$PPPoEInterface:$currentIP";

                                    :delay 10s;

                                    /ip cloud force-update;

                                    :delay 30s;

                                    :set DNSName [/ip cloud get dns-name];

                                    :set DNSStatus [/ip cloud get status];

                                    :set DNSAddress [/ip cloud get public-address];

                                    /log warning "$PPPoEInterface connection restored with assigned ip address $currentIP. (DDNS Status: $DNSStatus | $DNSName)";

           

                                    #sendMessage to Email

                                    :if ($sendEmail = "1") do={

                                                :foreach to in=$toList do={

                                                            /tool e-mail send to="$to" from="$[/system identity get name] <$from>" subject="$[/system identity get name] $PPPoEInterface Status" \

                                                                        body="$PPPoEInterface connection restored with assigned ip address $currentIP. (DDNS Status: $DNSStatus | $DNSName)";

                                                }

                                    }

                                   

                                    #sendMessage to Telegram

                                    :if ($sendTelegram = "1") do={

                                                :set Message "<b>.: $[/system identity get name] :.</b> %0A$PPPoEInterface connection restored with assigned ip address $currentIP. %0A%0A<b>.: IP Cloud Information :.</b>%0AStatus: $DNSStatus %0APublic Address: $DNSAddress %0ADNS Name: $DNSName %0A%0A$xdate | $xtime WIB"

                                                :foreach SendingChatID in=$chatID do={

                                                            /tool fetch "https://149.154.167.220/bot$botAPI/sendMessage?chat_id=$SendingChatID&parse_mode=HTML&text=$Message" keep-result=no

                                                }

                                    }

                        }

            }

            #Clear Variable Before Next Interface

            :set LastIP "";

            :set LastCharacter 0;

            :set currentIP  "";

            :set checkIP "";

            :set Message "";

            :set DNSName "";

            :set DNSStatus "";

            :set DNSAddress "";

}

Pada script diatas, ada 3 parameter yang perlu diperhatikan yaitu :

·         Parameter Email

Parameter ini akan digunakan untuk memasukkan informasi dari email yang anda gunakan. Setiap kali ada perubahan IP Publik pada router Anda, maka router akan menginformasikan kepada Anda melalui email tersebut.

Konfigurasi parameter email
Konfigurasi parameter email

Namun untuk menggunakan fitur email ini, pastikan email Anda sudah tertanam pada router mikrotik nya ya.

·         Parameter Telegram

Selain notifikasi melalui email, perubahan IP Publik pada router Anda juga bisa dikirimkan notifkasinya melalui telegram.

Konfigurasi parameter telegram
Konfigurasi parameter telegram

·         Parameter Interface

Ini merupakan parameter yang terpenting, karena script tersebut akan mendeteksi berapa IP Publik yang didapatkan oleh router pada interface ini. Oleh karena itu, penamaan interface ini harus sesuai dengan nama interface pada router mikrotik Anda.


Konfigurasi parameter interface
Konfigurasi parameter interface

Adapun 2 parameter sebelumnya itu bisa di disable.

Setelah Anda selesai copy script diatas, maka langkah seluanjutnya adalah :

·         Membuat Script

Buat script baru melalui winbox, yaitu melalui menu system → Script, seperti tampak pada gambar dibawah ini.

Pembuatan script
Pembuatan script

Simpan script tersebut, kemudian script tersebut kita panggil dari interface yang mendapatkan IP Publik yaitu pada tab menu Scripts masukkan perintah seperti tampak pada gambar dibawah ini.

Memasukkan script pada interface PPPoE Client
Memasukkan script pada interface PPPoE Client

Demikian cara mengatasi IP Private ini menggunakan router mikrotik, apabila terdeteksi IP Private yang didaptakan dari Telkom maka interface yang mendapatkan IP Private tersebut akan di disable secara otomatis dan akan di enable kan kembali. Hal ini terus menerus akan dilakukan sampai router Anda mendapatkan IP Publik.

Post a Comment for "Mengatasi IP Private Indihome"