Install WireGuard VPN di Ubuntu 22.04
WireGuard adalah protokol VPN (Virtual Private Network) yang sederhana namun cepat, dapat menjadi pengganti protokol VPN lain seperti OpenVPN dan IPsec. WireGuard telah dimasukkan ke dalam kernel Linux 5.6 dan mulai tersedia di Ubuntu 20.04.
Install WireGuard Server
Sistem operasi yang digunakan sebagai WireGuard server adalah Ubuntu Server 22.04 LTS dengan user root.
Install WireGuard.
1 | apt install wireguard |
Membuat private key WireGuard server.
1 | wg genkey | tee /etc/wireguard/private.key |
Hasil perintah di atas meng-generate key dan menyimpannya ke dalam file private.key.
1 | cFtmVKUPUBhK8qpzi4KbTbOHG1frrPQbnxYxkyWhAGU= |
Mengubah permission private.key, menghilangkan semua permission untuk group dan other.
1 | chmod 600 /etc/wireguard/private.key |
Meng-generate public key WireGuard server berdasarkan private key yang telah dibuat sebelumnya dan menyimpannya ke dalam file public.key.
1 | cat /etc/wireguard/private.key | wg pubkey | tee /etc/wireguard/public.key |
Hasil perintah di atas.
1 | 8q8jmSa5RwWK56NPCU4wHNFYczzcKYg0okM15FUJEz4= |
Konfigurasi WireGuard Interface di Server
Membuat file konfigurasi untuk WireGuard interface di server.
1 | nano /etc/wireguard/wg0.conf |
Masukkan konfigurasi interface.
1 2 3 4 | [Interface] PrivateKey = cFtmVKUPUBhK8qpzi4KbTbOHG1frrPQbnxYxkyWhAGU= Address = 192.168.10.1/24 ListenPort = 51820 |
- PrivateKey = Private key yang sudah dibuat
- Address = Private IP address untuk IP VPN server
- ListenPort = Nomor port default WireGuard 51820 UDP, bisa menggunakan nomor lain
Konfigurasi WireGuard Peer (Client)
Sistem operasi yang digunakan sebagai WireGuard peer (client) adalah Ubuntu Server 22.04 LTS dengan user root. Langkahnya mirip dengan WireGuard server.
Install WireGuard.
1 | apt install wireguard |
Membuat private key.
1 2 | wg genkey | tee /etc/wireguard/private.key chmod 600 /etc/wireguard/private.key |
Hasilnya.
1 | 6Aqa8MWTrdAaqvAxe2vCuKFZqUgAcAltNkZj9UnvEEw= |
Membuat public key.
1 | cat /etc/wireguard/private.key | wg pubkey | tee /etc/wireguard/public.key |
Hasilnya.
1 | uic2Ph1uCFFXz2ZzbHyZrmuidU1+v0XD/vN1+ROkMTE= |
Membuat konfigurasi interface WireGuard di client.
1 | nano /etc/wireguard/wg0.conf |
Masukkan konfigurasi interface.
1 2 3 4 5 6 7 8 | [Interface] PrivateKey = gFyRMQtq83pMuf3RD1EiCL09mQtFhdqMjjlPJ1J3yFY= Address = 192.168.10.2/24 [Peer] PublicKey = 8q8jmSa5RwWK56NPCU4wHNFYczzcKYg0okM15FUJEz4= Endpoint = 159.89.194.36:51820 AllowedIPs = 192.168.10.0/24 |
- PrivateKey = Private key milik peer (client)
- Address = Private IP address untuk IP VPN client
- PublicKey = Public key milik VPN server
- Endpoint = Public IP address milik VPN server beserta nomor port yang digunakan
- AllowedIPs = IP address yang diijinkan terhubung ke peer. Bisa menggunakan host IP address (192.168.10.1) atau satu subnet (192.168.10.0/24). Jika ingin memasukkan IP address lebih dari satu, pisahkan dengan tanda koma.
Setelah selesain membuat file konfigurasi WireGuard interface di sisi client, update konfigurasi interface di WireGuard server dengan menambahkan [Peer] dan memasukkan Public Key milik Peer (VPN client).
1 2 3 4 5 6 7 8 | [Interface] PrivateKey = cFtmVKUPUBhK8qpzi4KbTbOHG1frrPQbnxYxkyWhAGU= Address = 192.168.10.1/24 ListenPort = 51820 [Peer] PublicKey = uic2Ph1uCFFXz2ZzbHyZrmuidU1+v0XD/vN1+ROkMTE= AllowedIPs = 192.168.10.2/32 |
Menjalankan WireGuard
Mengaktifkan WireGuard interface wg0 di server dengan menjalankan service wg-quick.
1 2 3 | systemctl start wg-quick@wg0.service systemctl enable wg-quick@wg0.service systemctl status wg-quick@wg0.service |
Ulangi perintah yang sama di WireGuard peer (client).
Menguji Koneksi VPN
Jalankan perintah wg di server.
1 | wg |
Hasilnya.
1 2 3 4 5 6 7 8 9 10 | interface: wg0 public key: 8q8jmSa5RwWK56NPCU4wHNFYczzcKYg0okM15FUJEz4= private key: (hidden) listening port: 51820 peer: uic2Ph1uCFFXz2ZzbHyZrmuidU1+v0XD/vN1+ROkMTE= endpoint: 146.190.106.74:50714 allowed ips: 192.168.10.2/32 latest handshake: 3 minutes, 34 seconds ago transfer: 47.11 KiB received, 18.06 KiB sent |
Hasil perintah wg di client.
1 2 3 4 5 6 7 8 9 10 | interface: wg0 public key: uic2Ph1uCFFXz2ZzbHyZrmuidU1+v0XD/vN1+ROkMTE= private key: (hidden) listening port: 50714 peer: 8q8jmSa5RwWK56NPCU4wHNFYczzcKYg0okM15FUJEz4= endpoint: 159.89.194.36:51820 allowed ips: 192.168.10.0/24 latest handshake: 4 minutes, 7 seconds ago transfer: 1.21 KiB received, 1.30 KiB sent |
Uji ping dari server ke client.
1 2 3 4 5 6 | ping -c 3 192.168.10.2 PING 192.168.10.2 (192.168.10.2) 56(84) bytes of data. 64 bytes from 192.168.10.2: icmp_seq=1 ttl=64 time=0.807 ms 64 bytes from 192.168.10.2: icmp_seq=2 ttl=64 time=0.761 ms 64 bytes from 192.168.10.2: icmp_seq=3 ttl=64 time=0.933 ms |
Uji ping dari client ke server.
1 2 3 4 5 6 | ping -c 3 192.168.10.1 PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data. 64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=0.761 ms 64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=1.46 ms 64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=0.779 ms |
Server dan client sudah saling terhubung ke WireGuard VPN.
Menambah WireGuard Peer (VPN Client)
Untuk menambah WireGuard Peer, install WireGuard di client dan konfigurasikan WireGuard interface seperti di atas. Setelah itu tambah konfigurasi [Peer] di server. Hasilnya menjadi seperti di bawah ini.
1 2 3 4 5 6 7 8 9 10 11 12 | [Interface] PrivateKey = cFtmVKUPUBhK8qpzi4KbTbOHG1frrPQbnxYxkyWhAGU= Address = 192.168.10.1/24 ListenPort = 51820 [Peer] PublicKey = uic2Ph1uCFFXz2ZzbHyZrmuidU1+v0XD/vN1+ROkMTE= AllowedIPs = 192.168.10.2/32 [Peer] PublicKey = ueotNN04cxkPGLxMC94M5CMiuobQsFXGphE962l10kg= AllowedIPs = 192.168.10.3/32 |
Restart [email protected] di server dan jalankan [email protected] di client. Uji kembali dengan wg dan ping.
Menghubungkan antar WireGuard Peer
Untuk menghubungkan antar WireGuard Peer ada 2 konfigurasi yang harus dilakukan. Misalnya ingin menghubungkan Peer#1 dengan Peer#2.
Pertama: Private IP VPN Peer#1 harus dimasukkan ke dalam AllowedIPs di konfigurasi WireGuard interface milik Peer#2, dan lakukan sebaliknya. Bisa juga dengan memasukkan satu subnet seperti pada contoh konfigurasi di atas.
Kedua: Aktifkan IP Forward di server.
Membuka file sysctl.conf.
1 | nano /etc/sysctl.conf |
Tambahkan konfigurasi berikut di baris paling bawah.
1 | net.ipv4.ip_forward=1 |
Reload file konfigurasi.
1 | sysctl -p |
Hasil perintah di atas.
1 | net.ipv4.ip_forward = 1 |
Uji saling ping antar Peer.
Selamat mencoba 🙂