Analogi Dulu Sebelum Teknis
Bayangkan router itu seperti pos satpam di pintu masuk komplek perumahan. Setiap kendaraan yang lewat dicek oleh satpam. Satpam punya daftar aturan di buku catatannya:
- Aturan 1: Mobil plat AB 001 sampai AB 010 boleh lewat, tapi hanya ke minimarket.
- Aturan 2: Semua kendaraan lain dilarang masuk.
Satpam membaca buku itu dari atas ke bawah, dan begitu satu aturan cocok, dia langsung bertindak tanpa membaca aturan berikutnya. Itulah cara kerja Firewall Filter MikroTik.
Konsep Dasar yang Wajib Dipahami Dulu
1. Apa itu Chain?
Chain forward digunakan untuk memproses paket yang melewati router, baik dari komputer ke Internet maupun sebaliknya. Ini berbeda dari:
- Chain input: untuk paket yang tujuannya adalah router itu sendiri (misal, kamu login WinBox ke router).
- Chain output: untuk paket yang berasal dari router.
Karena kita mau mengatur akses Internet komputer-komputer di jaringan lokal, maka yang dipakai adalah chain forward.
2. Apa itu Action?
Action accept digunakan untuk meloloskan paket data, action drop untuk membuang paket tanpa memberikan pemberitahuan kepada komputer user, sementara action reject memiliki fungsi yang sama dengan drop namun mengirimkan pesan error kepada user.
Untuk jaringan sekolah, drop lebih umum dipakai karena lebih “senyap”. User tidak tahu apakah diblokir atau koneksinya memang mati.
3. Prinsip Top-to-Bottom
Ini adalah inti dari cara kerja firewall. Firewall Filter akan membaca rule-rule dari atas ke bawah (top to bottom). Jika rule accept sudah membebaskan akses Internet terlebih dahulu, maka rule drop di bawahnya tidak akan berpengaruh.
Implementasi Langkah demi Langkah
Skenario
Router Gateway MikroTik. IP 192.168.1.1 sampai 192.168.1.10 boleh browsing (HTTP/HTTPS). IP lain di jaringan 192.168.1.0/24 diblokir total.
Langkah 1 Buat Rule Accept untuk Browsing
ip firewall filter add chain=forward \
src-address=192.168.1.1-192.168.1.10 \
protocol=tcp \
dst-port=80,443 \
action=accept
Penjelasan parameter:
chain=forward: paket yang melintas (bukan menuju router).src-address=192.168.1.1-192.168.1.10: hanya dari 10 IP ini.protocol=tcp: HTTP dan HTTPS berjalan di atas TCP.dst-port=80,443: port 80 = HTTP, port 443 = HTTPS.action=accept: loloskan.
Port 80 dan 443 itu artinya: 80 untuk alamat yang diketik tanpa “s” (http://), dan 443 untuk yang aman (https://). Browser modern sudah otomatis pakai 443.
Langkah 2 Buat Rule Drop untuk Sisanya
ip firewall filter add chain=forward \
src-address=192.168.1.0/24 \
action=drop
Rule ini bekerja sebagai “jaring terakhir”. Semua paket dari subnet 192.168.1.0/24 yang tidak tertangkap rule accept di atas, langsung dibuang di sini.
Perhatikan: rule ini tidak mencantumkan protocol atau dst-port. Artinya dia menangkap semua jenis paket dari subnet itu.
Langkah 3 Verifikasi Urutan
ip firewall filter print
Hasil yang benar:
0 chain=forward action=accept protocol=tcp src-address=192.168.1.1-192.168.1.10 dst-port=80,443
1 chain=forward action=drop src-address=192.168.1.0/24
Rule nomor 0 harus accept, nomor 1 baru drop. Kalau terbalik, semua orang diblokir termasuk yang seharusnya boleh.
Langkah 4 Tambah Pengecualian untuk Satu IP
Misalnya IP 192.168.1.1 adalah komputer guru, boleh akses apa saja tanpa batasan port.
ip firewall filter add chain=forward \
src-address=192.168.1.1 \
action=accept
Tapi rule ini otomatis masuk di urutan paling bawah. Masalahnya, rule drop di posisi 1 sudah lebih dulu menangkap paket dari 192.168.1.1 sebelum rule baru ini sempat dibaca.
Langkah 5 Pindahkan Rule Pengecualian ke Paling Atas
Rule yang baru ditambahkan harus dipastikan berada pada susunan paling atas, sehingga akses Internet kepada komputer tersebut dapat diberikan terlebih dahulu.
ip firewall filter print
Lihat nomor rule pengecualian, misal nomor 2. Lalu pindahkan:
ip firewall filter move 2 0
Angka 2 adalah nomor rule yang mau dipindah, angka adalah posisi tujuan (paling atas).
Setelah dipindah, urutan yang benar:
0 chain=forward action=accept src-address=192.168.1.1
1 chain=forward action=accept protocol=tcp src-address=192.168.1.1-192.168.1.10 dst-port=80,443
2 chain=forward action=drop src-address=192.168.1.0/24
Langkah 6 Tambah Batasan Waktu (Opsional)
Misal akses internet hanya boleh dari jam 08.00 sampai 17.00, hari Senin sampai Jumat:
ip firewall filter add chain=forward \
src-address=192.168.1.1-192.168.1.10 \
protocol=tcp \
dst-port=80,443 \
action=accept \
time=08:00:00-17:00:00,mon,tue,wed,thu,fri
Di luar jam dan hari itu, rule ini tidak aktif. Paket otomatis jatuh ke rule drop di bawahnya.
Apa yang Bisa Salah (Jebakan Umum)
Jebakan 1: Rule drop di atas rule accept. Ini kesalahan paling sering. Kalau drop ada di posisi 0 dan accept di posisi 1, semua orang langsung diblokir. Satpam coret nama semua orang sebelum sempat cek daftar tamu.
Jebakan 2: Lupa parameter protocol=tcp dan dst-port.
Kalau rule accept hanya berisi src-address tanpa batasan port, maka 10 IP itu bisa akses apa saja, bukan cuma browsing. DNS (port 53), FTP (port 21), semua terbuka.
Jebakan 3: Rule pengecualian tidak dipindah ke atas.
Setelah menambah rule baru lewat CLI, posisinya selalu paling bawah. Kalau lupa move, rule itu tidak pernah terbaca karena rule drop lebih dulu menangkap paket.
Jebakan 4: Parameter time salah format.
Format yang benar adalah 08:00:00-17:00:00,mon,tue,wed,thu,fri. Kalau kamu tulis 08:00-17:00 tanpa detik, RouterOS bisa menolak atau perilakunya tidak terduga di beberapa versi.
Jebakan 5: Tidak verifikasi setelah konfigurasi.
Selalu jalankan ip firewall filter print setelah setiap perubahan. Jangan percaya begitu saja bahwa urutan sudah benar.
Kuis Pemahaman
- Kamu sudah membuat dua rule: rule accept di posisi 0 dan rule drop di posisi 1. Lalu kamu menambah rule pengecualian untuk 192.168.1.5 via CLI. Tanpa perintah
move, apa yang terjadi ketika 192.168.1.5 mencoba akses internet? - Apa bedanya
action=dropdanaction=reject? Dalam konteks jaringan sekolah, mana yang lebih tepat digunakan dan kenapa? - Seorang siswa mengeluh tidak bisa browsing padahal IP-nya masuk dalam range 192.168.1.1-192.168.1.10. Kamu sudah cek urutan rule dan benar. Apa satu hal lain yang perlu dicek dari konfigurasi rule accept-nya?