Mikrotik : Praktikum Uji Route Selection dan Failover di Tabel Routing v7

Teori tabel routing baru berguna kalau sudah dibuktikan di lab. Di artikel pagi kita membedah RIB, FIB, `distance`, `scope`, dan `check-gateway`. Sekarang semuanya kita uji satu per satu.

Lab ini memakai satu router dengan dua jalur uplink tiruan. Kita sengaja membuat rute yang salah, melihat gejala aslinya, lalu memperbaikinya. Tujuannya satu: kamu bisa membuktikan sebuah rute benar-benar dipakai, bukan cuma "kelihatan ada" di konfigurasi.

Kalau belum membaca artikel pagi, sebaiknya mulai dari sana dulu karena di sini kita banyak memakai istilah dari artikel itu.

🎯 Tujuan

Setelah mengikuti praktikum ini, kamu diharapkan bisa:

  • Menyiapkan lab dua jalur uplink dan membaca hasil `/ip route print` dengan benar.
  • Membuktikan rute benar-benar masuk FIB lewat `/routing route print where active`.
  • Menguji pemilihan jalur memakai `distance` (route selection).
  • Melihat failover otomatis bekerja dengan `check-gateway=ping` dan mengukur waktunya.
  • Membuat ECMP dan membedakannya dari failover.
  • Membuat rute recursive lalu memperbaiki jebakan `target-scope`.
  • Membuat tabel routing tambahan dan membuktikan efek flag `fib`.

πŸ“ Konteks nyata

Bayangkan jalan menuju sekolah. Ada dua jalur: jalur utama lewat pasar, dan jalur cadangan lewat ring road. Papan petunjuk di gerbang sekolah hanya menampilkan satu jalur aktif.

Kalau jalur utama macet, papan harus cepat berganti ke ring road. Kalau papan telat berganti, siswa tetap terjebak macet walau ring road kosong β€” persis seperti router yang masih menganggap ISP utama hidup padahal link-nya sudah mati.

Nah, praktikum ini melatih tiga hal: mengatur urutan prioritas jalur (`distance`), membuat papan cepat berganti (`check-gateway`), dan memastikan jalur yang benar-benar dipakai (FIB), bukan cuma tercatat.

🧠 Konsep singkat

πŸ”Ή Kenapa rute bisa "salah pilih"

Untuk satu tujuan, bisa ada banyak rute. Router menyaring dulu, baru memilih: rute dengan `distance` terkecil yang gateway-nya reachable itulah yang menang dan dikirim ke FIB.

Kalau gateway dianggap tidak reachable, rute itu tersingkir dan kandidat berikutnya naik. Inilah dasar failover.

πŸ”Ή Failover versi murah: distance + check-gateway

Dua rute default dengan `distance` berbeda membentuk pasangan utama–cadangan. Rute cadangan baru dipakai kalau rute utama berhenti aktif.

Masalahnya, rute utama "berhenti aktif" hanya kalau gateway-nya dinilai mati. Kalau gateway masih diketik sebagai IP statis dan kabelnya masih nyala, router tidak tahu ISP di baliknya sudah putus. Di sinilah `check-gateway` masuk.

πŸ“Š Angka penting: router mengecek gateway tiap 10 detik. Nilai bawaan `/routing settings`: `check-gateway-ping-interval=10s`, `check-gateway-ping-timeout=1s`, `check-gateway-ping-count=2`. Jadi gateway baru dinyatakan mati setelah 2 kali gagal β€” sekitar 20 detik.

πŸ”Ή Recursive route: gateway yang butuh dicari

Gateway yang kita tulis bisa saja bukan tetangga langsung router. Router harus mencari dulu "gateway yang benar-benar bisa disapa" (`immediate-gw`). Pencarian ini dibatasi oleh `scope` dan `target-scope`.

Kalau `target-scope` terlalu kecil, nexthop tidak ketemu dan rute berujung inactive walau tulisannya terlihat benar.

