How to install WireGuard Server on Debian 12 Virtual Machine
Hello and welcome back!. This time, I will guide you step-by-step through the process of installing a WireGuard server on Debian 12 running on a virtual machine.

Introduction
WireGuard adalah protokol VPN (Virtual Private Network) modern yang dirancang untuk menggantikan protokol lama seperti IPsec dan OpenVPN dengan pendekatan yang lebih sederhana, cepat, dan aman. Keunggulan utamanya berasal dari basis kode yang sangat minimalis, membuatnya lebih mudah diaudit dan lebih aman dari celah keamanan. Selain itu, implementasinya yang berjalan langsung di dalam kernel Linux memberikan performa dan kecepatan koneksi yang jauh melampaui VPN tradisional, dengan latensi yang lebih rendah dan penggunaan sumber daya yang lebih efisien.
Secara praktis, konfigurasinya sangat mudah, menggunakan sistem pertukaran kunci publik yang mirip dengan SSH sehingga menghilangkan kerumitan manajemen sertifikat. Kemudahan ini, dikombinasikan dengan keamanannya yang solid, menjadikannya standar baru yang populer untuk kebutuhan akses jarak jauh (remote access) dan koneksi antar situs (site-to-site). Pengakuan atas keunggulannya dikukuhkan dengan dimasukkannya WireGuard secara resmi ke dalam kernel Linux, menandakan statusnya sebagai teknologi VPN masa depan.
Installasi WireGuard

IP saya enp0s3 : 192.10.26.5, IP enp0s8 : 192.100.200.1

1.Install WireGuard : apt install wireguard -y

2.Install iptables : apt install iptables -y

3. Masuk ke Direktori WireGuard : cd /etc/wireguard
4.Atur izin agar file kunci aman : umask 077
5.Buat kunci untuk Server : wg genkey | tee server_private.key | wg pubkey > server_public.key
6. Catat Public Key WireGuard : cat server_public.key
7. Catat Private Key WireGuard : cat server_private.key
8. Edit wg0 : nano wg0.conf
Reminder
Untuk di bagian Public Key dan Private Key Catat Agar lebih mudah saat konfig di sisi Client

[Interface]
Address = 192.170.36.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE
ListenPort = 52623
PrivateKey = WO3X54fXHAQGcv+jRSDKZ4m9bTL8u+5UGOxsTbaZyE0=
[Peer]
PublicKey = 3GVpQHb9l00d442+V94Q90pY0wvNVLSx15UAnxjUYAg=
AllowedIPs = 192.170.36.2/32
Endpoint = 192.10.26.8:59525
Lanjutan 8, Edit wg0.conf, Konfigurasi Sperti ini, Untuk di bagian [Interface], ListenPort saya costom sendiri dengan Port 52623, PrivateKey di isi degan Key yang tadi di Catat server_private.key, Untuk di bagian [Peer], PublicKey isi Dengan Public Key yang ada di Client Windows, AllowedIPs isi degan alamat IP yang akan di berikan ke Client. Jika Sudah Save Ctrl X + Y
Reminder
Untuk di Bagian [Peer] Public Key ini ada di bawah ini jadi tinggal sama kan

Lanjutan 8, Part 2, Download dan Install WireGuard di Windows dan jalankan dan buat Tunel Config Untuk cara nya Cari Tanda panah ke↓Klik add empty tunel Jika sudah tampilan nya Seperti di bawah, Di bagian Public Key Catat dan masukan ke [Peer] Server WireGuard nya, Jika Sudah Save.

9. Stop Interface wg0 : wg-quick down wg0
10. Start Interface : wg-quick up wg0

[Interface]
PrivateKey = yF8/rDmHJxNzhCEY5BnenedMGlQnpANgej7j98jbelo=
Address = 192.170.36.2/32
DNS = 1.1.1.1
MTU = 1420
[Peer]
PublicKey = DgFR0v8ZH6UbRt7DsbQ5gJULOdPVn7rCWMVq370Vax8=
AllowedIPs = 0.0.0.0/0
Endpoint = 192.10.26.5:52623
PersistentKeepalive = 21
11. Di sisi Client Windows, Edit Yang sudah Tadi Di buat dan Tambahkan Seperti di bawah ini, Private Key diamkan saja, Address masukan yang tadi di berikan di Server [Peer] AllowIPs, [Peer] Client, PublicKey isi degan PublicKey dari Server yang tadi di Catat, Endpoint Masukan IP Server WireGuard nya dan masukan Port nya, Jika Sudah Save. Jika Sudah Save Active kan
Uji Coba Ping

Hasil Ping Clinet ke Server WireGuard

Hasil Ping Server ke Clinet Windows

Hasil Uji SpeedTest, Test Browser
Thank You