Mikrotik : Policy Routing (Memilih Jalur Internet Tertentu)
Policy routing adalah teknik untuk mengarahkan trafik tertentu ke jalur internet pilihan, alih-alih selalu ikut jalur default. Di RouterOS, teknik ini dibangun dari tiga komponen: routing table, routing rule, dan mangle.
π― Tujuan
- Memahami kenapa satu router bisa punya lebih dari satu jalur internet.
- Bisa membuat **routing table** tambahan di RouterOS v7.
- Bisa mengarahkan trafik tertentu (per IP, per port, per protokol) ke jalur pilihan.
- Bisa membuktikan lewat verifikasi bahwa trafik benar-benar keluar lewat jalur yang dimaksud.
π Konteks nyata
Bayangkan jalan di kota. Ada **jalan tol** yang cepat tapi berbayar, dan ada **jalan biasa** yang gratis tapi padat. Kalau semua kendaraan diarahkan ke jalan yang sama, macet. Policy routing itu seperti **membuat jalur khusus**: truk logistik lewat tol, sepeda lewat jalan biasa.
Di jaringan sekolah, "jalan" itu adalah jalur internet. Sekolah sering punya dua: **fiber** (cepat, kuota terbatas) dan **4G/backup** (lebih lambat, kuota lega). Tanpa policy routing, semua trafik keluar lewat jalur default yang sama. Dengan policy routing, kita bisa bilang: "trafik ujian berbasis komputer lewat fiber, trafik browsing siswa lewat jalur biasa."
π‘ Tips: Analogi paling gampang β routing table itu **peta alternatif**, routing rule itu **papan petunjuk** yang menyuruh kendaraan tertentu memakai peta alternatif tadi.
π§ Konsep singkat
Secara bawaan RouterOS hanya punya **satu** routing table bernama `main`. Semua rute (connected, static, DHCP) masuk ke situ, dan semua paket dicari jalurnya di situ.
Policy routing bekerja dengan pola tiga langkah:
- Buat **routing table** baru sebagai "peta alternatif".
- Isi tabel itu dengan **rute** menuju jalur yang kita mau.
- Paksa trafik tertentu supaya **mencari jalur di tabel itu**, bukan di `main`.
Langkah ketiga bisa dikerjakan dengan dua cara: **routing rule** (cepat, pakai parameter dasar) atau **mangle mark-routing** (lebih fleksibel, bisa per koneksi maupun per paket).
β οΈ Hati-hati: Jangan mencampur routing rule dan mangle mark-routing tanpa paham urutannya. Mangle punya prioritas lebih tinggi β kalau mangle sudah menandai paket dan tabelnya bisa me-resolve tujuan, routing rule tidak akan pernah melihat paket itu.
π§© Istilah penting
- **Routing table** β kumpulan rute untuk mencari jalur. Bawaan: `main`.
- **Routing rule** β aturan "paket dengan ciri X, cari jalurnya di tabel Y".
- **Routing mark** β label yang ditempel mangle ke paket atau koneksi, lalu dipakai untuk memilih tabel.
- **`lookup`** β cari di tabel yang ditunjuk; kalau gagal, boleh lanjut ke `main`.
- **`lookup-only-in-table`** β cari **hanya** di tabel itu; kalau gagal, paket dibuang.
- **`gateway@main`** β cara menulis gateway di RouterOS v7 saat gateway-nya berasal dari tabel `main`, bukan dari tabel yang sedang diisi.
- **RIB dan FIB** β RIB adalah daftar lengkap semua rute; FIB adalah salinan yang dipakai untuk meneruskan paket.
- **ECMP** β beberapa jalur dengan biaya sama, biasa dipakai untuk load balancing.
π§ Praktik: Policy Routing
Contoh skenario lab: router punya dua jalur internet.
| Jalur | Interface | Gateway | Dipakai untuk |
|---|---|---|---|
| ISP-A (fiber) | ether1 | 192.168.10.1 | default semua trafik |
| ISP-B (backup) | ether2 | 192.168.20.1 | khusus trafik ujian dari 10.10.10.50 |
πΉ Langkah 1: pastikan kedua jalur benar-benar hidup
Sebelum bermain policy routing, pastikan keduanya bisa dipakai.
/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 IP di kedua interface benar, default route masih mengarah ke jalur utama, dan gateway jalur kedua bisa di-ping. Kalau gateway jalur kedua saja tidak bisa di-ping, policy routing pasti gagal.
π Angka penting: RouterOS membatasi jumlah routing table maksimal **4096** tabel unik. Untuk lab sekolah, 2β3 tabel sudah lebih dari cukup.
πΉ Langkah 2: buat routing table baru
Di RouterOS v7, tabel harus **didefinisikan lebih dulu** sebelum dipakai di mana pun.
/routing table add name=jalur-ujian fib
Parameter `fib` menandakan tabel ini ikut dipakai untuk meneruskan paket. Di RouterOS v6 dulu kita hanya menambah `routing-mark`; di v7 tabel harus dibuat eksplisit lebih dulu.
πΉ Langkah 3: isi rute di tabel baru
Sekarang isi tabel `jalur-ujian` dengan rute menuju jalur ISP-B.
/ip route add dst-address=0.0.0.0/0 gateway=192.168.20.1@main routing-table=jalur-ujian distance=1 comment="default via ISP-B"
Perhatikan tulisan `@main`. Artinya: "gateway 192.168.20.1 ini ada di tabel main, ya." Kalau ditulis polos tanpa `@main`, RouterOS v7 akan mengeluh karena gateway tersebut tidak ditemukan di tabel `jalur-ujian`.
π‘ Tips: Pastikan tabel `main` juga punya rute yang bisa me-resolve tujuan dan gateway. Tabel buatan pengguna tetap butuh `main` sebagai penopang.
πΉ Langkah 4: arahkan trafik dengan routing rule
Ini langkah "papan petunjuk"-nya. Kita suruh trafik dari 10.10.10.50 mencari jalur di tabel `jalur-ujian`.
/routing rule add src-address=10.10.10.50 action=lookup-only-in-table table=jalur-ujian comment="ujian via ISP-B"
Kalau tabel tersebut gagal me-resolve tujuan, paket langsung dibuang. Untuk setup yang butuh cadangan, pakai `action=lookup` supaya trafik bisa kembali ke tabel `main` saat jalur khusus mati.
/routing rule add src-address=10.10.10.50 action=lookup table=jalur-ujian comment="ujian via ISP-B, fallback ke main"
Routing rule juga bisa dipakai menyaring sederhana, misalnya menolak akses satu pelanggan ke jaringan tertentu.
/routing rule add interface=ether4 dst-address=192.168.1.0/24 action=drop comment="blokir akses ke LAN 1"
πΉ Langkah 5: alternatif dengan mangle mark-routing
Kalau kriterianya lebih rumit (per port, per protokol, atau ingin seluruh anggota koneksi ikut satu jalur), pakai mangle.
/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="tandai koneksi ujian"
add chain=prerouting connection-mark=conn-ujian action=mark-routing new-routing-mark=jalur-ujian passthrough=no comment="koneksi ujian 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 koneksi yang sama otomatis ikut jalur yang sama.
β οΈ Hati-hati: FastTrack hanya bekerja di tabel `main`. Kalau ada rule FastTrack yang menangkap koneksi tersebut, paket akan melewati mangle dan policy routing tidak jalan. Pastikan koneksi yang mau diatur **tidak** di-fasttrack, atau pindahkan aturan FastTrack-nya.
π Angka penting: Packet mark dibatasi maksimal **4096** entri unik. Melebihi itu akan muncul error "bad new packet mark".
πΉ Langkah 6: uji dan pantau
Cek tabel, cek rute mana yang aktif, lalu uji traceroute dari sumber yang benar.
/ip route print detail where routing-table=jalur-ujian
/routing rule print
/tool traceroute 8.8.8.8 src-address=10.10.10.50
/ip firewall mangle print stats
πΉ Langkah 7: lewat Winbox
Untuk yang lebih nyaman pakai tampilan grafis:
- Buka **IP β Routes**, tambahkan rute baru, isi **Routing Table** = `jalur-ujian`.
- Buka **IP β Firewall β Mangle**, tambahkan dua rule seperti langkah 5.
- Untuk routing rule, buka menu **Routing β Rules** (RouterOS v7).
- Klik **Apply**, lalu cek kolom **Active** dan **counter** untuk memastikan rule terpakai.
π Dipakai di dunia kerja
- **Sekolah:** lab ujian berbasis komputer dipisahkan dari trafik siswa yang streaming, supaya pengiriman jawaban tidak tersendat saat server ujian diakses bersamaan.
- **Kantor:** trafik rapat video (Zoom/Meet) diarahkan ke jalur dengan latency rendah, sementara unduhan besar lewat jalur lain agar meeting tidak putus-putus.
- **ISP dan warnet:** paket pelanggan tertentu diarahkan ke uplink yang berbeda supaya beban antar jalur seimbang dan tidak ada satu link yang penuh.
- **Industri:** jalur cadangan (failover) dipakai otomatis saat link utama putus, sehingga mesin produksi atau kasir tetap terhubung ke server pusat.
- **Multi-ISP untuk layanan publik:** trafik ke layanan tertentu (misalnya payment gateway) dipaksa lewat ISP yang punya rute paling stabil, agar transaksi tidak gagal.
- **Lab jaringan SMK:** siswa belajar membaca jalur paket dan membuktikan sendiri lewat traceroute bahwa teori routing benar-benar bekerja.
β Verifikasi
Jalankan urutan ini setelah konfigurasi. Kalau semua hijau, policy routing sudah berjalan.
- Cek tabel sudah ada:
/routing table print
- Cek rute di tabel khusus aktif:
/ip route print where routing-table=jalur-ujian
- Cek router bisa me-resolve tujuan dari tabel itu:
/ip route check 8.8.8.8 routing-table=jalur-ujian
- Uji jalur nyata dari sumber yang ditandai:
/tool traceroute 8.8.8.8 src-address=10.10.10.50
- Cek rule benar-benar kena:
/routing rule print stats
π§ͺ Uji cepat: Bandingkan traceroute dari IP yang ditandai dan dari IP lain. Kalau hop pertamanya berbeda, policy routing Anda bekerja.
β οΈ Kesalahan umum & troubleshooting
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| RouterOS menolak rute baru | Gateway ditulis tanpa `@main` | Tulis `gateway=IP@main` |
| Tabel tidak bisa dipakai | Lupa `/routing table add ... fib` | Buat tabel lebih dulu |
| Trafik tetap lewat jalur lama | Ada FastTrack menangkap koneksi | Kecualikan koneksi itu dari FastTrack |
| Internet mati total saat jalur khusus down | Pakai `lookup-only-in-table` tanpa cadangan | Ganti ke `action=lookup` |
| Rule tidak berpengaruh | Urutan rule salah atau `passthrough=no` terlalu cepat | Periksa urutan dan passthrough |
| Ping ke gateway jalur kedua gagal | Gateway memang mati atau IP salah | Perbaiki jalur dulu sebelum policy routing |
π₯ Kasus nyata: Di sebuah SMK, lab komputer punya dua jalur: fiber 100 Mbps dan 4G 20 Mbps. Trafik ujian diarahkan ke 4G supaya tidak berebut dengan streaming siswa. Suatu hari gateway 4G berganti IP dari pihak operator, sementara rute di tabel `jalur-ujian` masih memakai IP lama. Akibatnya seluruh paket ujian terbuang dan siswa tidak bisa mengirim jawaban. Akar masalahnya bukan konsep policy routing, tetapi tabel khusus yang tidak punya **rute cadangan**. Perbaikannya: ubah action dari `lookup-only-in-table` menjadi `lookup`, sehingga ketika jalur khusus mati, trafik otomatis kembali ke jalur utama.
β οΈ Hati-hati: Setelah mengubah rule routing dari jarak jauh, pastikan Anda masih bisa mengakses router. Salah menulis rule bisa mengunci akses manajemen Anda sendiri.
π Catatan keamanan & etika
- Routing rule dengan `action=drop` bisa menolak trafik, tetapi **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 memantau kebiasaan orang lain masuk wilayah privasi. Lakukan hanya dengan izin dan tujuan yang jelas.
- Selalu catat konfigurasi yang diubah (`comment`) supaya teknisi berikutnya tidak menebak-nebak.
π Kesimpulan
Policy routing = **peta alternatif (routing table) + papan petunjuk (rule atau mark)**. Kuncinya ada tiga: buat tabel lebih dulu, isi rute dengan benar, lalu paksa trafik memilih tabel itu. Jangan lupa siapkan rute cadangan supaya jaringan tidak mati total saat jalur khusus bermasalah.
Langkah berikutnya: pelajari **failover dengan Netwatch dan recursive route**, supaya jalur cadangan berpindah otomatis tanpa perlu diubah manual.
π Materi terkait
- 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, dipakai untuk `mark-routing`.
- Mikrotik : Praktikum Cek Mangle dengan Packet Mark dan Queue Tree β praktik membaca 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.
- Mikrotik : Queue Tree Lanjutan (Hierarchical Queue dan Parent) β mengatur bandwidth setelah jalur dipilih.
π 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