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.1Server Lokal (AlmaLinux): Host CyberPanel | IP WireGuard:
10.7.0.2Port 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
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:
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:
Pastikan Port 80 sudah di-forward dan di-SNAT (Langkah 3B).
Pastikan website bisa dibuka via HTTP biasa (
http://domain.com) sebelum klik tombol "Issue SSL".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.