🧩 Istilah penting

  • Route selection β€” proses memilih satu rute terbaik untuk tiap tujuan.
  • Failover β€” jalur cadangan otomatis menggantikan jalur utama yang mati.
  • check-gateway β€” fitur yang menguji gateway secara berkala (`ping`, `arp`, atau `bfd`).
  • ECMP β€” beberapa jalur `distance` sama dipakai bersamaan, ditandai `+`.
  • Immediate-gw β€” gateway yang benar-benar disentuh router setelah resolusi.
  • Nexthop object β€” objek gateway internal; v7 menyimpan beberapa objek per alamat.
  • Uplink β€” jalur keluar router menuju penyedia layanan.

πŸ”§ Praktik: uji route selection, failover, dan rute recursive

Lab ini memakai satu router dan dua uplink tiruan. Kalau tidak punya perangkat asli, topologi ini bisa dibuat di laboratorium virtual (mis. EVE-NG/GNS3) atau dua router bekas.

Susunan lab:

  • `ether1` β†’ uplink A, IP `192.168.10.2/24`, gateway `192.168.10.1`.
  • `ether2` β†’ uplink B, IP `192.168.20.2/24`, gateway `192.168.20.1`.
  • `ether3` β†’ LAN, IP `192.168.88.1/24`.

⚠️ Hati-hati: jangan mengerjakan urutan yang menghapus rute ini di router produksi. Kalau sesi Winbox/SSH kamu masuk lewat jalur yang sedang diuji, kamu bisa mengunci diri sendiri di luar router.

πŸ”Ή Persiapan: siapkan lab dua jalur

/ip address
add address=192.168.10.2/24 interface=ether1 comment="uplink A"
add address=192.168.20.2/24 interface=ether2 comment="uplink B"
add address=192.168.88.1/24 interface=ether3 comment="LAN lab"

Agar client LAN bisa keluar lewat kedua jalur, siapkan NAT masquerade:

/ip firewall nat
add chain=srcnat out-interface=ether1 action=masquerade comment="NAT via uplink A"
add chain=srcnat out-interface=ether2 action=masquerade comment="NAT via uplink B"

Sebelum mulai, simpan konfigurasi awal supaya mudah dikembalikan:

/export file=lab-routing-awal

πŸ”Ή Uji A: baca rute dan buktikan FIB

  1. Lihat rute yang ada sekarang.
    /ip route print
    
  2. Catat rute connected (`DAC`) dan rute default (`DAd`) kalau ada.
  3. Bandingkan dengan daftar rute aktif:
    /routing route print where active
    
  4. Tulis di buku catatan: berapa rute di `/ip route print`, berapa yang aktif.

πŸ§ͺ Uji cepat: kalau sebuah rute muncul di `/ip route print` tetapi tidak ada di `/routing route print where active`, rute itu belum dikirim ke FIB. Dari sini kamu tahu masalahnya ada di tahap seleksi, bukan di kabel.

πŸ”Ή Uji B: memilih jalur lewat distance

  1. Tambahkan dua rute default dengan prioritas berbeda.
    /ip route
    add dst-address=0.0.0.0/0 gateway=192.168.10.1 distance=1 comment="ISP utama"
    add dst-address=0.0.0.0/0 gateway=192.168.20.1 distance=2 comment="ISP cadangan"
    
  2. Cek rute mana yang aktif.
    /ip route print detail where dst-address="0.0.0.0/0"
    
  3. Yang aktif seharusnya rute `distance=1` (ISP utama). Rute `distance=2` muncul dengan flag `I` (inactive).
  4. Buktikan jalur yang dilewati:
    /ip route check 8.8.8.8
    

`/ip route check` menjawab "rute mana yang akan dipakai ke tujuan ini" tanpa perlu benar-benar mengirim trafik. Ini pemeriksaan paling aman untuk lab sekolah.

