---
title: "Cara Kerja Port Forwarding di NAT VPS"
description: "Cara NAT VPS berbagi satu IPv4 lewat port forwarding, kenapa port 80 dan 443 sering tidak tersedia, dan cara menjalankan website atau SSH di dalamnya."
url: "https://nivelva.com/insight/cara-kerja-port-forwarding-nat-vps"
category: "Server \u0026 Infrastruktur"
tags: ["nat vps","port forwarding","dnat","iptables","ipv6"]
author: "Theresia Candiawan"
published: "2026-11-07T03:05:00+07:00"
updated: "2026-11-07T03:05:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Cara Kerja Port Forwarding di NAT VPS

> **Jawaban singkat:** Di NAT VPS, satu IPv4 publik dipakai bersama banyak VPS. Router host meneruskan rentang port tertentu dari IP publik ke IP privat VPS-mu lewat DNAT, jadi layanan harus memakai port dari rentang itu, IPv6, atau perantara seperti reverse proxy dan tunnel.

Kamu baru mengaktifkan NAT VPS. Login SSH berhasil, tapi lewat port aneh seperti 20022, bukan 22. Lalu kamu memasang Nginx, membuka `http://IP-SERVER` di browser, dan tidak ada yang muncul. Padahal Nginx berjalan normal dan `curl localhost` di dalam server menampilkan halaman default.

Tidak ada yang rusak. Begitulah port forwarding di NAT VPS bekerja, dan sekali alurnya dipahami, kamu tahu persis port mana yang bisa dipakai dan bagaimana menyiasati sisanya.

## Satu IP publik, banyak VPS

