Mikrotik : Tabel Routing dan Manajemen Rute di RouterOS v7

Revision as of 07:12, 14 October 2026 by Maintenance script (talk | contribs) (Perbaikan kategori: gunakan namespace Category (bukan Kategori))
(diff) ← Older revision | Latest revision (diff) | Newer revision β†’ (diff)

Tabel routing adalah peta yang dipakai router untuk menjawab satu pertanyaan saja: "paket ini mau dikirim ke mana?". Kalau peta itu salah atau kosong, paketnya dibuang β€” walau kabelnya tersambung dan lampu link hijau.

Di RouterOS v7 cara router menyimpan dan memilih rute berubah cukup besar dibanding v6: ada pemisahan RIB dan FIB, tabel routing boleh lebih dari satu, dan satu rute punya atribut yang jauh lebih lengkap.

Artikel ini membahas isi perut tabel routing v7: cara membacanya, cara router memilih rute aktif, dan cara mengelolanya lewat terminal maupun Winbox. Untuk skenario memilih jalur tertentu (policy routing), kita punya artikel terpisah.

🎯 Tujuan

Setelah membaca dan mencoba artikel ini, kamu diharapkan bisa:

  • Menjelaskan perbedaan RIB (daftar semua rute) dan FIB (rute yang benar-benar dipakai meneruskan paket).
  • Membaca output `/ip route print` dan `/routing route print detail` tanpa bingung arti flag-nya.
  • Memahami atribut rute v7: `distance`, `scope`, `target-scope`, `immediate-gw`, dan `check-gateway`.
  • Membuat tabel routing tambahan dan memastikan rutenya benar-benar masuk FIB.
  • Membedakan route active, inactive, filtered, dan unreachable.

πŸ“ Konteks nyata

Bayangkan kamu jadi petugas loket papan informasi di terminal bus.

Setiap penumpang (paket) bertanya: "ke Surabaya lewat mana?". Kamu punya daftar tujuan dan jalurnya. Kalau tujuannya tidak ada di daftar, penumpangnya tidak bisa berangkat.

Nah, di router daftar itu namanya tabel routing. Satu barisnya disebut route, isinya: "untuk tujuan X, titipkan ke Y". Ada dua papan yang mirip tapi beda peran:

  • Papan besar = RIB. Berisi semua informasi rute yang pernah diketahui router, termasuk yang belum tentu dipakai.
  • Papan tempel di depan loket = FIB. Berisi hanya rute terbaik yang sudah terpilih dan siap dipakai.

Petugas loket (proses routing) membaca papan besar, memilih jalur terbaik per tujuan, lalu menempel hasilnya di papan depan. Paket yang lewat hanya melihat papan depan.

  • πŸ“Š Angka penting: di RouterOS v7 jumlah routing table bisa ribuan (jauh lebih banyak dari v6), jadi banyak jalur bisa dipisah rapi tanpa trik mangle yang rumit.*

🧠 Konsep singkat

πŸ”Ή RIB dan FIB: beda papan, beda tugas

  • RIB (Routing Information Base) = database lengkap semua prefix yang dipelajari: connected, static, DHCP, BGP, OSPF, RIP.
  • FIB (Forwarding Information Base) = salinan berisi rute aktif saja, plus aturan policy routing. Inilah yang dipakai saat paket diteruskan.
  • Tugas RIB bukan cuma menyimpan, tapi juga menyaring, memilih rute terbaik per tujuan, dan memperbarui FIB.

πŸ’‘ Tips: kalau rute muncul di RIB tapi tidak jalan, berarti masalahnya di tahap seleksi (FIB belum dapat rute itu) β€” bukan di kabel atau firewall.

πŸ”Ή Tabel `main` dan tabel tambahan

Secara bawaan semua rute masuk ke tabel bernama `main`. Tabel ini yang dipakai hampir semua router rumahan dan lab sekolah.

Kalau butuh memisahkan jalur (misal trafik ujian lewat ISP A, trafik umum lewat ISP B), kita buat tabel baru:

/routing table add name=jalur-ujian fib

