Akhirnya berhasil juga menginstall wireguard di server (Ubuntu LTS 18.0.4), di Laptop (Manjaro Kyria 19.0.2) dan di HP Android. Butuh waktu beberapa jam untuk memahami cara penggunaan dan setting wireguard. Tapi setelah paham langsung wush-wush.

Ternyata emang benar apa yang dibilang orang-orang di forum reddit dan beberapa website linux lainnya. Install wireguard itu gampang, cara edit konfigurasinya juga ga kalah mudah. Beda banget sama openvpn.

Pengalaman coba install openvpn diserver ga berhasil walaupun udah ngikutin beberapa video tutorial di youtube. Waktu itu saya akhirnya menggunakan script jadi yang langsung install open vpn diserver dan tinggal copy file config-nya di client.

Waktu mencoba wireguard, saya tidak terpikirkan untuk lihat video tutorial. Karena dengan baca dan mengikuti tutorial beberapa artikel saja, wireguard sudah bisa di setting dengan baik diserver Ubuntu saya.

Kebetulan saya mendapatkan gratis $100 deposit dari Linode yang bisa digunakan untuk 3 bulan. Bikin beberapa server untuk blog dan beberapa server untuk testing, salah satunya buat nginstall wireguard ini.

Wireguard

Cara Install Wireguard di Ubuntu LTS 18.04 

Biasanya hampir semua cloud provider menyediakan image Ubuntu 18.04 dan kebanyakan tutorial khusus untuk server juga banyak ditulis untuk ubuntu server. Maka dari itu semua server yang saya miliki saat ini menggunakan Ubuntu server baik yang 16.04 dan 18.04. Jadi cara yang saya berikan untuk installasi di server adalah menggunakan Ubuntu.

Pertama kali tambahkan dulu repositori PPA dari wireguard

1
sudo apt-add-repository ppa:wireguard/wireguard

Jika kamu menggunakan server yang sama dengan saya, yaitu Ubuntu LTS 18.04, tidak perlu lagi menggunakan perintah apt update langsung saja install aplikasinya.

1
sudo apt install wireguard

Jika muncul seperti ini berarti kernelnya terkonfigurasi dengan baik

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
wireguard:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/4.15.0-43-generic/updates/dkms/

depmod...................

DKMS: install completed.
Setting up wireguard (0.0.20181218-wg1~bionic) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...

Konfigurasi Wireguard Server (Ubuntu LTS 18.04) 

Setelah proses install berhasil selanjutnya kita harus mengkonfigurasi server terlebih dahulu.

1. Buat private dan public key menggunakan aplikasi wireguard 

1
2
umask 077
wg genkey | tee privatekey | wg pubkey > publickey

Penjelasan wg genkey adalah command untuk menggenerate private key yang di pipe ke command tee. Selanjutnya private key tersebut digunakan untuk men-generate publickey menggunakan command wg pubkey

Seharusnya setelah menjalankan perintah diatas, ada 2 file seperti contoh dibawah :

Public dan PrivateKey

2. Buat file configurasi 

Untuk membuat file konfigurasi, login sebagai root dan buka folder /etc/wireguard melalui terminal atau ikuti perintah dibawah

1
2
3
sudo su
cd /etc/wireguard/
vim wg0.conf

Paste script konfigurasi dibawah ini

1
2
3
4
5
6
7
[Interface]
PrivateKey = <Private Key>
Address = 10.0.0.1/24, fd86:ea04:1115::1/64
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
SaveConfig = true

Penjelasan

Privatekey : Ganti menggunakan kode yang sudah dibuat pada step 1. Cara mudahnya dengan cat privatekey lalu copy hasilnya.

Address dan ListenPort : sebaiknya dibiarkan saja. Kalau servernya belum dipakai buat install docker, Local Addressnya tidak ada masalah, pastikan saja apakah address tersebut tidak ada yang memakai menggunakan ifconfig

PostUp dan PostDown : Disitu ada interface koneksi internet public, jika koneksinya sama-sama menggunakan eth0 tidak ada yang perlu diganti tapi jika menggunakan interface lain seperti ens3 silakan ganti sesuai interface tersebut.

SaveConfig = True : jika nantinya kamu menggunakan beberapa client dan peer, file konfigurasinya akan terupdate secara otomatis.

3. Setting Firewall 

Di Ubuntu LTS 18.04 versi Linode sudah terinstall ufw, ufw adalah kependekan dari uncomplicated firewall. Ufw digunakan untuk memberikan akses ke port 51820 pada file konfigurasi tadi.

1
2
3
sudo ufw allow 22/tcp
sudo ufw allow 51820/udp
sudo ufw enable

Penjelasan : ufw allow 22/tcp perintah untuk memberikan akses ke port 22 yang biasanya digunakan oleh SSH. ufw allow 51820/udp adalah perintah memberikan akses udp ke port 51820 agar koneksi dari client nanti berjalan dengan lancar. Sedangkan ufw enable adalah perintah untuk mengaktifkan program ufw.

