MikroTIK Trik Mendeteksi PPPoE Telkom IP Lokal / Shared IP Publik

Belakangan ini Telkom IndiHome sering sekali memberikan alamat IPv4 lokal kepada penggunanya. Cara ini mungkin di lakukan oleh Telkom karena keterbatasan alokasi IPv4 milik mereka yang sekarang (mungkin) sudah mulai running out atau habis karena semakin meningkatnya jumlah pelanggan produk internet fiber.

Dengan memberikan IPv4 lokal, maka Telkom secara teknis bisa meletakkan beberapa puluh (atau bahkan ratusan) pelanggan di belakang NAT dan menggunakan shared IPv4 untuk terhubung internet.

Karena IPv4 yang di gunakan pelanggan bersifat shared, maka pelanggan yang menggunakan aplikasi self-hosted pribadi (misalnya akses DVR CCTV, seedbox torrent, webserver, dan sebagainya) akan sulit di akses, karena posisinya ada berada di dalam NAT dan Telkom tidak menyediakan fasilitas port forward untuk pelanggan yang mendapatkan shared IPv4 tersebut.

mikrotik-trik-mendeteksi-pppoe-telkom-ip-lokal-shared-ip-publik

MikroTIK Trik Mendeteksi PPPoE Telkom IP Lokal / Shared IP Publik

Jika sobat menggunakan MikroTik yang melakukan koneksi PPPoE ke Telkom IndiHome, sobat dapat menggunakan PPP profile dengan script on-up berikut ini untuk mendeteksi apakah Telkom memberikan shared IPv4 atau tidak.

Jika Telkom memberikan IPv4 lokal / shared IPv4 address, maka script akan memutuskan koneksi dan melakukan rekoneksi PPPoE ulang sampai interface PPPoE yang terhubung ke Telkom mendapatkan IPv4 address yang tidak shared.

/ppp profile
add change-tcp-mss=yes name=pppoe-with-check on-up="# Variables\r\
    \n:local currentLocalSiteInterface \"PPPoE-TELKOM\"\r\
    \n:local privateRanges {192.168.0.0/16; 172.16.0.0/12; 10.0.0.0/8} \r\
    \n:local loopCount 20\r\
    \n\r\
    \n# Script\r\
    \n:local hadMatch\r\
    \n:local currentLoop 0\r\
    \n\r\
    \n:if ([/interface pppoe-client get [/interface pppoe-client find name=\$currentLocalSiteInterface] running]) do={\r\
    \n   do {\r\
    \n      :set hadMatch false\r\
    \n      :local currentLocalSite [/ip address get [/ip address find interface=\$currentLocalSiteInterface] address]\r\
    \n      :local currentLocalSiteAddress ([:pick \$currentLocalSite 0 [:find \$currentLocalSite \"/\"]] & \\\r\
    \n         (255.255.255.255 << (32 - [:pick \$currentLocalSite ([:find \$currentLocalSite \"/\"] + 1) [:len \$currentLocalSite]]))) \r\
    \n         \r\
    \n      :foreach privateRange in=\$privateRanges do={ \r\
    \n         :if (([:pick \$privateRange 0 [:find \$privateRange \"/\"]] & \\\r\
    \n            (255.255.255.255 << (32 - [:pick \$privateRange ([:find \$privateRange \"/\"] + 1) [:len \$privateRange]]))) = \\\r\
    \n            (\$currentLocalSiteAddress & (255.255.255.255 << (32 - [:pick \$privateRange ([:find \$privateRange \"/\"] + 1) [:len \$privateRange]])))) do={ \r\
    \n                /interface disable \$currentLocalSiteInterface\r\
    \n                :delay 2\r\
    \n                /interface enable \$currentLocalSiteInterface\r\
    \n                :set hadMatch true\r\
    \n            :log error \"WAN IP address matched private IP address - \$privateRange\"\r\
    \n         } \r\
    \n      }\r\
    \n      :set currentLoop (\$currentLoop + 1)\r\
    \n  \r\
    \n      :if (\$hadMatch) do={\r\
    \n        :delay 2\r\
    \n      }\r\
    \n   } while ((\$currentLoop < \$loopCount) && (\$hadMatch))  \r\
    \n}"

Catatan:

Silakan ganti variabel currentLocalSiteInterface pada script sesuai dengan interface PPPoE yang terhubung ke Telkom (pada contoh script menggunakan nama “PPPoE-TELKOM”. Selanjutnya, gunakan profile tersebut untuk PPPoE client yang menghubungkan MikroTIK dengan Telkom. Beres!

mikrotik-trik-mendeteksi-pppoe-telkom-ip-lokal-shared-ip-publik-01

Jika script mendeteksi shared IP, maka di logging akan muncul notifikasi seperti ini:

mikrotik-trik-mendeteksi-pppoe-telkom-ip-lokal-shared-ip-publik-01

Script ini saya comot dari forum MikroTIk dan saya modifikasi sedikit, tapi saya lupa link forumnya, hehehe. Big thanks untuk penulis asli script ini :)

6 Comments

  1. Setinggil

    Bagaimana caranya bila yg melakukan koneksi PPPoE adalah ONT-nya (HG8245H) dan mikrotik di belakang ont?

    • fazar

      Berarti mikrotik berada di dalam NAT ONT. Dengan demikian, cara ini nggak bisa di pake mas, karena cara ini mendeteksi IP address di PPPoE. Semoga bermanfaat.

  2. benjamin

    interface pppoe-client <— ini ubah apa mas?

    • fazar

      nggak perlu di rubah mas.. yg di rubah cuman variabel currentLocalSiteInterface

  3. ardian

    salam mas fazar,

    mau bertanya,
    kalau nama profile ppoe nya default berarti jadinya :
    \n:local currentLocalSiteInterface \”default\”\r\

    gitu ya ?

    kemudian cara test nya bagaimana, biar tau kalau script nya berjalan ? apakah ada schedule juga ?
    maap baru belajar, terimakasih

    • fazar

      betul mas, tapi saran saya, profile default jangan di rubah. buat saja profile baru dengan script di atas. untuk mengetahui apakah sudah berjalan baik atau tidak, silakan tes dengan cara disable dan enable koneksi PPPoE, dan perhatikan pada log.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *