Mikrotik : Praktikum Failover Otomatis dengan Netwatch dan Recursive Route

Failover yang hanya mengandalkan `check-gateway=ping` ke modem punya satu titik buta: modem bisa tetap hidup walau internet di baliknya sudah mati. Akibatnya router tidak pernah pindah jalur.

Di praktikum ini kita tutup titik buta itu. Caranya dua lapis: **recursive route** supaya router memantau IP publik di internet, dan **Netwatch** sebagai pengawas tambahan yang mencatat kejadian serta bisa menjalankan aksi sendiri.

Ini lanjutan langsung dari `Mikrotik : Tabel Routing dan Manajemen Rute di RouterOS v7` dan praktikum route selection yang sudah kita kerjakan. Kalau istilah `scope`, `target-scope`, dan FIB masih terasa asing, baca dulu dua artikel itu.

🎯 Tujuan

Setelah mengikuti praktikum ini, kamu diharapkan bisa:

  • Menyiapkan lab dua uplink dan membaca status rute default dengan benar.
  • Membuktikan kelemahan `check-gateway=ping` yang hanya mengawasi gateway lokal.
  • Membangun recursive route supaya router mengawasi host di internet, bukan cuma modem.
  • Menambahkan host kedua per link agar deteksi lebih andal dan tidak salah pindah jalur.
  • Memasang Netwatch untuk memantau jalur dan menulis notifikasi ke log.
  • Mengukur sendiri berapa detik waktu failover dan failback di lab.

πŸ“ Konteks nyata

Bayangkan jalan menuju sekolah. Ada jalan utama (ISP1) dan jalan alternatif (ISP2). Pos satpam di ujung jalan utama hanya memeriksa apakah gerbangnya masih terpasang, bukan apakah jalan di baliknya masih bisa dilewati.

Begitulah `check-gateway=ping`: ia hanya memeriksa apakah modem tetangga masih menjawab. Kalau kabel fiber ISP putus di tengah, modem tetap menjawab, jadi router menganggap semuanya normal dan tetap mengirim semua trafik ke jalur yang sudah mati.

Recursive route mengubah pos pemeriksaan. Router tidak lagi memeriksa modem, tetapi menanyakan langsung ke host di internet: "kamu masih bisa dijangkau?" Kalau tidak, jalur itu dianggap mati dan router pindah ke jalur cadangan.

πŸ”₯ Kasus nyata: Di sebuah SMK, lab ujian CBT memakai dua ISP. Rute cadangan sudah dipasang dengan `check-gateway=ping` ke modem, jadi tim IT merasa aman. Suatu hari kabel fiber ISP1 putus di sisi penyedia, modem lokal tetap menyala dan tetap menjawab ping, sehingga router tidak pernah pindah. Ujian berbasis komputer tersendat hampir 40 menit sampai admin mematikannya manual. Setelah rute cadangan dibuat recursive dan dipasangi Netwatch, kejadian serupa bisa terdeteksi dan pindah jalur dalam hitungan belasan detik, plus admin langsung dapat peringatan di log.

🧠 Konsep singkat

  • **Gateway check hanya satu lompatan.** Router hanya tahu apakah next-hop langsungnya hidup, bukan apakah internet di baliknya hidup.
  • **Rute recursive** adalah rute yang gateway-nya bukan perangkat terhubung langsung. Router harus "mencari" alamat itu lewat rute lain sebelum bisa memakainya.
  • **Nexthop lookup** adalah proses pencarian gateway yang benar-benar bisa dijangkau. Hasilnya disebut `immediate-gw`.
  • **`scope` dan `target-scope`** yang mengatur rute mana yang boleh dipakai untuk pencarian itu. Salah nilai, rute recursive tidak akan pernah aktif.
  • **Netwatch** adalah alat terpisah yang menembak host secara berkala dan menjalankan script saat status berubah. Ia tidak menggantikan rute, tetapi menambah pengamatan dan notifikasi.

πŸ“Š Angka penting: default Netwatch adalah `interval=10s`, `timeout=3s`, `start-delay=3s`, `startup-delay=5m`. Gateway check RouterOS memakai jeda sekitar 10 detik dengan toleransi 2 kali gagal, jadi failover realistis di kisaran 10 sampai 30 detik.

πŸ’‘ Tips: di RouterOS v7 semua rute bisa dilihat lengkap di `/routing route print`, sedangkan `/ip route print` hanya menampilkan tabel `main`. Untuk membaca efek recursive route, gunakan `/routing route print where active`.

🧩 Istilah penting

Istilah Arti sederhana
Recursive route Rute yang gateway-nya tidak terhubung langsung; harus dicari dulu lewat rute lain.
`scope` Seberapa "jauh" sebuah gateway dari router. Nilai kecil berarti makin langsung terhubung.
`target-scope` Batas maksimal scope gateway yang boleh dipakai untuk mencari next-hop rute ini.
`immediate-gw` Alamat gateway yang benar-benar dipakai untuk mengirim paket setelah pencarian selesai.
Gateway check Pemeriksaan berkala apakah gateway masih menjawab. Bisa lewat ARP, ICMP, atau BFD.
Netwatch Alat pemantau host dengan probe ICMP/TCP/HTTP/DNS dan script saat status berubah.
Failback Kembalinya trafik ke jalur utama setelah jalur utama sehat lagi.

πŸ”§ Praktik: Failover Otomatis dengan Netwatch dan Recursive Route

Lab ini memakai satu router dengan dua uplink tiruan dan satu LAN. Semua angka bisa kamu sesuaikan dengan lab sekolah.

| Perangkat | Interface | Alamat | Keterangan |- | Router | ether1 | 10.111.0.2/30 | uplink ISP1, gateway 10.111.0.1 |- | Router | ether2 | 10.112.0.2/30 | uplink ISP2, gateway 10.112.0.1 |- | Router | bridge-LAN | 192.168.88.1/24 | LAN lab (ether3 sampai ether5) |- | Probe | 8.8.8.8 | - | host pemantau jalur ISP1 |- | Probe | 8.8.4.4 | - | host pemantau jalur ISP2

⚠️ Hati-hati: simpan konfigurasi awal dengan `/export file=sebelum-lab` dan `/system backup save name=sebelum-lab`. Praktikum ini mengubah rute default, dan salah ketik bisa membuat akses Winbox hilang.

πŸ”Ή Langkah 1: siapkan alamat dan NAT

  1. Pasang alamat gateway LAN dan kedua uplink.
  2. Aktifkan NAT masquerade keluar kedua jalur supaya client LAN bisa memakai jalur apa pun.
  3. Pastikan LAN tetap bisa ping gateway lokal sebelum lanjut.
/ip address
add address=10.111.0.2/30 interface=ether1 comment="ISP1"
add address=10.112.0.2/30 interface=ether2 comment="ISP2"
add address=192.168.88.1/24 interface=bridge-LAN comment="LAN lab"

/ip firewall nat
add chain=srcnat action=masquerade out-interface=ether1 comment="NAT ISP1"
add chain=srcnat action=masquerade out-interface=ether2 comment="NAT ISP2"

πŸ”Ή Langkah 2: baseline dua jalur default

  1. Tulis rute default biasa: ISP1 prioritas, ISP2 cadangan.
  2. Jalankan ping ke internet dan pastikan trafik keluar lewat ISP1.
/ip route
add dst-address=0.0.0.0/0 gateway=10.111.0.1 distance=1 comment="DEFAULT-ISP1"
add dst-address=0.0.0.0/0 gateway=10.112.0.1 distance=2 comment="DEFAULT-ISP2"

/ip route print detail where dst-address=0.0.0.0/0
/tool traceroute 8.8.8.8 count=2

πŸ§ͺ Uji cepat: perhatikan kolom `gateway-status`. Pada rute lama akan tertulis gateway lokal `reachable`, artinya router hanya tahu modemnya hidup.

πŸ”Ή Langkah 3: buktikan titik buta check-gateway

  1. Tambahkan `check-gateway=ping` ke rute ISP1, lalu simulasikan internet mati di balik modem.
  2. Di lab, cara termudah adalah memblokir trafik ke luar pada sisi ISP1 sambil membiarkan kabel tetap tersambung.
  3. Amati: rute ISP1 tetap aktif dan ping ke internet tetap gagal, karena modem masih menjawab.