Perhatikan kata `fib`. Tanpa itu, tabel tetap ada tapi rutenya tidak pernah dikirim ke FIB alias tidak akan dipakai meneruskan paket.

⚠️ Hati-hati: ini kesalahan nomor satu saat bikin tabel routing baru. Tabelnya "ada", rute terlihat rapi, tapi tidak ada trafik yang lewat β€” karena FIB tidak pernah menerima rutenya.

πŸ”Ή Anatomi satu rute v7

Satu rute static sederhana di v7 terlihat begini:

/ip route add dst-address=192.168.2.0/24 gateway=172.16.1.2 distance=1 \
    comment="jalur ke LAN cabang"

Arti atribut yang paling sering dipakai:

Atribut Arti sederhana
`dst-address` Tujuan yang dicakup rute ini
`gateway` Titik berikutnya; bisa IP, bisa nama interface
`distance` Tingkat kepercayaan. Makin kecil makin dipilih
`routing-table` Rute ini tinggal di tabel mana
`scope` / `target-scope` Seberapa jauh gateway boleh dicari dari rute ini
`check-gateway` Router mengecek gateway ini masih hidup atau tidak

πŸ“Š Angka penting: rute connected (dari `/ip address`) ber-distance 0 alias paling dipercaya. Rute static bawaan bernilai 1. Rute dari DHCP/BGP/OSPF punya nilai sendiri sesuai protokolnya β€” beberapa contoh di dokumentasi resmi menunjukkan angka 10 untuk rute DHCP.

πŸ”Ή Bagaimana router memilih rute aktif

Untuk satu tujuan bisa ada beberapa rute dari sumber berbeda. Router memilih dengan aturan Route Selection:

  1. Rute tidak boleh sedang disabled.
  2. Rute harus punya next-hop yang reachable. Kalau gateway-nya di jaringan yang connected dan rute connected-nya aktif, gateway dianggap hidup.
  3. Rute tidak boleh synthetic.
  4. Dari semua kandidat, pilih distance terkecil. Kalau ada dua dengan distance sama, RouterOS menyebut pemilihannya arbitrary (bebas/tidak dijamin salah satu).

Kalau beberapa rute punya distance sama dan tujuannya sama, RouterOS menggabungkannya jadi satu rute ECMP dengan tanda `+`.

πŸ”Ή Nexthop lookup: kenapa rute bisa "recursive"

Kadang gateway yang kita tulis bukan gateway yang benar-benar disentuh router. Contoh: kita menulis `gateway=10.0.0.1`, padahal `10.0.0.1` sendiri harus dicari lewat rute lain. Proses mencari "gateway yang benar-benar bisa disapa" inilah nexthop lookup.

Hasilnya muncul di kolom `immediate-gw`, misalnya `10.155.101.1%ether12` β€” gateway aslinya `10.155.101.1`, perangkatnya di `ether12`. Dua atribut yang mengaturnya: `scope` di rute yang dipakai untuk mencari, dan `target-scope` di rute yang mencari (batas maksimum scope yang boleh dipakai).

⚠️ Hati-hati: problem khas jaringan lebih dari satu hop (iBGP, eBGP multihop) justru muncul di sini. Kalau `target-scope` terlalu kecil, nexthop tidak ketemu dan rute berujung inactive walau konfigurasinya "kelihatan benar".

πŸ”Ή `check-gateway`: rute bisa mati sendiri

`check-gateway=ping` atau `check-gateway=arp` membuat router menguji gateway secara berkala.

πŸ“Š Angka penting: uji dilakukan tiap 10 detik. Kalau tidak ada balasan selama 10 detik, dianggap timeout. Setelah 2 kali timeout, gateway dianggap unreachable. Begitu dapat balasan lagi, statusnya kembali reachable dan counter timeout di-reset.

⚠️ Hati-hati: `check-gateway` tidak bisa dipakai kalau `gateway` diisi nama interface (bukan IP). Logikanya wajar: tidak ada alamat tujuan yang bisa dites.

