Tutorial WireGuard: Instalasi dan Konfigurasi pada Sistem Operasi Linux Ubuntu

Posted by

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 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.