Memahami arsitektur iptables: lima tabel filter nat mangle raw dan security, chain built-in INPUT OUTPUT FORWARD beserta chain user-defined, serta jalur lengkap sebuah paket dari PREROUTING ke POSTROUTING yang menjadi fondasi semua episode berikutnya

Setelah di episode 1 kita memahami sejarah netfilter dan posisi iptables di ekosistem firewall Linux, sekarang saatnya membedah fondasi yang paling penting: tabel, chains, dan packet flow. Semua perintah iptables di episode-episode berikutnya — -A INPUT, -t nat -A POSTROUTING, -j MASQUERADE — hanya masuk akal kalau kalian paham di mana aturan itu dipasang dan kapan aturan itu dieksekusi.
Analogi paling sederhana: bayangkan sebuah bandara. Paket adalah penumpang, tabel adalah departemen yang berbeda (imigrasi, bea cukai, keamanan), dan chain adalah pintu-pintu yang harus dilewati penumpang dalam urutan tertentu. Memasang aturan di tempat yang salah sama dengan menaruh petugas imigrasi di pintu keluar — kebijakannya tidak pernah kena sasaran.
Sebuah tabel adalah kumpulan chain dengan tujuan yang sama. iptables membawa lima tabel standar:
| Tabel | Fungsi | Chain yang terlibat |
|---|---|---|
filter | Menentukan terima atau tolak paket | INPUT, FORWARD, OUTPUT |
nat | Mengubah alamat (DNAT/SNAT/MASQUERADE) | PREROUTING, INPUT, OUTPUT, POSTROUTING |
mangle | Memodifikasi field paket (TTL, TOS, MARK) | Semua chain |
raw | Melewati connection tracking (NOTRACK) | PREROUTING, OUTPUT |
security | Label MAC/SELinux untuk kebijakan | INPUT, FORWARD, OUTPUT |
Tabel filter adalah default — perintah iptables -A INPUT ... tanpa -t berarti bekerja di tabel filter. Tabel nat kita eksplor penuh di episode 9, mangle di episode 11, raw di episode 7 dan 16.
Sebuah chain adalah daftar aturan berurutan. Ada chain built-in yang melekat pada hook kernel, dan chain user-defined yang kita buat sendiri untuk menata ruleset (dibahas di episode 17).
INPUT — paket yang ditujukan ke mesin lokal.OUTPUT — paket yang dihasilkan mesin lokal.FORWARD — paket yang melewati mesin (routing, bukan untuk lokal).PREROUTING — paket baru masuk, sebelum keputusan routing.POSTROUTING — paket akan keluar, setelah keputusan routing.Melihat isi semua chain di tabel filter:
iptables -L -n -vOutput memperlihatkan chain INPUT, FORWARD, OUTPUT beserta policy default dan aturan di dalamnya (jika ada).
Ini bagian yang paling menentukan pemahaman kalian. Setiap paket yang masuk, keluar, atau melewati mesin Linux melewati urutan hook tertentu:
Aturan-aturan tabel dieksekusi berurutan dalam satu hook:
raw → mangle → nat (DNAT). Di sinilah port forwarding mengubah alamat tujuan.mangle → filter. Kebijakan utama firewall untuk trafik menuju mesin.mangle → filter. Firewall untuk trafik yang diteruskan (router).raw → mangle → nat → filter. Paket yang lahir dari proses lokal.mangle → nat (SNAT/MASQUERADE). Alamat sumber diubah di sini.Tip
Connection tracking (conntrack) berjalan setelah chain raw di PREROUTING dan OUTPUT. Itulah mengapa -j NOTRACK di tabel raw benar-benar bisa menonaktifkan tracking untuk paket tertentu — kita manfaatkan trik ini di episode 7 dan 16.
Ambil contoh sederhana: mesin dengan IP 192.168.1.10 mengirim permintaan HTTP keluar.
raw → mangle → nat → filter).-t nat -A POSTROUTING -j MASQUERADE bisa mengubah alamat sumbernya.Sekarang bayangkan arah sebaliknya — balasan dari server web masuk:
-A INPUT -p tcp --dport 80 -j ACCEPT memutuskan nasibnya.Kesalahan paling umum pemula adalah menempatkan aturan di chain yang salah. Contoh klasik: memakai INPUT untuk paket yang seharusnya di-forward ke host lain. Akibatnya firewall tampak "tidak bekerja" padahal rule-nya benar secara sintaks.
Di dalam satu chain, aturan diperiksa dari atas ke bawah dan aturan pertama yang cocok (match) menentukan hasil — inilah prinsip first match wins. Perintah-perintah untuk memanipulasi urutan ini (-A, -I, -D, -R) akan kita pelajari di episode 6.
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP
iptables -L -n --line-numbersDi sini SSH di-ACCEPT lebih dulu, lalu sisanya DROP. Kalau urutannya dibalik, SSH tidak akan pernah cocok dengan rule ACCEPT karena sudah di-DROP lebih awal.
Inti yang harus dibawa pulang:
filter, nat, mangle, raw, security — masing-masing dengan fungsi dan chain-nya sendiri.INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING, plus chain user-defined untuk penataan.Di episode 3 selanjutnya kita akan membahas instalasi & verifikasi iptables secara menyeluruh — pemasangan lewat package manager di Debian/Ubuntu dan RHEL, pengecekan versi 1.8.x, serta perbedaan backend iptables-nft vs iptables-legacy beserta update-alternatives. Pastikan kalian sudah hafal alur packet flow ini, karena hampir semua perintah di series ini menunjuk ke chain-chain di atas!