🧩 Istilah penting

  • RIB β€” daftar lengkap semua rute yang diketahui router.
  • FIB β€” salinan rute aktif yang dipakai untuk meneruskan paket.
  • Prefix / dst-address β€” tujuan, misal `192.168.2.0/24`.
  • Next-hop / gateway β€” "titipkan ke siapa".
  • Immediate gateway β€” gateway yang benar-benar bisa disapa langsung oleh router.
  • Distance β€” nilai prioritas; makin kecil makin dipilih.
  • Scope & target-scope β€” pengatur seberapa dalam gateway boleh dicari.
  • ECMP β€” beberapa jalur berbobot sama dipakai bersama-sama.
  • Connected route β€” rute otomatis dari jaringan yang menempel langsung di interface.

πŸ”§ Praktik: membaca dan mengelola tabel routing v7

Semua perintah di bawah dijalankan dari terminal router. Tidak perlu mengubah konfigurasi apa pun di langkah 1–4, jadi aman dicoba di lab.

πŸ”Ή Langkah 1: lihat tabel `main`

/ip route print

Baca baris flag-nya dari kiri ke kanan. Contoh arti kombinasi paling sering muncul:

Flag Arti
`A` / `I` Active (dipakai sekarang) / Inactive (ada tapi tidak dipakai)
`D` / `X` Dynamic (otomatis, misal DHCP) / Disabled (dimatikan manual)
`C` / `S` Connected (dari `/ip address`) / Static (dibuat manual)
`d`, `o`, `b`, `r`, `v` Sumbernya DHCP, OSPF, BGP, RIP, VPN
`+` / `H` ECMP (jalur digabung) / kandidat offload ke hardware

πŸ’‘ Tips: rute `A` dan `C` ber-distance 0 adalah "jalan kampung" router β€” jaringan yang menempel langsung. Rute bertanda `DAd` adalah default route dari DHCP: inilah yang melempar trafik ke internet.

πŸ”Ή Langkah 2: baca detail satu rute

/ip route print detail where static

Versi detail menampilkan atribut yang tidak muncul di tampilan ringkas, termasuk `scope`, `target-scope`, dan `check-gateway`.

πŸ”Ή Langkah 3: lihat semua rute dengan atribut lengkap

v7 menyediakan menu baru khusus untuk melihat semua rute dari semua address family sekaligus:

/routing route print
/routing route print detail

Di sini muncul kolom `SCOpe`, `TARget-scope`, dan `IMMEDIATE-GW` yang jadi kunci saat mendiagnosa rute recursive.

Menu `/routing route` bersifat read-only. Untuk menambah atau menghapus rute, tetap pakai `/ip route` (IPv4) atau `/ipv6 route` (IPv6).

πŸ”Ή Langkah 4: cek FIB dan objek nexthop

Kunci untuk memastikan "rute ini benar-benar dipakai":

/system resource print
/routing route print where active
/routing nexthop print
  • `routing route print where active` = daftar rute yang sudah masuk FIB.
  • `/routing nexthop print` = objek gateway yang benar-benar terpakai, lengkap dengan scope hasil perhitungan akhir.

πŸ§ͺ Uji cepat: kalau rute ada di `/ip route print` tapi tidak muncul di `routing route print where active`, berarti rute itu belum dikirim ke FIB β€” cek `distance`, reachability gateway, dan `scope`.

πŸ”Ή Langkah 5: buat tabel routing tambahan

/routing table add name=jalur-ujian fib comment="tabel khusus trafik ujian"
/ip route add dst-address=0.0.0.0/0 gateway=192.168.10.1@main \
    routing-table=jalur-ujian distance=1

Perhatikan penulisan `192.168.10.1@main`: artinya gateway `192.168.10.1` dicari dulu di tabel `main`, karena gateway itu sendiri harus ketemu jalannya.

⚠️ Hati-hati: kalau tabel `jalur-ujian` dibuat tanpa `fib`, baris rute di atas tidak akan pernah meneruskan paket. Hapus dan buat ulang tabelnya dengan `fib`, jangan hanya menambah rute.

πŸ”Ή Langkah 6: mengelola jalur cadangan dengan `distance`