Untuk melihat apakah konfigurasi firewall kamu sudah benar, cek menggunakan perintah

1
sudo ufw status verbose

Hasilnya seperti ini :

Setting UFW

4. Enable IPV4 Forwarding 

Cek apakah ipv4 forwarding sudah diaktifkan

1
2
user@ubuntu:~ $ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Jika hasilnya tidak sama dengan 1, edit file /etc/sysctl.conf add cari baris dengan kode net.ipv4.ip_forward = 1 jika tidak ada tambahkan kode tersebut dibagian paling bawah.

5. Menjalankan Wireguard Server 

Jalankan wireguard dengan perintah

1
sudo wg-quick up wg0

wg0 adalah file configurasi di /etc/wireguard/wg0.conf, jika menggunakan nama lain silakan sesuaikan.

Untuk melihat apakah wireguard servernya sudah aktif, jalankan perintah sudo wg show

1
2
3
4
5
6
  
user@ubuntu:~$ sudo wg show
interface: wg0
  public key: vD2blmqeKsV0OU0GCsGk7NmVth/+FLhLD1xdMX5Yu0I=
  private key: (hidden)
  listening port: 51820

Konfigurasi Wireguard Client Menggunakan Manjaro Kyria 19.0.2 

Karena laptop saya menggunakan Manjaro, maka tutorial menginstall wireguardnya versi Manjaro (versi Arch agak berbeda sedikit). Intinya untuk cara install cukup ikuti saja dokumentasi di website wireguardnya.

1. Install Wireguard Client 

Pertama kali install dulu linux headers, disini saya menggunakan kernel 4.19. Sesuaikan dengan kernel kamu masing-masing.

1
sudo pacman -S linux419-headers

Setelah berhasil lanjut menginstall program wireguard

1
sudo pacman -S wireguard-tools wireguard-dkms

2. Buat PrivateKey dan Pubkey di Client 

Caranya hampir sama, cd ke folder home atau folder mana saja tempat anda menyimpan file konfigurasi.

1
2
umask 077
wg genkey | tee privatekey | wg pubkey > publickey

3. Setting File Konfigurasi di /etc/wireguard 

Interfacenya bisa disamakan dengan server yaitu wg0. Oh iya pada kasus dilaptop saya, saya harus login sebagai root agar bisa membuat file wg0.conf

1
2
3
sudo su
mkdir -p /etc/wireguard
vim /etc/wireguard/wg0.conf

Paste script konfigurasi dibawah ini ke file wg0.conf

1
2
3
4
5
6
7
8
[Interface]
Address = 10.0.0.2/24, fd86:ea04:1115::2/64
PrivateKey = <client1_private.key>

[Peer]
Endpoint = your.publicdns.com:51820
PublicKey = <server_public.key>
AllowedIPs = 0.0.0.0/0, ::/0

Penjelasan file konfig diatas adalah :

[Interface]

Address : server mengunakan ip local 10.0.0.1 jadi kita menggunakan ip 10.0.0.2 untuk ipv4-nya.

PrivateKey : Gunakan privatekey yang sudah kamu generate tadi (untuk client)

[Peer]

Endpoint : adalah IP server kamu dengan format IPSERVER:PORT contoh (192.168.0.1:51820)

PublicKey adalah : publickey milik server

AllowedIPs : jika menggunakan pengaturan diatas kita bisa mengakses internet (jika tujuannya wireguard dijadikan VPN)

4. Setting Informasi Client di Server 

Sebenarnya ada 2 cara untuk menambahkan informasi client di server agar bisa mengakses server dari client yang sudah kita buat. Cara yang pertama adalah cara manual, sedangkan cara kedua ini menggunakan perintah dan langsung akan ter-save otomatis. Saya lebih prefer menggunakan cara kedua

1
wg set wg0 peer <public-key-client> allowed-ips 10.0.0.2/24, fd86:ea04:1115::/64

Verifikasi apakah client tadi berhasil ditambahkan, dengan cara

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  
user@ubuntu:~$ sudo wg
interface: wg0
  public key: vD2blmqeKsV0OU0GCsGk7NmVth/+FLhLD1xdMX5Yu0I=
  private key: (hidden)
  listening port: 51820

peer: iMT0RTu77sDVrX4RbXUgUBjaOqVeLYuQhwDSU+UI3G4=
  endpoint: 10.0.0.2:51820
  allowed ips: 10.0.0.2/24, fd86:ea04:1115::/64

5. Jalan wireguard di client 

Aktifkan koneksi ke server dengan perintah

1
sudo wg-quick up wg0

Jika ingin mematikan koneksi vpn wireguard gunakan perintah ini

1
sudo wg-quick down wg0

Semoga bermanfaat

Referensi

https://www.linode.com/docs/networking/vpn/set-up-wireguard-vpn-on-ubuntu/ - tutorialnya mudah dipahami

https://github.com/adrianmihalko/raspberrypiwireguard - untuk tambahan config ipv4 forwarding