Cara Kerja Port Forwarding di NAT VPS
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.
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.
Daftar isi
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.
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 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.