Cara paling sederhana memakai dua jalur internet:

/ip route add dst-address=0.0.0.0/0 gateway=192.168.10.1 distance=1 \
    check-gateway=ping comment="ISP utama"
/ip route add dst-address=0.0.0.0/0 gateway=192.168.20.1 distance=2 \
    check-gateway=ping comment="ISP cadangan"

Karena distance 2 lebih besar, jalur cadangan hanya dipakai kalau jalur distance 1 berhenti aktif.

πŸ’‘ Tips: selalu pasang `check-gateway` pada jalur cadangan. Tanpa itu, router masih menganggap ISP utama hidup hanya karena kabelnya tersambung, padahal link-nya sudah mati di sisi modem.

πŸ”Ή Langkah 7: ECMP β€” dua jalur dipakai bersamaan

/ip route add dst-address=0.0.0.0/0 gateway=192.168.10.1 distance=1 \
    check-gateway=ping comment="ISP A"
/ip route add dst-address=0.0.0.0/0 gateway=192.168.20.1 distance=1 \
    check-gateway=ping comment="ISP B"

Distance dibuat sama, jadi RouterOS menggabungkan keduanya dan menandainya `+`.

πŸ“Š Angka penting: secara bawaan ECMP memakai hash Layer 3 β€” sumber IP + tujuan IP untuk IPv4 (untuk IPv6 ditambah flow label dan IP proto). Pola hash-nya bisa diubah lewat `/ip settings` ke Layer 4 (menyertakan port) atau inner Layer 3.

πŸ”Ή Langkah 8: versi Winbox

  1. Buka IP β†’ Routes untuk tabel `main`, lengkap dengan kolom `Routing Table` dan `Distance`.
  2. Tabel baru: Routing β†’ Tables β†’ klik + β†’ isi `Name` β†’ centang FIB.
  3. Rute recursive: Routing β†’ Nexthops untuk melihat gateway hasil resolusi.
  4. Semua rute + atribut lengkap: Routing β†’ Routes.

🏭 Dipakai di dunia kerja

  • Sekolah (lab & ujian CBT): siswa mengeluh lambat saat ujian berbasis komputer. Teknisi memisahkan trafik ujian ke tabel routing sendiri lalu memastikan rutenya masuk FIB β€” bukan sekadar menambah bandwidth.
  • ISP / penyedia layanan: satu router melayani banyak pelanggan dengan kebijakan berbeda. Kuncinya tabel routing terpisah + `distance` dan `scope` yang benar, karena salah nilai bisa membuat rute pelanggan tidak aktif.
  • Kantor dengan dua ISP: jalur cadangan harus benar-benar mengambil alih saat ISP utama mati. `distance` + `check-gateway` adalah kombinasi minimalnya.
  • Data center / perusahaan multi-cabang: antar-cabang sering memakai rute recursive lewat backbone. `scope` dan `target-scope` menentukan rute itu naik ke FIB atau tidak.
  • Guru/instruktur TKJ: `distance` dipakai sebagai alat peraga paling murah untuk mengajarkan konsep prioritas rute.

πŸ”₯ Kasus nyata: di sebuah lab sekolah, teknisi ingin trafik ujian lewat ISP khusus supaya tidak terganggu siswa yang streaming. Ia membuat tabel baru dan menaruh rute di dalamnya. Konfigurasi terlihat sempurna, `ip route print` pun menampilkan barisnya rapi.

Begitu ujian dimulai, trafiknya tetap keluar lewat jalur lama dan tetap lambat. Penyebabnya klasik: tabelnya dibuat tanpa flag `fib`, jadi rute itu tidak pernah masuk FIB dan tidak pernah dipakai meneruskan paket.

Perbaikannya bukan menambah rute baru, tapi menghapus tabel lalu membuatnya ulang:

/routing table remove [find name=jalur-ujian]
/routing table add name=jalur-ujian fib
/ip route add dst-address=0.0.0.0/0 gateway=192.168.10.1@main routing-table=jalur-ujian

