Gambaran besar dulu
Coba bayangin kamu jadi satpam di gerbang sekolah. Kamu pegang daftar aturan dari kepala sekolah:
- Andi boleh masuk bebas, mau ke mana aja.
- Budi cuma boleh ke perpustakaan.
- Selain itu, semua orang ditolak.
Kamu baca daftar itu dari atas ke bawah. Begitu ketemu nama yang cocok, kamu langsung putuskan: masuk atau ditolak. Sisanya nggak perlu dibaca lagi.
Nah, Firewall Filter di MikroTik kerjanya persis kayak satpam itu. Setiap paket data yang lewat router akan dicek satu per satu dari rule paling atas. Begitu cocok, langsung dieksekusi (diterima atau dibuang). Rule di bawahnya diabaikan.
Ini yang disebut prinsip top to bottom processing. Salah taruh urutan rule? Bisa-bisa PC yang harusnya diblokir malah bebas, atau sebaliknya, semua orang kena blokir.
Kondisi jaringan kita
Sebelum mulai, pastikan kamu paham kondisi awalnya:
- MikroTik sudah jalan sebagai internet gateway (NAT masquerade aktif di
wlan1sebagai jalur ke internet). - Jaringan lokal pakai subnet
192.168.1.0/24di interfaceether2. - PC1 punya IP
192.168.1.1, PC2 punya IP192.168.1.2.
Target kita: PC1 bebas akses apa saja. PC2 cuma boleh browsing (buka website). Sisanya, semua traffic dari jaringan lokal diblokir.
Langkah-langkah konfigurasi
Langkah 1 — Izinkan PC1 akses penuh
/ip firewall filter add chain=forward src-address=192.168.1.1 action=accept
Penjelasan baris per baris:
chain=forwardartinya rule ini berlaku untuk paket yang melewati router (dari jaringan lokal ke internet, atau sebaliknya). Bukan paket yang ditujukan ke router itu sendiri.src-address=192.168.1.1artinya rule ini cuma cocok kalau paket berasal dari IP 192.168.1.1, yaitu PC1.action=acceptartinya paket yang cocok langsung diizinkan lewat.
Rule ini harus di posisi paling atas. Kenapa? Karena kalau nanti ada rule “blokir semua” di atasnya, PC1 ikut kena blokir duluan sebelum sempat diperiksa rule ini.
Langkah 2 — Izinkan PC2 hanya browsing
/ip firewall filter add chain=forward src-address=192.168.1.2 protocol=tcp dst-port=80,443 action=accept
Dua parameter tambahan di sini:
protocol=tcpkarena HTTP dan HTTPS pakai protokol TCP.dst-port=80,443artinya cuma traffic yang menuju port 80 (HTTP, buka website biasa) dan port 443 (HTTPS, buka website yang terenkripsi/ada gembok) yang diizinkan.
Jadi PC2 bisa buka Google, YouTube, atau situs apa pun lewat browser. Tapi kalau coba ping, download lewat FTP, atau akses game online? Ditolak. Karena ping pakai protokol ICMP (bukan TCP) dan port-nya beda.
Langkah 3 — Izinkan DNS untuk semua PC
/ip firewall filter add chain=forward src-address=192.168.1.0/24 protocol=udp dst-port=53 action=accept
Ini sering dilupakan dan jadi sumber masalah. DNS itu ibarat buku telepon internet. Waktu kamu ketik google.com di browser, komputer harus bertanya dulu ke server DNS: “IP-nya google.com berapa sih?” Proses tanya-jawab ini pakai protokol UDP port 53.
Kalau rule DNS ini nggak ada, PC2 tetap nggak bisa browsing meskipun port 80 dan 443 sudah diizinkan. Kenapa? Karena browser nggak tahu harus ke IP mana. Ketik google.com, hasilnya cuma “DNS not found” atau “Server not found.”
Perhatikan src-address=192.168.1.0/24, artinya rule ini berlaku untuk seluruh jaringan lokal (semua IP dari 192.168.1.1 sampai 192.168.1.254). Semua PC butuh DNS.
Langkah 4 — Blokir semua traffic lainnya
/ip firewall filter add chain=forward src-address=192.168.1.0/24 action=drop
Ini rule “sapu jagat.” Semua paket dari jaringan lokal yang nggak cocok dengan rule di atasnya akan kena drop (dibuang diam-diam, tanpa pemberitahuan ke pengirim).
Rule ini WAJIB di posisi paling bawah. Kalau kamu taruh di atas, semua traffic langsung kena drop duluan, dan rule-rule izin di bawahnya nggak pernah tersentuh.
Urutan final dan verifikasi
Cek urutan rule kamu:
/ip firewall filter print
Hasilnya harus kayak gini (perhatikan nomor urut):
| # | Chain | Src-Address | Protocol | Dst-Port | Action |
|---|---|---|---|---|---|
| 0 | forward | 192.168.1.1 | accept | ||
| 1 | forward | 192.168.1.2 | tcp | 80,443 | accept |
| 2 | forward | 192.168.1.0/24 | udp | 53 | accept |
| 3 | forward | 192.168.1.0/24 | drop |
Cara baca tabel ini: paket masuk, dicek rule #0 dulu. Nggak cocok? Turun ke #1. Masih nggak cocok? Ke #2. Tetap nggak cocok? Kena #3, di-drop.
Pengujian:
Dari PC1 (192.168.1.1):
- Buka browser → berhasil (kena rule #0, accept semua)
- Ping 8.8.8.8 → berhasil
- Akses FTP → berhasil
- Semua layanan → berhasil
Dari PC2 (192.168.1.2):
- Buka browser → berhasil (kena rule #1 untuk HTTP/HTTPS, dan rule #2 untuk DNS)
- Ping 8.8.8.8 → gagal (ping pakai ICMP, nggak cocok rule #1 dan #2, akhirnya kena rule #3, drop)
- Akses game online → gagal (port-nya bukan 80/443)
Dari PC lain misal 192.168.1.10:
- Buka browser → bisa (DNS rule #2 lolos, tapi HTTP/HTTPS… nggak ada rule khusus, kena drop di #3). Eh, tunggu. Bener nggak? Coba pikir lagi.
Sebenarnya PC lain (misal .10) tetap bisa resolve DNS karena rule #2 mengizinkan UDP 53 dari seluruh subnet. Tapi traffic HTTP/HTTPS-nya kena drop di rule #3 karena nggak ada rule accept untuk IP itu. Jadi hasilnya: DNS jalan, tapi browsing tetap gagal. Browser akan tampil loading lama lalu error.
Jebakan yang sering bikin siswa pusing
1. Urutan rule terbalik
Ini kesalahan nomor satu. Misal kamu taruh rule drop di atas rule accept PC1:
# SALAH — drop dulu, accept di bawah
0: drop → 192.168.1.0/24
1: accept → 192.168.1.1
Paket dari PC1 masuk, dicek rule #0: “Apakah dari 192.168.1.0/24?” Ya, cocok (karena .1 termasuk subnet itu). Langsung di-drop. Rule #1 nggak pernah diperiksa. PC1 nggak bisa ngapa-ngapain.
2. Lupa rule DNS
PC2 sudah diizinkan port 80 dan 443 tapi nggak bisa buka website? Cek dulu, rule DNS-nya ada belum. Tanpa DNS, browser nggak bisa menerjemahkan nama domain jadi IP.
3. Salah chain
chain=forwarduntuk traffic yang melewati router (misal dari PC ke internet).chain=inputuntuk traffic yang ditujukan ke router itu sendiri (misal kamu mau akses WebFig atau ping ke router).chain=outputuntuk traffic yang keluar dari router sendiri.
Kalau kamu mau blokir PC akses internet tapi pakai chain=input, nggak akan berpengaruh. Karena traffic browsing PC itu melewati router (forward), bukan menuju router (input).
4. Perbedaan drop dan reject
action=dropdiam-diam membuang paket. Pengirim nggak dapat respons apa-apa, cuma nunggu sampai timeout.action=rejectmembuang paket tapi kirim pesan balik ke pengirim: “paketmu ditolak.” Lebih sopan, tapi bisa kasih info ke penyerang bahwa ada firewall aktif.
Untuk lab sekolah, pakai drop sudah cukup.
Konfigurasi lewat WinBox
Kalau lebih nyaman pakai GUI:
- Buka WinBox, login ke router.
- Masuk ke menu IP → Firewall → tab Filter Rules.
- Klik tombol + (tambah) untuk bikin rule baru.
- Di tab General: pilih Chain = forward, isi Src. Address sesuai kebutuhan, isi Protocol dan Dst. Port kalau perlu.
- Di tab Action: pilih Action = accept atau drop.
- Setelah semua rule dibuat, pastikan urutannya benar dengan drag-and-drop. Rule bisa digeser naik-turun. Rule paling atas = diperiksa duluan.
Kuis pemahaman
- PC3 (192.168.1.3) mengeluh nggak bisa buka website, padahal rule accept untuk port 80,443 sudah dibuat. Setelah dicek, ternyata rule drop ada di urutan lebih atas daripada rule accept PC3. Apa yang terjadi dan bagaimana cara memperbaikinya?
- Kenapa rule DNS (UDP port 53) perlu dibuat terpisah, padahal PC2 sudah diizinkan akses port 80 dan 443?
- Kalau kamu ingin PC2 bisa browsing DAN bisa ping (ICMP), rule tambahan apa yang perlu kamu buat? Tulis perintah CLI-nya.