VPS biasa mendapat satu IPv4 publik sendiri. Semua port, dari 1 sampai 65535, langsung milikmu. NAT VPS berbeda: beberapa VPS di satu host berbagi satu IPv4 publik, dan setiap VPS hanya mendapat IP privat (misalnya dari rentang `10.x.x.x` atau `172.16.x.x`). Untuk konsep dasarnya, baca [apa itu IP privat, IP publik, dan NAT](https://nivelva.com/insight/apa-itu-ip-privat-ip-publik-nat-server).

Karena IP publiknya sama, port tidak mungkin dibagi semuanya ke semua orang. Port 80 hanya bisa diteruskan ke satu tujuan. Maka penyedia membagi port publik menjadi rentang, dan setiap VPS mendapat jatah rentang sendiri. Misalnya, VPS A mendapat port 20000 sampai 20019, VPS B mendapat 20020 sampai 20039, dan seterusnya. Pembagian persisnya berbeda di setiap penyedia dan biasanya tertulis di panel layanan.

## Yang terjadi pada paket yang datang

Di host atau router penyedia ada aturan Destination NAT (DNAT). Pada Linux, aturan ini dibuat dengan netfilter (iptables atau nftables). Contoh sederhana dengan iptables, yang dijalankan di sisi host, bukan di dalam VPS-mu:

```
iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 20022 \
  -j DNAT --to-destination 10.0.0.25:22
```

Alurnya seperti ini. Klien mengirim paket ke `203.0.113.10:20022`. Host melihat aturan di tabel `nat` rantai `PREROUTING`, lalu mengganti tujuan paket menjadi `10.0.0.25:22`. VPS-mu menerima koneksi di port 22 seperti biasa. Saat VPS membalas, host mengembalikan alamat sumber balasan menjadi IP publik dan port 20022 berdasarkan tabel pelacakan koneksi (conntrack), sehingga klien melihat percakapan yang utuh.

Koneksi keluar dari VPS memakai arah sebaliknya, Source NAT atau masquerade. Semua VPS keluar ke internet dengan IP publik yang sama. Karena itu `apt update`, unduhan, dan panggilan API berjalan normal tanpa pengaturan apa pun.

Ada dua variasi pemetaan. Sebagian penyedia memetakan port publik ke port internal yang berbeda (20022 ke 22). Sebagian lain memetakan ke nomor yang sama (20022 ke 20022), sehingga layananmu harus mendengarkan langsung di port itu. Cek dokumentasi penyedia, karena salah membaca pola ini adalah penyebab "port sudah dibuka tapi tidak bisa diakses" yang paling umum.

## Ringkasan pemetaan yang perlu kamu cek

| Pertanyaan | Kenapa penting | Cara mengecek |
|:--|:--|:--|
| Rentang port publik milikku | Hanya port ini yang bisa dijangkau dari internet | Panel atau email aktivasi layanan |
| Port publik dipetakan ke port internal yang sama atau berbeda | Menentukan port yang harus didengarkan aplikasi | Dokumentasi penyedia, uji dengan `ss -tlnp` |
| TCP saja atau TCP dan UDP | Game server, VPN WireGuard, dan VoIP butuh UDP | Dokumentasi penyedia |
| Ada IPv6 publik | IPv6 biasanya memberi semua port tanpa NAT | `ip -6 addr show` |
| Firewall di dalam VPS | Port yang diteruskan tetap bisa diblokir oleh UFW atau firewalld | `ufw status` atau `firewall-cmd --list-all` |

## Lalu bagaimana menjalankan website?

Port 80 dan 443 di IP publik bersama biasanya tidak bisa diberikan ke satu pelanggan. Ada beberapa jalan keluar yang umum.

Pertama, **IPv6**. Banyak NAT VPS dilengkapi IPv6 publik, sering dalam bentuk blok /64, tanpa NAT sama sekali. Website bisa dilayani di port 80 dan 443 lewat IPv6. Kendalanya, pengunjung yang hanya punya IPv4 tidak bisa menjangkau langsung, jadi pola ini biasanya dipadukan dengan proxy CDN yang menerima pengunjung IPv4 lalu menghubungi server lewat IPv6.

Kedua, **reverse proxy bersama dari penyedia**. Sebagian penyedia menjalankan proxy di port 80 dan 443 milik IP bersama, lalu meneruskan permintaan ke VPS berdasarkan nama domain. Kamu cukup mendaftarkan domain di panel.

Ketiga, **tunnel keluar**. Layanan seperti [Cloudflare Tunnel](https://nivelva.com/insight/cloudflare-tunnel-tanpa-ip-publik) membuat koneksi keluar dari VPS ke jaringan penyedia tunnel, sehingga website bisa diakses tanpa port masuk sama sekali.

Keempat, pakai port dari rentangmu dan sertakan nomornya di URL, misalnya `https://domainmu.com:20443`. Ini cukup untuk panel admin atau API internal, tapi kurang ramah untuk pengunjung umum.

## Kesalahan yang sering terjadi

Masalah paling sering bukan di NAT, tapi di dalam VPS. Aplikasi mendengarkan di `127.0.0.1` sehingga hanya bisa diakses dari dalam server; ubah agar mendengarkan di `0.0.0.0` atau IP privat VPS. Firewall di dalam VPS belum membuka port tujuan. Atau aplikasi mendengarkan di port 22 padahal pemetaan penyedia meneruskan port publik ke nomor yang sama. Periksa dengan `ss -tlnp` (TCP) atau `ss -ulnp` (UDP), lalu uji dari luar dengan perintah seperti `nc -vz IP-PUBLIK PORT` dari komputer lain.

Untuk layanan UDP seperti WireGuard atau game server, pastikan penyedia meneruskan UDP juga, bukan hanya TCP. UDP lebih sulit diuji karena tidak ada jabat tangan seperti TCP, jadi cara paling pasti adalah mencoba klien sungguhan dari jaringan luar sambil memantau `tcpdump -ni any udp port PORT` di dalam VPS. Bila paket tidak pernah terlihat datang, masalahnya ada di pemetaan penyedia, bukan di aplikasimu.

Satu catatan keamanan: rentang port yang tidak umum bukan perlindungan. Pemindai otomatis memindai seluruh port, jadi SSH tetap perlu login dengan kunci dan layanan lain tetap perlu dibatasi.

## Kesimpulan

Port forwarding di NAT VPS adalah DNAT di host penyedia yang meneruskan rentang port dari IP publik bersama ke IP privat VPS-mu, sementara koneksi keluar memakai masquerade. Pakai port dari rentangmu untuk SSH, VPN, game server, dan API, lalu gunakan IPv6, proxy penyedia, atau tunnel untuk website di port standar. Untuk menimbang apakah NAT VPS cukup untuk kebutuhanmu, baca [apa itu NAT VPS dan kapan cukup memakainya](https://nivelva.com/insight/apa-itu-nat-vps).

## Sumber

- <https://www.rfc-editor.org/rfc/rfc3022>
- <https://www.netfilter.org/documentation/>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/cara-kerja-port-forwarding-nat-vps
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