Pelajaran: "ada di konfigurasi" belum berarti "dipakai". Selalu buktikan lewat daftar rute active.

βœ… Verifikasi

Jalankan berurutan, dan pastikan tiap langkah memberi hasil yang diharapkan:

/ip route print
/routing route print detail
/routing route print where active
/routing nexthop print
/routing table print detail

Tambahan untuk membuktikan paket benar-benar mengikuti rute:

/tool traceroute 8.8.8.8 count=3
/ip route check 8.8.8.8
  • `traceroute` menunjukkan hop yang dilalui. Dari router, trafik ini melewati chain `output` β€” ingat, bukan `prerouting`.
  • `/ip route check` menampilkan rute mana yang akan dipakai ke tujuan tersebut, tanpa perlu mengirim paket sungguhan ke internet.

Bacaan hasil:

  • Rute tampil di `/ip route print` dengan flag `A` β†’ sudah aktif.
  • Flag `I` tapi tidak ada `A` β†’ kandidat kalah atau gateway tidak reachable; cek `distance` dan `check-gateway`.
  • Tabel muncul di `/routing table print detail` dengan `fib` aktif β†’ siap menerima rute.

πŸ§ͺ Uji cepat: bandingkan jumlah rute di `/ip route print` dengan `/routing route print where active`. Selisihnya adalah rute yang belum dipakai β€” di situlah biasanya sumber masalahnya.

⚠️ Kesalahan umum & troubleshooting

Gejala Penyebab paling sering Solusi
Rute ada tapi trafik tidak lewat Tabel routing dibuat tanpa `fib` Hapus tabel, buat ulang dengan `fib`
Rute ber-flag `I` (inactive) Gateway tidak reachable Cek IP gateway, interface, dan rute connected-nya
Rute recursive tidak masuk FIB `target-scope` terlalu kecil Perbesar `target-scope` rute yang mencari
Jalur cadangan tidak pernah dipakai `distance` sama dengan jalur utama Naikkan `distance` jalur cadangan
Jalur cadangan telat pindah Tidak memakai `check-gateway` Tambahkan `check-gateway=ping`
`check-gateway` ditolak `gateway` diisi nama interface, bukan IP Pakai IP gateway untuk rute yang perlu dicek
Trafik tidak seimbang saat ECMP Pola hash L3 kebetulan menumpuk di satu jalur Ubah pola hash atau pisahkan per alamat
Rute hilang setelah reboot Rute tidak tersimpan permanen Cek flag dynamic; simpan sebagai static

πŸ” Catatan keamanan & etika

  • Rute bukan pengganti firewall. Rute hanya mengatur jalur; siapa yang boleh lewat tetap ditentukan firewall filter.
  • Default route terbuka = pintu terbuka. Tabel tambahan yang punya default route sendiri harus diuji, jangan sampai trafiknya bocor ke jalur yang tidak diawasi.
  • Backup dulu sebelum mengubah routing router produksi (`/export file=nama-file`), dan jangan melakukannya saat jam sibuk β€” salah `distance` pada rute default bisa mematikan internet seluruh sekolah.
  • Saat membaca data trafik pengguna, batasi diri pada tujuan teknis. Ini menyangkut privasi orang lain.

πŸ“Œ Kesimpulan

Tabel routing v7 lebih rapi daripada v6: RIB menyimpan semua informasi, FIB memakai yang terbaik, dan banyak tabel bisa dibuat tanpa trik.

Tiga hal yang wajib diingat:

  • Tabel baru butuh flag `fib` supaya rutenya masuk FIB.
  • `distance` menentukan prioritas; `scope`/`target-scope` menentukan rute recursive berhasil atau tidak.
  • "Ada di konfigurasi" belum berarti "dipakai" β€” selalu buktikan lewat daftar rute active.

Langkah berikutnya: buat rute recursive dan pakai Netwatch untuk mendeteksi ISP mati lebih akurat daripada `check-gateway` biasa. Nanti kita bahasa khusus di artikel Failover koneksi dengan Netwatch dan recursive route.

πŸ”— Materi terkait

πŸ“š Referensi