πŸ”Ή Uji C: failover otomatis dengan check-gateway

  1. Pasang `check-gateway` pada kedua rute.
    /ip route set [find comment="ISP utama"] check-gateway=ping
    /ip route set [find comment="ISP cadangan"] check-gateway=ping
    
  2. Simulasikan ISP utama mati. Cara paling bersih: matikan sakelar/mematikan interface di perangkat "modem" uplink A β€” bukan mematikan `ether1` di router ini.
  3. Amati pergantian jalur:
    /ip route print detail where dst-address="0.0.0.0/0"
    
  4. Catat berapa detik sampai rute cadangan menjadi aktif. Perkiraan normal sekitar 20 detik (2 kali gagal Γ— interval 10 detik).
  5. Hidupkan kembali uplink A, lalu pastikan rute utama kembali aktif dan rute cadangan turun lagi.
    /ip route print detail where dst-address="0.0.0.0/0"
    

πŸ’‘ Tips: catat waktu failover di laporan praktikum. Angka ini penting saat presentasi: sekolah/kantor biasanya minta bukti "berapa detik layanan bisa pulih".

⚠️ Hati-hati: `check-gateway` tidak menerima gateway berupa nama interface, karena tidak ada alamat IP tujuan yang bisa diuji. Kalau `gateway` diisi `ether1`, opsi ini akan ditolak.

πŸ”Ή Uji D: dua jalur bersamaan (ECMP)

  1. Ubah kedua rute supaya ber-distance sama.
    /ip route set [find comment="ISP cadangan"] distance=1
    
  2. Lihat hasilnya.
    /ip route print where dst-address="0.0.0.0/0"
    
  3. Kedua rute sekarang bergabung dan bertanda `+` (ECMP). Bukan failover lagi, tapi berbagi beban.
  4. Kembalikan `distance=2` untuk rute cadangan setelah selesai mengamati.
    /ip route set [find comment="ISP cadangan"] distance=2
    

⚠️ Hati-hati: banyak yang mengira dua rute default otomatis jadi cadangan. Kalau `distance`-nya sama, RouterOS justru memakai keduanya sekaligus (ECMP). Failover butuh `distance` yang berbeda.

πŸ”Ή Uji E: rute recursive dan jebakan target-scope

  1. Tambahkan rute tujuan yang gateway-nya bukan tetangga langsung, dengan `target-scope` terlalu kecil.
    /ip route add dst-address=10.10.10.0/24 gateway=192.168.99.1 distance=1 \
        target-scope=5 comment="rute recursive uji"
    
  2. Cek statusnya.
    /ip route print detail where comment="rute recursive uji"
    
  3. Karena gateway `192.168.99.1` hanya bisa dicari lewat rute di luar `target-scope=5`, rute ini berujung inactive.
  4. Perbesar `target-scope` dan ulangi pemeriksaan.
    /ip route set [find comment="rute recursive uji"] target-scope=30
    /ip route print detail where comment="rute recursive uji"
    
  5. Lihat hasil resolusi gateway yang sebenarnya:
    /routing nexthop print detail
    

πŸ§ͺ Uji cepat: kolom `IMMEDIATE-GW` di `/routing route print detail` harus terisi alamat + interface, misalnya `192.168.10.1%ether1`. Kalau kosong, nexthop-nya belum berhasil dicari.

πŸ”Ή Uji F: tabel routing tambahan dan flag fib

  1. Buat tabel baru tanpa flag `fib`, lalu taruh rute di dalamnya.
    /routing table add name=jalur-uji comment="tabel percobaan tanpa fib"
    /ip route add dst-address=0.0.0.0/0 gateway=192.168.10.1@main \
        routing-table=jalur-uji distance=1
    
  2. Cek FIB-nya.
    /routing route print where routing-table=jalur-uji
    
  3. Rute itu tidak muncul sebagai aktif, karena tabelnya tidak diizinkan mengirim rute ke FIB.
  4. Hapus tabelnya, buat ulang dengan `fib`, lalu tambahkan rutenya lagi.
    /routing table remove [find name=jalur-uji]
    /routing table add name=jalur-uji fib comment="tabel percobaan dengan fib"
    /ip route add dst-address=0.0.0.0/0 gateway=192.168.10.1@main \
        routing-table=jalur-uji distance=1
    
  5. Bandingkan hasilnya:
    /routing table print detail
    /routing route print where active
    

