Belajar Iptables - Forwarding & Router Firewall
Episode 10 of 23

Belajar Iptables - Forwarding & Router Firewall

Mengamankan mesin yang bertindak sebagai router lewat chain FORWARD: filtering trafik antar interface dengan -i dan -o, policy FORWARD DROP sebagai default, memisahkan segmen LAN DMZ, dan isolasi jaringan tamu yang tidak boleh menjangkau segmen internal

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

Pendahuluan

Di episode 9 kalian membangun NAT untuk menghubungkan LAN ke internet. Sekarang kita angkat satu lapis lebih tinggi: mesin yang sama — atau mesin khusus — diposisikan sebagai router & firewall antar segmen. Di sinilah chain FORWARD bersinar.

Perhatikan pembedanya: INPUT mengamankan mesin itu sendiri, sedangkan FORWARD mengamankan trafik yang hanya lewat. Kalau kalian menaruh aturan guest-isolation di INPUT, aturan itu tidak akan pernah menangkap paket yang diteruskan. Episode ini mengajarkan mindset "firewall untuk jaringan, bukan untuk mesin".

Posisi Chain FORWARD dalam Alur

Dari packet flow episode 2, paket yang tidak ditujukan ke mesin lokal dan tidak berasal dari mesin lokal melewati FORWARD:

100%

Chain FORWARD adalah satu-satunya tempat kebijakan antar-segmen dieksekusi untuk trafik yang lewat. -i menunjukkan interface asal, -o interface tujuan.

Policy FORWARD DROP: Default yang Benar

Langkah pertama membangun router firewall yang sehat: tutup forwarding secara default.

Default drop forwarding
sudo iptables -P FORWARD DROP
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Dengan policy FORWARD DROP, semua trafik yang lewat ditolak kecuali yang diizinkan eksplisit. Baris kedua — pola stateful dari episode 7 — memastikan balasan koneksi yang sudah diizinkan tetap mengalir.

Firewall Antar Segmen: LAN ↔ DMZ

Skenario nyata: tiga interface — eth0 ke internet, eth1 ke segmen LAN, eth2 ke DMZ tempat server web. Kebijakannya:

  • LAN boleh keluar internet.
  • Internet hanya boleh menjangkau server di DMZ (lewat DNAT, episode 9).
  • LAN boleh mengakses server di DMZ, tapi tidak sebaliknya.
Firewall antar segmen
# LAN boleh keluar internet
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
 
# LAN boleh akses DMZ (SSH, web)
sudo iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 80 -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 443 -j ACCEPT
 
# DMZ TIDAK boleh masuk ke LAN
sudo iptables -A FORWARD -i eth2 -o eth1 -j DROP

Perhatikan pola -i ethX -o ethY — ini bahasa arah di chain FORWARD. Aturan "DMZ tidak boleh ke LAN" adalah satu baris DROP dengan arah terbalik.

Note

Jika server DMZ dikompromikan, segmen LAN tetap aman karena tidak ada jalur dari DMZ ke LAN. Inilah esensi pemisahan segmen — bukan sekadar organisasi, tapi pembatasan radius ledakan (blast radius) saat terjadi insiden.

Guest Isolation: Jaringan Tamu Terkurung

Kasus klasik kedua: guest Wi-Fi yang boleh internet tapi tidak boleh menyentuh segmen internal.

Isolasi jaringan tamu
# Guest boleh internet
sudo iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT
 
# Guest TIDAK boleh ke segmen internal mana pun
sudo iptables -A FORWARD -i wlan1 -o eth1 -j DROP
sudo iptables -A FORWARD -i wlan1 -o eth2 -j DROP

Ditambah zone-based stateful untuk balasan:

Stateful untuk guest
sudo iptables -A FORWARD -i eth0 -o wlan1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Aturan terakhir memastikan balasan dari internet sampai ke guest, sementara koneksi baru dari luar menuju guest tetap ditolak. Hasilnya: tamu berselancar bebas, segmen internal tak tersentuh.

Urutan Aturan FORWARD yang Benar

Sesuai first match wins, susun FORWARD dengan pola:

  1. Balasan koneksi yang sah (ESTABLISHED,RELATED) — paling atas.
  2. Deny antar-segmen yang dilarang (guest → internal, DMZ → LAN).
  3. Allow yang diizinkan (LAN → internet, layanan publik di DMZ).
  4. Policy DROP menangkap sisanya di bawah.
Urutan FORWARD yang sehat
sudo iptables -P FORWARD DROP
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -i wlan1 -o eth1 -j DROP
sudo iptables -A FORWARD -i wlan1 -o eth2 -j DROP
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT

Hubungan FORWARD dan NAT

Jangan lupa sinergi dengan episode 9: trafik yang di-DNAT ke server LAN tetap melewati FORWARD setelah PREROUTING. Ruleset lengkap router selalu terdiri dari tiga lapis:

  1. PREROUTING (nat) — DNAT port publik ke server internal.
  2. FORWARD (filter) — izinkan arah dan segmen yang benar.
  3. POSTROUTING (nat) — MASQUERADE/SNAT untuk balasan.

Kalau salah satu lapis hilang, alurnya putus. Inilah alasan kenapa di episode 18 kita akan menguji NAT dengan urutan pengecekan tiga titik yang sama.

Verifikasi Forwarding

Setelah aturan terpasang, uji dari client di segmen tamu dan segmen LAN:

Verifikasi dari client
ip route get 8.8.8.8
ping -c 3 8.8.8.8

Dan pastikan counter FORWARD menunjukkan paket yang benar-benar lewat:

Cek counter FORWARD
sudo iptables -L FORWARD -n -v --line-numbers

Penutup

Inti yang harus dibawa pulang:

  • FORWARD mengamankan trafik yang lewat — bukan untuk mesin lokal.
  • Default yang benar: -P FORWARD DROP + ESTABLISHED,RELATED di awal.
  • Filter antar segmen memakai -i/-o: LAN → internet diizinkan, DMZ → LAN diblokir, guest hanya internet.
  • NAT + FORWARD + POSTROUTING harus bekerja sebagai satu rantai.

Di episode 11 selanjutnya kita akan membahas mangle, TOS & rate limiting — modifikasi paket dengan MARK, TTL, dan TOS di tabel mangle, plus modul limit untuk membatasi laju paket dan melindungi dari flood & brute-force. Sampai jumpa di episode 11!

Belajar Iptables - Forwarding & Router Firewall | Belajar Iptables