/ip route set [find where comment="DEFAULT-ISP1"] check-gateway=ping
/ip route print detail where comment="DEFAULT-ISP1"
/tool ping 8.8.8.8 count=5

πŸ’‘ Tips: kalau memakai modem ISP sungguhan, cabut kabel uplink ke modem akan terlihat "berhasil" menurunkan rute. Yang perlu dibuktikan justru kondisi sebaliknya: kabel tetap tersambung, modem hidup, tetapi internet di baliknya mati.

πŸ”Ή Langkah 4: bangun recursive route

  1. Ubah rute default supaya gateway-nya host di internet, bukan modem.
  2. Tambahkan dulu rute host untuk masing-masing probe dengan `scope=10`.
  3. Baru pasang rute default recursive dengan `target-scope=11` dan `check-gateway=ping`.
/ip route
add dst-address=8.8.8.8/32 gateway=10.111.0.1 scope=10 comment="PROBE-ISP1"
add dst-address=8.8.4.4/32 gateway=10.112.0.1 scope=10 comment="PROBE-ISP2"

/ip route
remove [find where comment="DEFAULT-ISP1"]
remove [find where comment="DEFAULT-ISP2"]

/ip route
add dst-address=0.0.0.0/0 gateway=8.8.8.8 target-scope=11 check-gateway=ping distance=1 comment="DEFAULT-REC-ISP1"
add dst-address=0.0.0.0/0 gateway=8.8.4.4 target-scope=11 check-gateway=ping distance=2 comment="DEFAULT-REC-ISP2"

πŸ“Š Angka penting: rute host memakai `scope=10` dan rute default recursive memakai `target-scope=11`. Nilai ini bukan hiasan: rute host harus punya scope lebih kecil dari target-scope rute default, kalau tidak pencarian next-hop gagal dan rute default tidak aktif.

πŸ”Ή Langkah 5: verifikasi hasil pencarian next-hop

  1. Pastikan rute default recursive sudah aktif dan gateway-nya sudah "diterjemahkan" menjadi alamat yang benar-benar dijangkau.
  2. Baca juga tabel nexthop untuk melihat `immediate-gw`.
/ip route print detail where dst-address=0.0.0.0/0
/routing route print where active
/routing nexthop print detail

Pada kolom `gateway-status` seharusnya terlihat probe `8.8.8.8 reachable`, bukan lagi `10.111.0.1 reachable`. Inilah bukti bahwa router sekarang mengawasi internet, bukan modem.

  1. Satu host pemantau bisa saja sedang diblokir ICMP atau sedang tumbang, padahal jalurnya sehat.
  2. Tambahkan host kedua per link supaya rute default jadi ECMP dan tetap aktif selama salah satu host hidup.
/ip route
add dst-address=208.67.222.222/32 gateway=10.111.0.1 scope=10 comment="PROBE-ISP1-B"
add dst-address=208.67.220.220/32 gateway=10.112.0.1 scope=10 comment="PROBE-ISP2-B"

/ip route
set [find where comment="DEFAULT-REC-ISP1"] gateway=8.8.8.8,208.67.222.222
set [find where comment="DEFAULT-REC-ISP2"] gateway=8.8.4.4,208.67.220.220

πŸ’‘ Tips: pilih host yang memang selalu hidup dan biasanya membalas ICMP, misalnya DNS publik. Hindari memakai satu host saja sebagai satu-satunya penentu jalur.

πŸ”Ή Langkah 7: pasang Netwatch untuk pengawasan dan notifikasi

  1. Netwatch tidak menggantikan rute recursive, ia menambah pengamatan dan aksi.
  2. Buat dua entri: satu per jalur, dengan `down-script` dan `up-script` yang menulis ke log.
  3. Pakai `ignore-initial-up` dan `ignore-initial-down` supaya tidak ada peringatan palsu saat router baru menyala.
/tool netwatch
add host=8.8.8.8 type=icmp interval=10s timeout=1s comment="Probe ISP1" \
    ignore-initial-up=yes ignore-initial-down=yes \
    down-script="/log warning \"NETWATCH ISP1 DOWN - jalur utama putus\"" \
    up-script="/log info \"NETWATCH ISP1 UP - jalur utama pulih\""

