Belajar Iptables - NAT: Masquerade, SNAT & DNAT
Episode 9 of 23

Belajar Iptables - NAT: Masquerade, SNAT & DNAT

Membangun Network Address Translation dengan tabel nat: MASQUERADE untuk IP WAN dinamis, SNAT untuk IP statis, dan DNAT untuk port forwarding, lengkap dengan internet sharing dan forwarding 80/443 ke server LAN serta aktivasi net.ipv4.ip_forward

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

Pendahuluan

Di episode 8 kalian sudah bisa mempertahankan ruleset melewati reboot. Sekarang kita masuk ke fungsi paling "keren" dari iptables: NAT — mengubah alamat di dalam paket. NAT adalah alasan satu IP publik bisa melayani puluhan perangkat di rumah, dan alasan sebuah router Linux bisa menjadi "gateway internet" tanpa alat khusus.

Kunci untuk menguasai NAT adalah kembali ke packet flow episode 2: DNAT terjadi di PREROUTING (mengubah alamat tujuan, untuk paket masuk), sedangkan SNAT/MASQUERADE terjadi di POSTROUTING (mengubah alamat sumber, untuk paket keluar). Kalian akan melihat dua kata ini berulang kali di episode ini.

Aktivasi IP Forwarding

NAT tidak berarti apa-apa tanpa routing — mesin harus bersedia meneruskan paket antar interface. Di Linux ini dikontrol net.ipv4.ip_forward:

Aktifkan ip_forward
sudo sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

Perintah pertama berlaku sementara, baris kedua membuatnya persisten. Perhatikan: NAT mengubah alamat, tapi routing yang memindahkan paket — keduanya harus jalan berbarengan.

MASQUERADE: NAT untuk IP WAN Dinamis

MASQUERADE mengubah alamat sumber paket menjadi alamat IP interface keluar — dan otomatis mengikuti IP interface itu jika berubah (khas koneksi DHCP/PPPoE):

Internet sharing dengan MASQUERADE
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Baca aturannya: "setiap paket yang keluar melalui eth0, ubah alamat sumbernya menjadi IP eth0". Sekarang perangkat di LAN yang melewati mesin ini akan terlihat berasal dari satu IP publik.

SNAT: NAT untuk IP Statis

SNAT melakukan hal yang sama, tapi dengan alamat sumber eksplisit — untuk IP publik statis yang tidak berubah:

SNAT dengan IP statis
sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.10
AspekMASQUERADESNAT
Alamat sumberDiambil otomatis dari interfaceDitetapkan manual dengan --to-source
IP WAN berubahIkut berubah otomatisTidak ikut (harus diubah manual)
OverheadSedikit lebih tinggi (cek IP tiap paket)Minimal
Kapan dipakaiDHCP, PPPoE, cloudIP statis, performa terbaik

Aturan praktis: pakai MASQUERADE kalau IP WAN bisa berubah; pakai SNAT kalau IP-nya statis dan kalian butuh kontrol penuh.

DNAT: Port Forwarding ke Server LAN

DNAT mengubah alamat tujuan di chain PREROUTING — inilah yang memungkinkan permintaan ke IP publik:80 diteruskan ke server web di dalam LAN:

Port forwarding 80 & 443
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.50:80
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.50:443

Baca aturannya: "paket TCP yang masuk lewat eth0 menuju port 80, ganti alamat tujuannya menjadi 192.168.1.50:80". Tapi tunggu — ada satu aturan lagi yang wajib:

Forward trafik yang sudah di-DNAT
sudo iptables -A FORWARD -p tcp -d 192.168.1.50 --dport 80 -j ACCEPT
sudo iptables -A FORWARD -p tcp -d 192.168.1.50 --dport 443 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Setelah DNAT mengubah tujuan, paket harus di-forward — dan balasan dari server LAN perlu MASQUERADE supaya sampai kembali ke client luar. Inilah kombinasi DNAT + FORWARD + MASQUERADE yang menjadi mesin port forwarding:

100%

NAT Satu Arah, Bukan Dua

Kesalahan konsep paling umum: mengira NAT membuka semua port. DNAT hanya meneruskan port yang kalian sebutkan. Port lain tetap tidak di-forward. Dan kebalikannya — kalian harus tidak menaruh aturan DNAT untuk layanan yang ingin ditutup dari luar.

Kombinasi tipikal router rumah jadi nyata sekarang: MASQUERADE keluar untuk internet sharing, DNAT masuk untuk beberapa port yang sengaja dibuka (game server, web server), dan semua port lain ditutup oleh policy FORWARD DROP.

Membuat NAT Persisten

NAT yang sudah diuji harus disimpan (episode 8):

Simpan ruleset NAT
sudo iptables-save > /etc/iptables/rules.v4
sudo netfilter-persistent save

Common Pitfalls

  • Lupa mengaktifkan ip_forward — aturan NAT sempurna tapi tidak ada paket yang diteruskan.
  • SNAT/MASQUERADE salah chain — harus di POSTROUTING, bukan PREROUTING atau INPUT.
  • DNAT tanpa aturan FORWARD — paket berhasil diubah tujuannya tapi di-DROP di FORWARD.
  • Policy FORWARD DROP menimpa DNAT — selalu sediakan aturan ACCEPT spesifik untuk trafik yang di-DNAT, dan letakkan di atas policy.

Tip

Setiap kali NAT "tidak bekerja", periksa tiga hal berurutan: (1) apakah ip_forward=1, (2) apakah aturan DNAT ada di PREROUTING dengan --to-destination yang benar, (3) apakah FORWARD mengizinkan paket tujuan hasil DNAT. 80% kasus NAT rusak ada di salah satu dari tiga titik ini — kita kembali ke sini di episode 18.

Penutup

Inti yang harus dibawa pulang:

  • NAT bekerja di tabel nat: DNAT di PREROUTING (ubah tujuan), SNAT/MASQUERADE di POSTROUTING (ubah sumber).
  • MASQUERADE untuk IP dinamis, SNAT untuk IP statis.
  • Port forwarding = DNAT + aturan FORWARD ACCEPT + MASQUERADE balasan.
  • Aktifkan net.ipv4.ip_forward=1 dan simpan ruleset ke persistensi.

Di episode 10 selanjutnya kita akan membahas forwarding & router firewall — chain FORWARD untuk mesin yang bertindak sebagai router, filtering antar segmen LAN ↔ DMZ dengan -i/-o, policy FORWARD DROP, dan isolasi jaringan tamu (guest isolation). Sampai jumpa di episode 10!