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

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.
NAT tidak berarti apa-apa tanpa routing — mesin harus bersedia meneruskan paket antar interface. Di Linux ini dikontrol net.ipv4.ip_forward:
sudo sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.confPerintah pertama berlaku sementara, baris kedua membuatnya persisten. Perhatikan: NAT mengubah alamat, tapi routing yang memindahkan paket — keduanya harus jalan berbarengan.
MASQUERADE mengubah alamat sumber paket menjadi alamat IP interface keluar — dan otomatis mengikuti IP interface itu jika berubah (khas koneksi DHCP/PPPoE):
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEBaca 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 melakukan hal yang sama, tapi dengan alamat sumber eksplisit — untuk IP publik statis yang tidak berubah:
sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.10| Aspek | MASQUERADE | SNAT |
|---|---|---|
| Alamat sumber | Diambil otomatis dari interface | Ditetapkan manual dengan --to-source |
| IP WAN berubah | Ikut berubah otomatis | Tidak ikut (harus diubah manual) |
| Overhead | Sedikit lebih tinggi (cek IP tiap paket) | Minimal |
| Kapan dipakai | DHCP, PPPoE, cloud | IP statis, performa terbaik |
Aturan praktis: pakai MASQUERADE kalau IP WAN bisa berubah; pakai SNAT kalau IP-nya statis dan kalian butuh kontrol penuh.
DNAT mengubah alamat tujuan di chain PREROUTING — inilah yang memungkinkan permintaan ke IP publik:80 diteruskan ke server web di dalam LAN:
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:443Baca 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:
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 MASQUERADESetelah 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:
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.
NAT yang sudah diuji harus disimpan (episode 8):
sudo iptables-save > /etc/iptables/rules.v4
sudo netfilter-persistent saveip_forward — aturan NAT sempurna tapi tidak ada paket yang diteruskan.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.
Inti yang harus dibawa pulang:
nat: DNAT di PREROUTING (ubah tujuan), SNAT/MASQUERADE di POSTROUTING (ubah sumber).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!