⚠️ Hati-hati: kesalahan klasik ini sudah dibahas di artikel pagi, dan di lab gejalanya paling jelas: rute tampak rapi di `/ip route print`, tetapi `/routing route print where active` tetap bersih. Tabel tanpa `fib` memang tidak pernah mengirim rute ke FIB.

πŸ”Ή Bersih-bersih lab

  1. Hapus rute uji supaya router kembali seperti semula.
    /ip route remove [find where comment~"ISP utama" or comment~"ISP cadangan" or comment~"rute recursive uji"]
    /routing table remove [find name=jalur-uji]
    
  2. Cek sisa konfigurasi.
    /ip route print
    /routing table print
    
  3. Kembalikan dari file export bila perlu:
    /import file=lab-routing-awal.rsc
    

πŸ”Ή Versi Winbox

  1. Buka IP β†’ Routes. Kolom `Distance` bisa diubah langsung dengan klik ganda.
  2. Klik kanan sebuah rute β†’ Check Gateway untuk mengatur `ping`/`arp`.
  3. Tabel baru: Routing β†’ Tables β†’ + β†’ isi `Name` β†’ centang FIB.
  4. Status rute recursive: Routing β†’ Nexthops (kolom scope hasil perhitungan).
  5. Semua atribut: Routing β†’ Routes β†’ aktifkan kolom `Immediate Gateway`.

🏭 Dipakai di dunia kerja

  • Sekolah (lab & ujian CBT): dua ISP dipasang supaya ujian tidak mati saat ISP utama putus. Yang diuji bukan hanya "ada jalur cadangan", tapi berapa detik pindahnya β€” karena ujian berjalan menit demi menit.
  • Kantor cabang:** sering memakai router kecil dengan dua jalur (fiber + 4G). `check-gateway=ping` di jalur 4G wajib, karena modem 4G bisa hidup tapi kuotanya habis.
  • ISP / warnet:** sulit melayani pelanggan kalau jalur utama mati tanpa failover. Teknisi memakai `distance` + `check-gateway` sebagai konfigurasi minimum, lalu memverifikasi lewat `/routing route print where active`.
  • Data center / multi-cabang:** rute ke kantor pusat biasanya recursive lewat backbone. Nilai `scope`/`target-scope` yang salah membuat rute tidak aktif dan aplikasi internal tiba-tiba tidak bisa diakses.
  • Teknisi lapangan:** sebelum menyalahkan kabel atau firewall, mereka cek daftar rute aktif lebih dulu. Ini memotong waktu diagnosa dari hitungan jam menjadi menit.

πŸ”₯ Kasus nyata: sebuah SMK memasang dua ISP untuk lab komputer. Rute utama `distance=1` dan cadangan `distance=2`, tetapi keduanya diisi gateway IP statis tanpa `check-gateway`.

Suatu pagi ISP utama putus di sisi modem β€” kabelnya masih tertancap, lampu link masih hijau. Karena router hanya melihat "kabel nyala", rute utama tetap dianggap aktif. Trafik tetap dilempar ke jalur mati, dan internet lab mati total sekitar 25 menit sampai teknisi datang memindahkan rute manual.

Setelah itu jalur cadangan dipasang `check-gateway=ping` dan diuji dengan mematikan modem utama. Hasilnya jalur cadangan mengambil alih otomatis dalam sekitar 20 detik, dan siswa bahkan tidak sadar ada gangguan.

Pelajaran: `distance` hanya menyiapkan cadangan; `check-gateway` yang benar-benar menggeser papan penunjuk.

βœ… Verifikasi

Jalankan berurutan setelah setiap uji, dan baca hasilnya:

