Port Forwarding CyberPanel dari VPS ke PC Lokal menggunakan WireGuard (Debian & AlmaLinux)

Mubarok Hasanuddin



Banyak pengguna ingin menjalankan CyberPanel di server lokal (Home Server/PC) namun terkendala IP Public Dinamis atau CGNAT. Solusinya adalah menggunakan VPS dengan IP Public Statis sebagai "Gerbang" (Gateway) menggunakan Tunneling WireGuard.

Tutorial ini akan membahas konfigurasi DNAT (agar bisa diakses dari luar) dan SNAT (agar paket data bisa kembali dengan benar).


1. Topologi & Kebutuhan

  • VPS (Debian): IP Public: 103.150.92.203 | IP WireGuard: 10.7.0.1

  • Server Lokal (AlmaLinux): Host CyberPanel | IP WireGuard: 10.7.0.2

  • Port Utama: 80 (HTTP), 443 (HTTPS), 8090 (CyberPanel).


2. Konfigurasi Routing di Sisi Client (AlmaLinux)

Masalah utama pada tunneling seringkali adalah "Asymmetric Routing", di mana paket masuk lewat VPN tapi mencoba keluar lewat ISP lokal. Kita harus memaksa paket CyberPanel kembali lewat jalur VPN.

A. Buat Tabel Routing Baru

# Tambahkan tabel routing khusus echo "200 vpn-route" >> /etc/iproute2/rt_tables # Daftarkan aturan routing berdasarkan IP WireGuard ip rule add from 10.7.0.2 table vpn-route ip route add default via 10.7.0.1 dev wg0 table vpn-route

B. Matikan Reverse Path Filtering (PENTING)

Agar Linux tidak membuang paket yang datang dari interface berbeda:

sysctl -w net.ipv4.conf.all.rp_filter=0 sysctl -w net.ipv4.conf.wg0.rp_filter=0 sysctl -w net.ipv4.conf.eth0.rp_filter=0

3. Konfigurasi Firewall di Sisi VPS (Debian)

Di Debian, kita perlu mengatur Port Forwarding (DNAT) dan Source NAT (SNAT). SNAT berfungsi agar AlmaLinux melihat koneksi berasal dari IP VPN Debian, sehingga balasan paket otomatis dikirim balik ke tunnel.

A. Aktifkan IP Forwarding

Bash
echo 1 > /proc/sys/net/ipv4/ip_forward

B. Atur IPTables (Port 80, 443, dan 8090)

# Port 80 (Untuk HTTP & Verifikasi SSL) iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.7.0.2:80 iptables -t nat -A POSTROUTING -d 10.7.0.2 -p tcp --dport 80 -j SNAT --to-source 10.7.0.1 # Port 8090 (Untuk Panel CyberPanel) iptables -t nat -A PREROUTING -p tcp --dport 8090 -j DNAT --to-destination 10.7.0.2:8090 iptables -t nat -A POSTROUTING -d 10.7.0.2 -p tcp --dport 8090 -j SNAT --to-source 10.7.0.1 # Izinkan Forwarding di Filter Table iptables -A FORWARD -i wg0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT

4. Optimalisasi MTU & MSS (Solusi Website Lambat/Timeout)

Koneksi WireGuard memiliki overhead paket. Jika MTU terlalu besar, website seringkali timed out saat memuat gambar/skrip besar.

A. Set MTU di Kedua Sisi (Debian & AlmaLinux)

ip link set dev wg0 mtu 1280

B. MSS Clamping (IPTables)

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

5. Membuat Pengaturan Permanen

Agar pengaturan tidak hilang saat server restart (Reboot).

Di Debian:

Bash
apt install iptables-persistent netfilter-persistent save

Di AlmaLinux:

Edit file /etc/rc.local (atau buat script startup) dan masukkan perintah ip rule dan ip route dari Langkah 2 di atas. Pastikan file tersebut memiliki izin eksekusi (chmod +x).


6. Penanganan Masalah (Troubleshooting SSL)

Jika Anda mengalami error saat menerbitkan SSL ZeroSSL/Let's Encrypt di CyberPanel:

  1. Pastikan Port 80 sudah di-forward dan di-SNAT (Langkah 3B).

  2. Pastikan website bisa dibuka via HTTP biasa (http://domain.com) sebelum klik tombol "Issue SSL".

  3. Gunakan DNS Challenge di CyberPanel jika HTTP Challenge terus mengalami timeout.


Kesimpulan: Dengan mengombinasikan WireGuard, DNAT, dan SNAT, kita bisa membuat server lokal seolah-olah memiliki IP Public statis milik VPS. Kuncinya ada pada SNAT di sisi gateway untuk memastikan jalur komunikasi dua arah berjalan sempurna.

Post a Comment