add host=8.8.4.4 type=icmp interval=10s timeout=1s comment="Probe ISP2" \
    ignore-initial-up=yes ignore-initial-down=yes \
    down-script="/log warning \"NETWATCH ISP2 DOWN - jalur cadangan putus\"" \
    up-script="/log info \"NETWATCH ISP2 UP - jalur cadangan pulih\""

⚠️ Hati-hati: Netwatch berjalan sebagai user `*sys` dan hanya diizinkan memakai policy `read, write, test, reboot`. Kalau script-nya memakai policy lebih tinggi, script tidak akan dieksekusi sama sekali. Untuk kebutuhan lanjutan, buat script terpisah dengan policy yang tepat, jangan matikan pemeriksaan policy global.

πŸ”Ή Langkah 8: uji failover dan ukur waktunya

  1. Nyalakan ping terus-menerus ke internet dari client atau dari router lewat jalur utama.
  2. Matikan internet pada sisi ISP1 (jangan cabut kabelnya, cukup putuskan akses keluar).
  3. Catat waktu: berapa detik sampai ping kembali berhasil dan traceroute pindah jalur.
  4. Lalu nyalakan lagi dan ukur waktu failback.
/tool ping 8.8.8.8 count=100 interval=1s
/tool traceroute 8.8.8.8 count=2
/log print where message~"NETWATCH"
/tool netwatch print

πŸ”Ή Langkah 9: bersih-bersih lab

  1. Hapus semua objek uji supaya router kembali ke konfigurasi awal.
  2. Kalau ingin tetap memakai konfigurasi ini di lab, sisakan hanya ISP1 dan simpan export-nya.
/tool netwatch remove [find where comment~"Probe ISP"]
/ip route remove [find where comment~"PROBE-"]
/ip route remove [find where comment~"DEFAULT-REC-"]

πŸ”Ή Versi Winbox

  1. Buka **IP - Routes** dan buat rute host probe dulu, isi `dst-address`, `gateway`, dan `scope`.
  2. Buat rute default baru, isi `gateway` dengan alamat probe dan `target-scope` 11, centang **Check Gateway: ping**.
  3. Atur `Distance` 1 untuk ISP1 dan 2 untuk ISP2, klik **Apply**.
  4. Buka **Tools - Netwatch**, tambahkan host probe, pilih **Type: icmp**, atur **Interval** dan **Timeout**.
  5. Isi tab **Down** dan **Up** dengan script log, lalu cek status di tab **Status**.

🏭 Dipakai di dunia kerja

  • **Sekolah:** lab ujian berbasis komputer butuh internet stabil selama jam ujian. Failover recursive menjaga ujian tidak mati hanya karena satu ISP bermasalah.
  • **Kantor:** rapat online dan telepon internet putus-putus kalau jalur utama tumbang tanpa failover. Rute recursive plus Netwatch membuat perpindahan jalur terjadi sendiri dan tercatat.
  • **ISP lokal dan warnet:** pelanggan mengeluh lambat atau tidak bisa konek saat uplink bermasalah. Pemantauan per jalur membantu operator memutuskan jalur mana yang dipakai dan kapan harus diperbaiki.
  • **Toko dan ritel:** mesin EDC, absensi online, dan kamera CCTV butuh koneksi terus-menerus. Jalur cadangan otomatis mencegah transaksi gagal saat jalur utama putus.
  • **Industri dan gudang:** perangkat barcode dan sistem stok berbasis cloud terhenti kalau koneksi mati. Failover menjaga proses tetap jalan tanpa operator harus turun tangan.

βœ… Verifikasi

Jalankan pemeriksaan ini berurutan setelah konfigurasi selesai.

  • `/ip route print detail where dst-address=0.0.0.0/0` - pastikan rute ISP1 `distance=1` aktif dan yang utama terpakai.
  • Perhatikan `gateway-status`: harus menunjuk probe `8.8.8.8 reachable`, bukan gateway modem.
  • `/routing route print where active` - buktikan rute benar-benar masuk FIB.
  • `/routing nexthop print detail` - pastikan `immediate-gw` sudah terisi.
  • `/tool netwatch print` - status harus `up`, kolom `since` menunjukkan kapan perubahan terakhir.
  • `/log print where message~"NETWATCH"` - peringatan turun dan naik jalur benar-benar tercatat.
  • `/tool ping 8.8.8.8` dan `/tool traceroute 8.8.8.8` - pastikan jalur benar-benar berpindah saat ISP1 diputus.

