// IP ADDRESS ANDA SAAT INI
Mengambil informasi koneksi…
Cek IP Publik Server Kamu →

Kalau kamu menjalankan VPS sebagai gerbang — misalnya meneruskan koneksi dari internet ke server lain, ke container, atau ke ujung tunnel WireGuard — kamu butuh port forwarding di level Linux dengan iptables. Banyak panduan memberi perintah copy-paste tanpa menjelaskan kenapa, sehingga saat tidak jalan pengguna buntu. Artikel ini menjelaskan tiga konsep inti (PREROUTING, POSTROUTING, MASQUERADE) plus contoh lengkap dan cara membuat rules-nya permanen. IP pada contoh memakai alamat dokumentasi (RFC 5737) — ganti dengan IP-mu.

Ini panduan port forwarding di sisi SERVER Linux/VPS. Kalau yang kamu cari port forwarding di router rumah (untuk game/CCTV), konsepnya beda — lihat panduan port forwarding umum.

Konsep: PREROUTING, POSTROUTING, MASQUERADE

iptables memproses paket lewat beberapa "chain". Untuk port forwarding, dua yang penting ada di tabel NAT. PREROUTING diproses sebelum routing diputuskan — di sinilah kita pakai DNAT untuk mengubah alamat/port tujuan paket yang masuk (misalnya: paket ke port 8080 di IP publik dialihkan ke server internal). POSTROUTING diproses setelah routing, tepat sebelum paket keluar — di sinilah MASQUERADE/SNAT mengubah alamat sumber agar paket balasan tahu jalan pulang. Tanpa POSTROUTING yang benar, paket sampai ke tujuan tapi balasannya tersesat.

Chain Kapan Diproses Fungsi Utama
PREROUTING Sebelum routing DNAT — ubah tujuan paket masuk
POSTROUTING Sebelum paket keluar MASQUERADE/SNAT — ubah sumber
FORWARD (filter) Saat transit Izinkan/blok paket diteruskan

Langkah 1: Aktifkan IP Forwarding

Secara default, kernel Linux tidak meneruskan paket antar-interface. Aktifkan dulu, kalau tidak semua rule forwarding tidak akan berfungsi.

BASH — Aktifkan ip_forward (permanen)
# Aktifkan sekarang
sysctl -w net.ipv4.ip_forward=1

# Buat permanen (bertahan setelah reboot)
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
Tanpa ip_forward=1, paket tidak akan diteruskan antar-interface dan port forwarding gagal total.

Langkah 2: Aturan Port Forwarding (DNAT + MASQUERADE)

Skenario: VPS dengan IP publik 203.0.113.10 meneruskan port 8080 ke server internal 10.10.0.2 (misalnya ujung tunnel WireGuard). Interface keluar VPS adalah eth0.

BASH — DNAT + MASQUERADE
# ══════════════════════════════════════════
# cekipsaya.com — network intelligence tools
# gratis untuk Indonesia: cek IP, DNS, ping,
# traceroute, blacklist check & more.
# ══════════════════════════════════════════

# DNAT: paket masuk ke port 8080 -> teruskan ke 10.10.0.2:8080
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 \
    -j DNAT --to-destination 10.10.0.2:8080

# MASQUERADE: ubah sumber agar balasan kembali lewat VPS
iptables -t nat -A POSTROUTING -p tcp -d 10.10.0.2 --dport 8080 \
    -j MASQUERADE

# Izinkan FORWARD (kalau policy forward = DROP)
iptables -A FORWARD -p tcp -d 10.10.0.2 --dport 8080 -j ACCEPT
Ganti eth0, 203.0.113.10, 10.10.0.2, dan port sesuai setupmu. Untuk UDP, ganti -p tcp jadi -p udp. Tambah blok serupa untuk tiap port yang ingin diteruskan.
Gotcha tersering: DNAT sudah benar tapi koneksi tetap gagal — biasanya karena MASQUERADE/POSTROUTING belum ada (balasan tersesat) atau ip_forward belum aktif. Cek ketiganya: ip_forward, PREROUTING, POSTROUTING.

Langkah 3: Verifikasi Aturan

BASH — Lihat aturan NAT
# Lihat semua rule di tabel NAT (dengan counter)
iptables -t nat -L -n -v

