Mikrotik : Praktikum Uji Policy Routing dengan Routing Rule dan Mangle Mark-Routing
Praktikum uji policy routing ini adalah pasangan lab dari artikel Mikrotik : Policy Routing (Memilih Jalur Internet Tertentu). Kalau di artikel pagi kita membahas konsepnya, di sini kita turun ke lab: membuktikan paket benar-benar keluar lewat jalur yang kita pilih, lalu sengaja membuat kesalahan supaya tahu cara memperbaikinya.
π― Tujuan
- Menyiapkan lab dua jalur internet di RouterOS dan membuktikan keduanya benar-benar hidup.
- Menguji policy routing lewat **routing rule**, membandingkan `lookup-only-in-table` dengan `lookup`.
- Menguji alternatif **mangle mark-routing** dan melihat bedanya di counter.
- Membaca bukti dari `traceroute`, counter rule, dan `/ip route check`.
- Mengenali tiga jebakan yang paling sering bikin lab policy routing "kelihatan gagal".
π Konteks nyata
Belajar policy routing tanpa lab itu seperti belajar menyetir hanya dari buku. Hafal urutan pedal, tapi begitu masuk jalanan tetap bingung.
Lab ini ibarat **ujian SIM di lapangan**: kita bikin dua jalur, pasang papan petunjuk (rule), lalu buktikan mobil benar-benar lewat jalur yang kita tunjuk. Bukan cuma "konfigurasi tidak error", tapi **ada buktinya**.
π‘ Tips: Sebelum mulai, beri label fisik pada kabel dan tulis nama interface di komentar. Lab yang kabelnya tertukar adalah penyebab nomor satu kesimpulan "policy routing gagal" padahal salah colok.
π§ Konsep singkat
Uji policy routing sebaiknya berurutan, dari hulu ke hilir. Kalau melompat langsung ke traceroute, kita tidak tahu bagian mana yang salah.
- **Jalur siap?** buktikan dulu gateway kedua ISP bisa di-ping.
- **Rute khusus bisa dipakai?** buktikan dengan `/ip route check`.
- **Trafik benar-benar pakai tabel itu?** buktikan dengan counter rule **dan** traceroute dari sumber asli.
Kalau salah satu belum hijau, jangan lanjut ke langkah berikutnya. Menumpuk rule di atas konfigurasi yang belum benar hanya menambah variabel yang harus dicurigai.
β οΈ Hati-hati: Kesalahan verifikasi paling sering terjadi karena traceroute dijalankan **dari router**. Di RouterOS, trafik yang lahir dari router sendiri melewati chain `output`, bukan `prerouting`. Mangle `chain=prerouting` tidak akan pernah melihatnya.
π§© Istilah penting
- **Baseline** β kondisi normal sebelum diubah, dipakai sebagai pembanding. Tanpa baseline, kita tidak punya bukti apa pun.
- **Routing table** β peta jalur. Bawaan: `main`; tabel buatan harus didefinisikan dulu `/routing table add ... fib`.
- **Routing rule** β papan petunjuk: "paket berciri X, cari jalurnya di tabel Y".
- **Routing mark** β label yang ditempel mangle ke paket atau koneksi, lalu dipakai memilih tabel.
- **`lookup`** β cari di tabel yang ditunjuk; kalau gagal, boleh kembali ke `main`.
- **`lookup-only-in-table`** β cari **hanya** di tabel itu; kalau gagal, paket dibuang.
- **Counter** β penghitung berapa paket/byte yang kena satu rule. Ini bukti rule benar-benar terpakai.
- **FastTrack** β jalur cepat RouterOS yang **hanya** bekerja di tabel `main`, dan melewati mangle.
π§ Praktik: Uji Policy Routing
Skenario lab: satu router, dua jalur internet, satu LAN siswa.
| Peran | Interface | Alamat | Keterangan |
|---|---|---|---|
| Router MikroTik | ether1 | 192.168.10.2/24 | ke ISP-A (fiber), gateway 192.168.10.1 |
| Router MikroTik | ether2 | 192.168.20.2/24 | ke ISP-B (cadangan), gateway 192.168.20.1 |
| Router MikroTik | bridge-LAN | 10.10.10.1/24 | LAN siswa + DHCP Server |
| PC uji (siswa A) | - | 10.10.10.50 | sumber yang mau diarahkan |
| PC pembanding (siswa B) | - | 10.10.10.60 | jalur normal, untuk pembanding |
πΉ Langkah 0: pastikan kedua jalur hidup
Ini pondasi. Kalau jalur kedua saja belum bisa dipakai, policy routing pasti gagal dan kita akan salah menyalahkan konfigurasi.
/ip address print
/ip route print where dst-address="0.0.0.0/0"
/ping 192.168.10.1 count=3
/ping 192.168.20.1 count=3
Pastikan **NAT masquerade** juga sudah mencakup kedua interface keluar. Rute benar tapi NAT kurang satu baris = internet tetap tidak jalan.
/ip firewall nat print where chain=srcnat
π Angka penting: Dua default route dengan **distance sama** akan dibaca sebagai ECMP (dua jalur sejajar), bukan cadangan. Untuk lab ini pakai distance berbeda supaya jalur utama tetap jelas.
πΉ Langkah 1: catat kondisi awal (baseline)
Dari PC `10.10.10.50`, catat jalur normalnya **sebelum** diubah.
tracert 8.8.8.8
Di Windows pakai `tracert`, di Linux/macOS pakai `traceroute`. Hop pertama normalnya `192.168.10.1` (ISP-A). Catat hasilnya di buku lab β ini **bukti pembanding** yang akan kita pakai sampai akhir praktikum.
π§ͺ Uji cepat: Jalankan traceroute juga dari PC `10.10.10.60`. Dua PC harus menunjukkan hop pertama yang sama selama belum ada policy routing.
πΉ Langkah 2: buat tabel khusus dan isi rutenya
Sekarang buat "peta alternatif" dan isi jalur ke ISP-B.
/routing table add name=jalur-ujian fib
/ip route add dst-address=0.0.0.0/0 gateway=192.168.20.1@main routing-table=jalur-ujian distance=1 comment="praktikum policy routing - via ISP-B"
Tanda `@main` artinya gateway `192.168.20.1` diambil dari tabel `main`. Di RouterOS v7 ini wajib, karena gateway tersebut tidak berada di tabel `jalur-ujian`.
Uji dulu tabelnya bisa me-resolve tujuan:
/ip route check 8.8.8.8 routing-table=jalur-ujian
/ip route print detail where routing-table=jalur-ujian
πΉ Langkah 3: Uji A - routing rule lookup-only-in-table
Papan petunjuk pertama: trafik dari `10.10.10.50` wajib mencari jalur di `jalur-ujian`.
/routing rule add src-address=10.10.10.50 action=lookup-only-in-table table=jalur-ujian comment="uji A - ujian via ISP-B"
/routing rule print
/routing rule print stats
Verifikasi dari **PC uji**, bukan dari router:
tracert 8.8.8.8
Hop pertama harus berubah menjadi `192.168.20.1` (ISP-B), sementara PC pembanding tetap lewat ISP-A.
πΉ Langkah 4: Uji B β paksa pindah jalur (bukti cadangan bekerja)
Sekarang ubah action-nya menjadi `lookup`, lalu matikan jalur ISP-B secara sadar.
/routing rule set [find comment~"uji A"] action=lookup
/interface ethernet disable ether2
Tunggu beberapa detik, lalu jalankan `tracert 8.8.8.8` dari PC `10.10.10.50` lagi. Hop pertama harus **kembali ke ISP-A**, tanpa kita mengubah rule apa pun. Inilah bedanya `lookup` dengan `lookup-only-in-table`.
Jangan lupa hidupkan kembali jalur cadangannya:
/interface ethernet enable ether2
β οΈ Hati-hati: Kalau di Uji A Anda memakai `lookup-only-in-table` lalu jalur ISP-B mati, trafik PC uji akan **dibuang total** β halaman blank, bukan pindah jalur. Itu bukan bug, itu memang perilakunya.
πΉ Langkah 5: Uji C - bandingkan dengan mangle mark-routing
Hapus routing rule, ganti dengan pendekatan mangle. Hasil akhirnya harus sama.
/routing rule remove [find comment~"uji A"]
/ip firewall mangle
add chain=prerouting src-address=10.10.10.50 connection-state=new action=mark-connection new-connection-mark=conn-ujian passthrough=yes comment="uji C - tandai koneksi"
add chain=prerouting connection-mark=conn-ujian action=mark-routing new-routing-mark=jalur-ujian passthrough=no comment="uji C - pakai tabel jalur-ujian"
Pola dua baris ini disengaja: tandai **koneksinya** dulu (hanya saat `new`, jadi hemat proses), baru tandai **routing**-nya. Semua paket dalam satu koneksi otomatis ikut jalur yang sama.
/ip firewall mangle print stats
Counter pada baris `mark-routing` harus naik saat PC uji membuka koneksi baru. Kalau counter-nya diam, lihat Langkah 6.
π Angka penting: Packet mark dibatasi maksimal **4096** entri unik. Melewati batas ini memunculkan error "bad new packet mark".
πΉ Langkah 6: Uji D β sengaja bikin gagal dengan FastTrack
Ini uji paling penting justru karena **sengaja gagal**. Tambahkan FastTrack, lalu lihat policy routing kita mati.
/ip firewall filter add chain=forward action=fasttrack-connection connection-state=established,related comment="uji D - fasttrack"
/ip firewall mangle print stats
Sekarang connection-state `established` masuk FastTrack dan **melewati mangle**, sehingga `mark-routing` berhenti kena. Trafik kembali ke jalur default meski rule kita masih ada.
Perbaikannya: **kecualikan** sumber yang mau diatur dari FastTrack, dengan menaruh rule pengecualian **di atas** rule fasttrack.
/ip firewall filter add chain=forward src-address=10.10.10.50 action=accept place-before=[find action=fasttrack-connection] comment="uji D - kecualikan PC uji dari fasttrack"
Setelah itu, buka koneksi baru dari PC uji dan cek kembali counter mangle-nya.
πΉ Langkah 7: Uji E β routing rule sebagai penyaring kasar
Routing rule juga bisa dipakai seperti firewall sederhana. Uji: PC di `ether4` dilarang masuk ke `192.168.1.0/24`.
/routing rule add interface=ether4 dst-address=192.168.1.0/24 action=drop comment="uji E - blokir akses LAN 1"
Uji dengan `ping` dari client di `ether4`. Kalau benar, ping timeout dan trafik itu tidak keluar sama sekali.
πΉ Langkah 8: bongkar lab (bersih-bersih)
Selalu kembalikan lab ke kondisi awal. Router yang penuh rule sisa akan menyulitkan praktikum berikutnya.
/ip firewall filter remove [find comment~"uji D"]
/ip firewall mangle remove [find comment~"uji C"]
/routing rule remove [find comment~"uji E"]
/routing rule print
/ip route remove [find routing-table=jalur-ujian]
/routing table remove [find name=jalur-ujian]
Ulangi `tracert` dari PC uji: harus kembali ke ISP-A seperti baseline di Langkah 1.
πΉ Langkah 9: versi Winbox
Untuk yang lebih nyaman pakai tampilan grafis:
- **Routing β Tables**: tambahkan tabel `jalur-ujian`, centang **FIB**.
- **IP β Routes**: tambahkan rute default, pilih **Routing Table** = `jalur-ujian`, dan isi gateway.
- **Routing β Rules**: tambahkan rule `src-address` PC uji β tabel `jalur-ujian`.
- **IP β Firewall β Mangle**: tambahkan dua rule (mark-connection lalu mark-routing).
- Klik **Apply**, lalu perhatikan kolom **counter** untuk memastikan rule benar-benar terpakai.
π Dipakai di dunia kerja
- **Sekolah:** lab ujian berbasis komputer diarahkan ke jalur khusus supaya pengiriman jawaban tidak tersendat saat siswa lain melakukan streaming.
- **Kantor:** trafik rapat video diarahkan ke jalur berlatensi rendah, sementara unduhan besar lewat jalur satunya agar rapat tidak putus-putus.
- **ISP dan warnet:** trafik pelanggan paket tertentu diarahkan ke uplink berbeda supaya beban antar jalur seimbang dan tidak ada link yang penuh.
- **Industri:** jalur cadangan dipakai otomatis saat link utama putus, sehingga kasir dan mesin produksi tetap terhubung ke server pusat.
- **Sektor keuangan:** trafik ke payment gateway dipaksa lewat ISP paling stabil agar transaksi tidak gagal di tengah jalan.
- **Lab jaringan SMK:** siswa berlatih membaca bukti β hop traceroute, counter rule, dan status rute β bukan sekadar menyalin perintah.
β Verifikasi
Urutan ini adalah bukti resmi praktikum Anda. Kalau semua hijau, policy routing berjalan.
- Tabel khusus sudah ada:
/routing table print
- Rute di tabel khusus aktif (flag `A`):
/ip route print where routing-table=jalur-ujian
- Router bisa me-resolve tujuan dari tabel itu:
/ip route check 8.8.8.8 routing-table=jalur-ujian
- Rule benar-benar kena trafik:
/routing rule print stats
/ip firewall mangle print stats
- Bukti akhir dari sumber asli:
tracert 8.8.8.8
π§ͺ Uji cepat: Bandingkan hop pertama traceroute PC uji dengan PC pembanding. Kalau berbeda, policy routing Anda bekerja. Kalau sama, rule belum kena β cek urutan, interface, dan FastTrack.
π Angka penting: RouterOS membatasi maksimal **4096** routing table unik. Untuk lab sekolah, 2β3 tabel sudah lebih dari cukup; sisanya kebiasaan buruk.
β οΈ Kesalahan umum & troubleshooting
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| Rute baru ditolak RouterOS | Gateway ditulis tanpa `@main` | Tulis `gateway=IP@main` |
| Tabel tidak bisa dipakai | Lupa `/routing table add ... fib` | Buat tabel lebih dulu |
| Traceroute dari router tidak berubah | Trafik router lewat `output`, bukan `prerouting` | Uji dari client, atau tambahkan rule `chain=output` |
| Counter mangle tidak naik | Ada FastTrack menangkap koneksi | Kecualikan sumber di atas rule fasttrack |
| Internet mati total saat jalur khusus down | Pakai `lookup-only-in-table` tanpa cadangan | Ganti ke `action=lookup` |
| PC pembanding ikut pindah jalur | Rule terlalu luas / tanpa `src-address` | Perjelas matcher, cek urutan rule |
| Ping ke gateway jalur kedua gagal | Jalur memang mati atau IP salah | Benahi jalur dulu, jangan sentuh policy routing |
π₯ Kasus nyata: Di sebuah lab SMK, siswa menguji policy routing dengan `/tool traceroute` langsung **di router**. Hasilnya tetap lewat ISP-A, padahal rule dan tabel sudah benar. Karena mengira konfigurasinya salah, ia menambah rule demi rule sampai akhirnya seluruh trafik kelas ikut terdampak dan internet lab down. Akar masalahnya sederhana: traceroute itu lahir **dari router**, jadi melewati chain `output` dan tak pernah menyentuh mangle `prerouting`. Solusinya: uji dari PC client seperti Langkah 1 dan 3, dan biasakan membaca counter rule sebagai bukti, bukan hanya traceroute.
β οΈ Hati-hati: Jangan mengubah routing rule dari jarak jauh tanpa jalur akses kedua. Salah menulis rule bisa mengunci akses manajemen Anda sendiri, dan Anda tidak punya cara masuk lagi selain ke lokasi.
π Catatan keamanan & etika
- Routing rule `action=drop` memang bisa menolak trafik, tetapi ia **bukan pengganti firewall**. Untuk keamanan tetap pakai **filter** dan **address list**.
- Policy routing **tidak mengenkripsi** apa pun. Ia hanya memilih jalur; kerahasiaan data tetap urusan TLS/VPN.
- Jangan pakai policy routing untuk melewati kebijakan sekolah, kantor, atau ISP. Itu pelanggaran, bukan keterampilan.
- Menandai trafik per pengguna untuk mengintai kebiasaan orang lain masuk wilayah privasi. Lakukan hanya dengan izin dan tujuan yang jelas.
- Biasakan mengisi `comment` pada setiap rule uji, lalu **hapus rule uji** setelah praktikum selesai.
π Kesimpulan
Policy routing baru bisa disebut berhasil kalau **ada buktinya**: gateway hidup, tabel menyelesaikan tujuan, counter naik, dan traceroute dari sumber asli berpindah hop. Urutan uji A sampai E sengaja dibuat dari yang paling sederhana ke yang sengaja gagal, supaya Anda terbiasa membaca gejala sebelum mengubah konfigurasi.
Langkah berikutnya: pelajari **failover dengan Netwatch dan recursive route**, supaya jalur cadangan berpindah sendiri tanpa perlu dimatikan manual seperti di Langkah 4.
π Materi terkait
- Mikrotik : Policy Routing (Memilih Jalur Internet Tertentu) β artikel konsep pasangan praktikum ini, wajib dibaca dulu.
- Mikrotik : Static Route Dasar β dasar rute dan gateway, prasyarat sebelum policy routing.
- Mikrotik : Praktikum Cek Static Route dengan Route Check dan Traceroute β cara membuktikan jalur paket.
- Mikrotik : Firewall Mangle Dasar β dasar mangle yang dipakai untuk `mark-connection` dan `mark-routing`.
- Mikrotik : Praktikum Cek Mangle dengan Packet Mark dan Queue Tree β praktik membaca counter mark.
- Mikrotik : NAT Masquerade agar Client Bisa Internet β keluar internet butuh NAT, bukan hanya rute.
- Mikrotik : Firewall Filter Dasar β pengamanan yang benar, bukan lewat routing rule.
- Mikrotik : DNS dan Default Gateway Dasar β memahami default gateway dan default route.
π Referensi
- MikroTik Documentation β Policy Routing: https://help.mikrotik.com/docs/spaces/ROS/pages/59965508/Policy+Routing
- MikroTik Documentation β IP Routing: https://help.mikrotik.com/docs/spaces/ROS/pages/328084/IP+Routing
- MikroTik Documentation β Mangle: https://help.mikrotik.com/docs/spaces/ROS/pages/48660587/Mangle
- MikroTik Documentation β Common Firewall Matchers and Actions: https://help.mikrotik.com/docs/spaces/ROS/pages/250708064/Common+Firewall+Matchers+and+Actions
- MikroTik Documentation β Packet Flow in RouterOS: https://help.mikrotik.com/docs/spaces/ROS/pages/328238/Packet+Flow+in+RouterOS
- MikroTik Documentation β Building Advanced Firewall: https://help.mikrotik.com/docs/spaces/ROS/pages/48660587/Mangle