WireGuard® adalah VPN yang sangat sederhana namun cepat dan modern yang menggunakan kriptografi tercanggih. Ini bertujuan untuk menjadi lebih cepat, lebih sederhana, lebih ramping, dan lebih berguna daripada IPsec, sambil menghindari sakit kepala yang parah. Ia bermaksud untuk menjadi jauh lebih berkinerja daripada OpenVPN. WireGuard dirancang sebagai VPN tujuan umum untuk dijalankan pada antarmuka yang disematkan dan juga komputer super, cocok untuk berbagai keadaan. Awalnya dirilis untuk kernel Linux, sekarang lintas platform (Windows, macOS, BSD, iOS, Android) dan dapat diterapkan secara luas. Saat ini sedang dalam pengembangan besar-besaran, tetapi sudah dapat dianggap sebagai solusi VPN yang paling aman, paling mudah digunakan, dan paling sederhana di industri.
Pada artikel kali ini saya akan menggunakan 2 mesin dengan OS armbian ubuntu 20.04 yang berjarak lebih dari 10km
Prasyarat
- Mesin / VM dengan os ubuntu 20.04
- Memiliki akses superuser / root
- Koneksi internet
- Koneksi antara mesin / VM
Install Wireguard
Install paket wireguard berikut pada kedua mesin yang akan digunakan untuk peer to peer.
apt update apt install wireguard -y
Hasil: root@arm-64:~# apt install wireguard -y Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: wireguard 0 upgraded, 1 newly installed, 0 to remove and 84 not upgraded. Need to get 3,268 B of archives. After this operation, 17.4 kB of additional disk space will be used. Get:1 http://ports.ubuntu.com bionic-updates/universe arm64 wireguard all 1.0.20200513-1~18.04.2 [3,268 B] Fetched 3,268 B in 1s (4,631 B/s) Selecting previously unselected package wireguard. (Reading database ... 56050 files and directories currently installed.) Preparing to unpack .../wireguard_1.0.20200513-1~18.04.2_all.deb ... Unpacking wireguard (1.0.20200513-1~18.04.2) ... Setting up wireguard (1.0.20200513-1~18.04.2) ...
Konfigurasi Wireguard
Konfigurasi wireguard di kedua mesin. masuk ke direktori /etc/wireguard
cd /etc/wireguard
Set permision folder kemudian buat private key dan public key
umask 077 wg genkey | tee privatekey | wg pubkey > publickey
Hasil Mesin A:
root@MesinA:/etc/wireguard# ls privatekey publickey root@MesinA:/etc/wireguard# cat privatekey yIOZD45GBWmSqiB8MKC8LbJZbXwWEjHfhHwA5B5k9GQ= root@MesinA:/etc/wireguard# cat publickey r4ZUx/jtct1sRuXyxTN4wM7ixxdsyKDqBz3d0VUsy1c= root@MesinA:/etc/wireguard#
Hasil Mesin B:
root@MesinB:/etc/wireguard# ls privatekey publickey root@MesinB:/etc/wireguard# cat privatekey mCOPckRHX1UMlaUkvfOm+qd+yEuD78QaaQJUq5kOpGM= root@MesinB:/etc/wireguard# cat publickey s3sJ8Aou6UpX/77afkMrR8l1emwmZN6oe1jNjJbfpzU= root@MesinB:/etc/wireguard#
Setelah kita memiliki private key dan public key di masing masing mesin, selanjutnya bisa kita gunakan untuk membuat konfigurasi.
Membuat Konfigurasi Wireguard
Mesin A:
nano wg0.conf [Interface] Address = 172.17.1.1/24 SaveConfig = true 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 ListenPort = 51820 PrivateKey = yIOZD45GBWmSqiB8MKC8LbJZbXwWEjHfhHwA5B5k9GQ= [Peer] PublicKey = s3sJ8Aou6UpX/77afkMrR8l1emwmZN6oe1jNjJbfpzU= AllowedIPs = 172.17.1.2/32 [Peer] PublicKey = AjjdXSfARr0hvPCmXtPv2X53sS465y3VPTigHzFy9T8= AllowedIPs = 172.17.1.3/32
Mesin B:
[Interface] Address = 172.17.1.2/24 SaveConfig = true PrivateKey = mCOPckRHX1UMlaUkvfOm+qd+yEuD78QaaQJUq5kOpGM= [Peer] PublicKey = r4ZUx/jtct1sRuXyxTN4wM7ixxdsyKDqBz3d0VUsy1c= AllowedIPs = 172.17.1.0/24 Endpoint = 192.168.201.252:51820
Opsional, disini saya juga mencoba terkoneksi menggunakan Android.
Keterangan
- Interface
- Address = IP address yang akan terpasang di interface wireguard
- SaveConfig = Agar konfigurasi bisa terupdate secara otomatis ketika ada peer baru yang ditambahkan
- PostUp & PostDown = menentukan langkah-langkah yang akan dijalankan setelah interface wireguard dihidupkan atau dimatikan.
- ListenPort = Port yang digunakan Wireguard
- PrivateKey = PrivateKey milik mesin itu sendiri.
- Peer
- PublicKey = Public key milik mesin lawan
- AllowedIPs = IP yang akan boleh dilewatkan
Pada Mesin A saya simulasikan akan sebagai “server” yang memiliki ip publik dan akan terhubung ke banyak peer, sedangkan mesin B adalah mesin yang tidak memiliki ip publik atau di bawah nat.