Belajar Iptables - Konsep Dasar: Tables, Chains & Packet Flow
Episode 2 of 23

Belajar Iptables - Konsep Dasar: Tables, Chains & Packet Flow

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

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

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.

Lima Tabel di Netfilter

Sebuah tabel adalah kumpulan chain dengan tujuan yang sama. iptables membawa lima tabel standar:

TabelFungsiChain yang terlibat
filterMenentukan terima atau tolak paketINPUT, FORWARD, OUTPUT
natMengubah alamat (DNAT/SNAT/MASQUERADE)PREROUTING, INPUT, OUTPUT, POSTROUTING
mangleMemodifikasi field paket (TTL, TOS, MARK)Semua chain
rawMelewati connection tracking (NOTRACK)PREROUTING, OUTPUT
securityLabel MAC/SELinux untuk kebijakanINPUT, 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.

Chain: Built-in dan User-Defined

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:

List semua chain tabel filter
iptables -L -n -v

Output memperlihatkan chain INPUT, FORWARD, OUTPUT beserta policy default dan aturan di dalamnya (jika ada).

Packet Flow: Perjalanan Sebuah Paket

Ini bagian yang paling menentukan pemahaman kalian. Setiap paket yang masuk, keluar, atau melewati mesin Linux melewati urutan hook tertentu:

100%

Aturan-aturan tabel dieksekusi berurutan dalam satu hook:

  • PREROUTING: rawmanglenat (DNAT). Di sinilah port forwarding mengubah alamat tujuan.
  • INPUT: manglefilter. Kebijakan utama firewall untuk trafik menuju mesin.
  • FORWARD: manglefilter. Firewall untuk trafik yang diteruskan (router).
  • OUTPUT: rawmanglenatfilter. Paket yang lahir dari proses lokal.
  • POSTROUTING: manglenat (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.

Membuktikan Alur dengan Contoh

Ambil contoh sederhana: mesin dengan IP 192.168.1.10 mengirim permintaan HTTP keluar.

  1. Paket lahir di proses lokal → masuk chain OUTPUT (tabel rawmanglenatfilter).
  2. Keputusan routing menentukan interface keluar dan gateway.
  3. Paket melewati POSTROUTING → di sini rule -t nat -A POSTROUTING -j MASQUERADE bisa mengubah alamat sumbernya.
  4. Paket keluar ke internet.

Sekarang bayangkan arah sebaliknya — balasan dari server web masuk:

  1. Paket tiba di interface → chain PREROUTING (raw → mangle → nat).
  2. Keputusan routing: tujuannya IP lokal → masuk chain INPUT (mangle → filter).
  3. Rule -A INPUT -p tcp --dport 80 -j ACCEPT memutuskan nasibnya.
  4. Paket diserahkan ke proses aplikasi.

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.

Menghitung Aturan: First Match Wins

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.

Urutan rule penting
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP
iptables -L -n --line-numbers

Di 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.

Penutup

Inti yang harus dibawa pulang:

  • iptables punya lima tabelfilter, nat, mangle, raw, security — masing-masing dengan fungsi dan chain-nya sendiri.
  • Chain built-in: INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING, plus chain user-defined untuk penataan.
  • Packet flow inti: PREROUTING → keputusan routing → INPUT/FORWARD → OUTPUT → POSTROUTING.
  • Rule dieksekusi dengan prinsip first match wins — urutan adalah segalanya.

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!