/ip route print
/routing route print where active
/routing route print detail
/routing nexthop print detail
/routing table print detail
/ip route check 8.8.8.8
/tool traceroute 8.8.8.8 count=3

Bacaan hasil:

  • Rute utama + cadangan hanya berbeda `distance` β†’ rute cadangan ber-flag `I`.
  • Setelah gateway mati, rute cadangan naik jadi `A` dan rute utama turun β†’ failover bekerja.
  • Dua rute ber-distance sama β†’ bertanda `+` (ECMP).
  • Rute recursive yang benar punya `IMMEDIATE-GW` terisi.
  • Tabel dengan `fib` mengirim rutenya ke daftar aktif; tanpa `fib` tidak.

πŸ§ͺ Uji cepat: jumlahkan rute di `/ip route print`, lalu bandingkan dengan `/routing route print where active`. Selisihnya adalah rute yang belum dipakai β€” di situlah letak masalah biasanya.

⚠️ Kesalahan umum & troubleshooting

Gejala Penyebab paling sering Solusi
Jalur cadangan tidak pernah dipakai Tidak ada `check-gateway`, gateway dianggap selalu hidup Tambahkan `check-gateway=ping` pada jalur utama
Dua jalur dipakai bersamaan, bukan cadangan `distance` kedua rute sama Beri `distance` berbeda (1 dan 2)
Failover terasa lama (Β±40 detik) Interval/`count` pemeriksaan gateway besar Periksa `/routing settings`, sesuaikan bila perlu
`check-gateway` ditolak ("cannot be used") `gateway` diisi nama interface Ganti gateway ke alamat IP
Rute recursive tetap `inactive` `target-scope` terlalu kecil Perbesar `target-scope` rute yang mencari
Rute ada tapi trafik tidak lewat Tabel routing dibuat tanpa `fib` Hapus tabel, buat ulang dengan `fib`
`immediate-gw` kosong Nexthop tidak berhasil dicari Cek rute connected ke arah gateway
Client tidak bisa internet padahal rute benar NAT masquerade belum dibuat untuk jalur baru Tambah rule `srcnat` untuk interface uplink tersebut

πŸ” Catatan keamanan & etika

  • Kerjakan lab di router uji, bukan produksi. Menghapus atau menurunkan rute default di router sekolah bisa mematikan internet seluruh gedung dalam sekejap.
  • Jangan uji failover dengan mencabut kabel yang kamu pakai untuk mengakses router. Uji dari sisi perangkat modem/uplink, bukan dari `ether` tempat sesi manajemen kamu lewat.
  • Simpan hasil `/export` sebelum mengubah routing supaya bisa dipulihkan cepat kalau salah.
  • Rute bukan firewall. Mengatur jalur tidak membatasi siapa yang boleh lewat; itu tugas firewall filter.
  • Bedakan uji lab dari uji produksi. Saat uji di jaringan nyata, pilih jam sepi dan beri tahu pengguna, karena failover sengaja memutus jalur utama.

πŸ“Œ Kesimpulan

Tabel routing baru "hidup" setelah dibuktikan di lab. Empat hal yang wajib diingat dari praktikum ini:

  • `distance` menentukan urutan prioritas; `distance` berbeda = failover, `distance` sama = ECMP.
  • `check-gateway=ping` yang membuat router benar-benar tahu ISP sudah mati; efeknya terasa sekitar 20 detik.
  • Rute recursive butuh `scope`/`target-scope` yang tepat supaya `immediate-gw` terisi.
  • Tabel routing tambahan wajib ber-flag `fib`, dan buktinya selalu `/routing route print where active`.

Langkah berikutnya: `check-gateway` hanya tahu gateway lokal, belum tentu tahu internet di baliknya benar-benar hidup. Untuk deteksi yang lebih pintar, kita akan pakai rute recursive + Netwatch di artikel lanjutan.

πŸ”— Materi terkait

πŸ“š Referensi