Sebenarnya panduan ini berasal dari panduan yang ditulis oleh pak Endy Muhardin. Saya hanya merangkum langsung pada bagian instalasi, konfigurasi dan penggunaan disisi klien. Mengingat Wireguard ini sering saya gunakan untuk kebutuhan VPN production ataupun testing, maka panduannya saya tulis disini sebagai pengingat. Untuk penjelasan yang lebih detail, bisa langsung dilihat pada tulisan yang dibuat oleh pak Endy Muhardin : https://software.endy.muhardin.com/devops/vpn-wireguard-01-intro/
Disini saya menggunakan Ubuntu 22.04 LTS. Namun panduan ini seharusnya dapat digunakan pada semua versi Ubuntu yang disupport oleh Wireguard 🙂
# Update dan upgrade OS
apt update -y && apt upgrade -y
# Install Wireguard
apt install wireguard -y
# Generate priv dan pub key
wg genkey | tee private.key | wg pubkey | tee public.key
Private dan publik key diatas akan digunakan untuk server
# Setup Forwarding
echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.conf
Forwarding dibutuhkan agar server VPN dapat digunakan sebagai gateway/router untuk memforward trafic. Jalankan perintah sysctl -p untuk men-load sysctl setting
root@localhost:~# sysctl -p net.ipv4.ip_forward = 1
# Buat Device wg0
vi /etc/wireguard/wg0.conf
Isi dengan isian seperti berikut dan sesuaikan
[Interface] Address = 192.168.1.1/24 PostUp = wg addconf %i /etc/wireguard/peer.conf PostUp = iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j SNAT --to 202.123.123.123 PostDown = iptables -t nat -D POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j SNAT --to 202.123.123.123 ListenPort = 2023 PrivateKey = dtmmOFJKIdsdsdsYGaCIr5XtCdssdsSA
Keterangan :
– 192.168.1.1 adalah IP lokal yang akan digunakan oleh device wg0 pada server
– 202.123.123.123 adalah IP public yang menempel pada server VPN. Bisa juga –to 202.123.123.123 diganti dengan MASQUERADE agar otomatis dimasking
– 2023 adalah port VPN (UDP)
– PrivateKey = Diisi dengan tulisan pada file private.key hasil generate sebelumnya
# Buat priv dan pub key untuk klien akses
wg genkey | tee user1-private.key | wg pubkey | tee user1-public.key
Setiap klien yang hendak akses pada VPN, harus dilakukan generate private dan pubkey dengan perintah wg diatas. Simpan file di atas di tempat aman untuk digunakan oleh klien.
# Isi file peer
vi /etc/wireguard/peer.conf
Berikut adalah contoh isi dari file peer.conf
# Public Key User1 [Peer] PublicKey = 1d3f894a52eceb40702f33fd86bd412a75 AllowedIPs = 192.168.1.100/32 # Public Key User2 [Peer] PublicKey = 62b1ef17ac2cc499f6d8ba358fc8ec81f0 AllowedIPs = 192.168.1.101/32
Keterangan :
– Isi dari PublicKey adalah baris hasil perintah wg pada panduan “Buat priv dan pub key untuk klien akses”
– AllowedIPs adalah IP lokal yang akan digunakan oleh klien untuk melakukan koneksi dengan VPN
– Silakan tambahkan baris file peer.conf untuk user berikutnya seperti contoh diatas
# Restart services Wireguard
systemctl enable --now wg-quick@wg0 systemctl restart wg-quick@wg0
Catatan : Setiap menambahkan konfigurasi seperti pada file peer.conf diatas, restart services Wireguard agar konfigurasi yang baru ter-apply
# Sample Konfigurasi Wireguard untuk klien
[Interface] PrivateKey = private-key-klien-hasil-wg-genkey-untuk-klien Address = 192.168.1.100/24 -> IP yang dimasukkan kedalam peer DNS = 8.8.8.8,1.1.1.1 [Peer] PublicKey = pubkey-untuk-server AllowedIPs = 0.0.0.0/0 Endpoint = ip-server:port-server
Konfigurasi pada Wireguard klien isinya seperti diatas. Baik untuk konfigurasi pada Windows, Mac, Linux, Android ataupun Wireguard klien lainnya.
Berikut adalah sample konfigurasi Wireguard klien pada MacOS yang saya gunakan. Aplikasi Wireguard dapat langsung diinstall melalui App Store (untuk pengguna MacOS)
Berikut adalah sample konfigurasi Wireguard pada klien Ubuntu
Install aplikasi wireguard-tools
apt install wireguard-tools
Buat file interface pada folder /etc/wireguard. Misalnya file interface vpnwg.conf
vi /etc/wireguard/vpnwg.conf
Isi dengan sample isian diatas
[Interface] PrivateKey = 6FQGpILXRrNZ+bz94kEq9SlDZxQFl5Ddu7TPl0ZHF0A= Address = 192.168.1.101/24 DNS = 8.8.8.8,1.1.1.1 [Peer] PublicKey = BVX7ywKVMXJGpyNvMQZpQGLpUCBsaLc+Aj035c4uh20= AllowedIPs = 0.0.0.0/0 Endpoint = 202.123.123.123:2023
Jalankan perintah wg-quick up untuk melakukan koneksi pada VPN
wg-quick up vpnwg
Jalankan perintah wg-quick down untuk melakukan disconnect pada VPN
wg-quick down vpnwg
Catatan: vpnwg adalah nama interface yang dibuat. Silakan sesuaikan nama interface tersebut dengan nama yang diinginkan
# Pengetesan
Untuk melakukan pengetesan, bisa dilakukan dengan cara ping pada IP lokal server VPN atau IP lokal user lain yang sudah terkoneksi dengan VPN. Saya biasanya akses pada website https://ifconfig.co untuk mengetahui IP public yang sedang saya gunakan. Jika hasilnya IP public VPN, maka koneksi pada VPN Wireguard berhasil
Sejauh ini Wireguard yang saya gunakan cukup stabil dan otomatis melakukan reconnect pada server jika terputus koneksinya.
Silakan dicoba dan semoga bermanfaat 🙂