πŸ§ͺ Uji cepat: `/ip route check 8.8.8.8` akan menunjukkan gateway mana yang dipakai router untuk mencapai host itu. Kalau hasilnya masih gateway modem, recursive route belum bekerja.

⚠️ Kesalahan umum & troubleshooting

Gejala Penyebab yang paling sering Solusi
ISP mati tapi tidak pindah jalur Gateway check masih memantau modem lokal Ubah ke recursive route dengan gateway berupa host internet
Rute default recursive tidak aktif (flag I) `target-scope` lebih kecil atau sama dengan `scope` rute host Set `scope=10` di rute host, `target-scope=11` di rute default
`immediate-gw` kosong di tabel nexthop Rute host probe tidak aktif atau salah gateway Cek rute probe, pastikan gateway-nya alamat yang terhubung langsung
Netwatch bilang down padahal internet normal Host probe memblokir ICMP Ganti ke `type=tcp-conn` port 443 atau pakai host lain
Netwatch tetap down setelah pindah jalur Probe keluar lewat jalur yang salah Set `src-address` ke alamat WAN yang sesuai
Status netwatch bolak-balik (flapping) Interval terlalu cepat dan threshold terlalu ketat Naikkan `interval`, longgarkan `timeout` dan threshold
Koneksi lama terputus setelah failback Sesi NAT masih menempel ke jalur lama Tunggu timeout connection tracking, pertimbangkan FastTrack
Ping internet gagal padahal rute aktif NAT, firewall, atau rute balik belum siap Cek NAT masquerade kedua jalur dan aturan firewall filter

πŸ”₯ Kasus nyata: seorang teknisi pernah memasang rute recursive tetapi lupa menaikkan `scope` rute host, sehingga rute default tetap tidak aktif dan failover tidak pernah berjalan. Tampilannya "ada rute", tetapi router tetap memakai jalur lama. Bukti satu-satunya adalah `/routing nexthop print` yang menunjukkan `immediate-gw` kosong.

πŸ” Catatan keamanan & etika

  • Pemantauan jalur mengumpulkan data alamat dan waktu. Jangan sebarkan log ke pihak yang tidak berkepentingan.
  • Pilih host probe yang jelas dan terpercaya. Menembak host sembarangan secara berkala bisa dianggap pemindaian.
  • Script Netwatch hanya boleh melakukan aksi yang memang diperlukan, misalnya menulis log. Berikan policy secukupnya.
  • Jangan menonaktifkan pemeriksaan policy script secara global kecuali benar-benar terpaksa.
  • Failover bukan pengganti firewall. Rute hanya menentukan jalur, bukan siapa yang boleh lewat.
  • Simpan backup dan export setelah konfigurasi stabil, lalu proteksi akses manajemen router.

πŸ“Œ Kesimpulan

Empat hal yang wajib diingat dari praktikum ini:

  • `check-gateway=ping` hanya mengawasi gateway lokal, bukan internet di baliknya.
  • Recursive route membuat router mengawasi host internet, sehingga jalur mati benar-benar terdeteksi.
  • `scope` dan `target-scope` harus benar, kalau tidak rute default akan diam saja.
  • Netwatch menambah pengamatan dan notifikasi, dan aksinya terbatas pada policy `read, write, test, reboot`.
  • Selalu verifikasi dengan `/routing nexthop print` dan pengukuran waktu failover, bukan hanya melihat konfigurasi.

Langkah berikutnya: setelah jalur cadangan bisa berpindah sendiri di dalam satu kantor atau lab, tantangan berikutnya adalah menyambungkan dua lokasi secara aman. Materi lanjutan yang paling nyambung adalah VPN WireGuard site-to-site.

πŸ”— Materi terkait

πŸ“š Referensi