# Lihat rule FORWARD
iptables -L FORWARD -n -v
Perhatikan kolom pkts/bytes — kalau counter naik saat ada koneksi, rule kena. Kalau nol, paket tidak match (cek interface, port, protokol).

Langkah 4: Bikin Rules Permanen (iptables-persistent)

Rule iptables hilang saat reboot. Agar bertahan, simpan dengan paket iptables-persistent (Debian/Ubuntu) yang otomatis memuat ulang rules saat boot.

BASH — Simpan rules permanen
# Install (akan menawarkan menyimpan rules saat ini)
apt update && apt install -y iptables-persistent

# Simpan ulang setelah ada perubahan rules
netfilter-persistent save
Setiap kali kamu mengubah rule iptables, jalankan netfilter-persistent save agar perubahan bertahan setelah reboot. Lupa langkah ini = rule hilang saat server restart.
Studi Kasus: Kasus Nyata: Forward Gagal karena Lupa POSTROUTING
Seorang admin menyiapkan VPS untuk meneruskan port web ke server di balik tunnel WireGuard. Ia menambah rule DNAT di PREROUTING dengan benar, tapi koneksi selalu timeout. Setelah dicek, ternyata paket sampai ke server internal namun balasannya keluar lewat gateway server itu sendiri, bukan kembali ke VPS — karena tidak ada rule MASQUERADE di POSTROUTING. Setelah menambah MASQUERADE, forwarding langsung jalan. Pelajaran: DNAT saja tidak cukup, balasan harus diurus.

FAQ — Pertanyaan yang Sering Ditanyakan

PREROUTING diproses sebelum keputusan routing — dipakai DNAT untuk mengubah alamat/port tujuan paket masuk. POSTROUTING diproses setelah routing, sebelum paket keluar — dipakai MASQUERADE/SNAT untuk mengubah alamat sumber agar balasan kembali ke jalur yang benar.
Tiga penyebab tersering: (1) ip_forward belum diaktifkan, (2) tidak ada rule MASQUERADE di POSTROUTING sehingga balasan tersesat, (3) policy chain FORWARD = DROP tanpa rule ACCEPT untuk trafik yang diteruskan. Periksa ketiganya.
Keduanya mengubah alamat sumber paket keluar. SNAT memakai IP sumber tetap yang kamu tentukan — cocok bila IP publik statik. MASQUERADE otomatis memakai IP interface keluar — cocok bila IP bisa berubah (dinamis). Untuk VPS dengan IP tetap, keduanya bisa, MASQUERADE lebih praktis.
Pasang paket iptables-persistent (Debian/Ubuntu), lalu jalankan netfilter-persistent save setiap kali rule berubah. Tanpa ini, semua rule iptables hilang setelah server di-reboot.
Bisa. Ganti -p tcp menjadi -p udp pada rule DNAT dan POSTROUTING. Untuk layanan seperti game server atau WireGuard yang memakai UDP, ini diperlukan. Buat blok rule terpisah untuk TCP dan UDP bila layanan memakai keduanya.
nftables adalah penerus modern iptables dan banyak distro baru memakainya di belakang layar. Perintah iptables umumnya masih berfungsi lewat lapisan kompatibilitas. Konsep DNAT, SNAT, dan forwarding-nya sama; hanya sintaks yang berbeda bila kamu memakai nft langsung.

Kesimpulan

Port forwarding dengan iptables adalah fondasi yang dipakai VPS untuk meneruskan koneksi internet ke layanan lain — termasuk ke ujung tunnel WireGuard. Tiga konsep kuncinya: DNAT di chain PREROUTING (ubah tujuan paket masuk), MASQUERADE di POSTROUTING (agar balasan kembali lewat jalur benar), dan ip_forward diaktifkan. Jangan lupa membuat rules permanen dengan iptables-persistent agar tidak hilang saat reboot. Konsep ini langsung dipakai di panduan VPS + WireGuard untuk bypass CGNAT.

COBA SEKARANG
Cek IP Publik Server Kamu
→ Cek IP Publik Server Kamu
// ARTIKEL INI MEMBANTU?

Share ke teman yang butuh info ini: