WireGuard adalah teknologi VPN (Virtual Private Network) modern dengan kriptografi canggih. Dibandingkan dengan solusi serupa lainnya, seperti IPsec dan OpenVPN, WireGuard lebih cepat, lebih mudah dikonfigurasi, dan lebih berkinerja. Ini adalah lintas platform dan dapat berjalan hampir di mana saja, termasuk Linux, Windows, Android, dan macOS. Wireguard adalah VPN peer-to-peer; tidak menggunakan model client-server. Tergantung pada konfigurasinya, peer dapat bertindak sebagai server atau klien tradisional.
WireGuards bekerja dengan membuat antarmuka jaringan pada setiap perangkat rekan yang bertindak sebagai terowongan. Peer mengotentikasi satu sama lain dengan bertukar dan memvalidasi kunci publik, meniru model SSH. Kunci publik dipetakan dengan daftar alamat IP yang diizinkan di terowongan. Lalu lintas VPN dienkapsulasi dalam UDP.
Dalam tutorial ini, kita akan mengatur WireGuard pada mesin Ubuntu 18.04 yang akan bertindak sebagai server VPN. Kami juga akan menunjukkan cara mengonfigurasi WireGuard sebagai klien. Lalu lintas klien akan dialihkan melalui server Ubuntu 18.04.
Penyiapan ini dapat digunakan sebagai perlindungan terhadap serangan Man in the Middle, menjelajahi web secara anonim, melewati konten yang dibatasi oleh Geo, atau memungkinkan rekan kerja Anda terhubung dengan aman ke jaringan perusahaan saat bekerja dari jarak jauh.
Prasyarat #
Anda memerlukan server Ubuntu 18.04 yang dapat Anda akses sebagai root atau akun dengan hak istimewa sudo.
Menyiapkan Server WireGuard #
Di bagian ini, kita akan menginstal WireGuard di mesin Ubuntu dan mengaturnya untuk bertindak sebagai server. Kami juga akan mengonfigurasi sistem untuk merutekan lalu lintas klien melaluinya.
Menginstal WireGuard di Ubuntu 18.04 #
WireGuard disertakan dalam repositori default Ubuntu. Untuk menginstalnya jalankan perintah berikut:
sudo apt update
sudo apt install wireguard
WireGuard berjalan sebagai modul kernel, yang dikompilasi sebagai modul DKMS. Jika berhasil, Anda akan melihat output berikut:
wireguard:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.15.0-88-generic/updates/dkms/
depmod...
DKMS: install completed.
Saat Anda memperbarui kernel, modul WireGuard akan dikompilasi dengan kernel baru.
Mengonfigurasi WireGuard #
WireGuard dikirimkan dengan dua alat baris perintah bernama wg
dan wg-quick
yang memungkinkan Anda mengonfigurasi dan mengelola antarmuka WireGuard.
Jalankan perintah berikut untuk menghasilkan kunci publik dan pribadi:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
File akan dibuat di /etc/wireguard
direktori. Anda dapat melihat file dengan cat
atau less
. Kunci pribadi tidak boleh dibagikan dengan siapa pun.
Sekarang setelah kunci dibuat, kita perlu mengonfigurasi perangkat terowongan yang akan merutekan lalu lintas VPN.
Perangkat dapat diatur baik dari baris perintah menggunakan ip
dan wg
atau dengan membuat file konfigurasi dengan editor teks.
Buat file baru bernama wg0.conf
dan tambahkan konten berikut:
sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
Antarmuka dapat diberi nama apa saja, namun disarankan untuk menggunakan sesuatu seperti wg0
atau wgvpn0
. Pengaturan di bagian antarmuka memiliki arti sebagai berikut:
-
Alamat - daftar alamat IP v4 atau v6 yang dipisahkan koma untuk
wg0
antarmuka. Gunakan IP dari rentang yang dicadangkan untuk jaringan pribadi (10.0.0.0/8, 172.16.0.0/12 atau 192.168.0.0/16). -
ListenPort - port tempat WireGuard akan menerima koneksi masuk.
-
PrivateKey - kunci pribadi yang dihasilkan oleh
wg genkey
memerintah. (Untuk melihat isi file jalankan:sudo cat /etc/wireguard/privatekey
) -
SaveConfig - saat disetel ke true, status antarmuka saat ini disimpan ke file konfigurasi saat dimatikan.
-
PostUp - perintah atau skrip yang dijalankan sebelum membuka antarmuka. Dalam contoh ini, kami menggunakan iptables untuk mengaktifkan penyamaran. Ini akan memungkinkan lalu lintas meninggalkan server, memberikan klien VPN akses ke Internet.
Pastikan untuk mengganti
ens3
setelah-A POSTROUTING
untuk mencocokkan nama antarmuka jaringan publik Anda. Anda dapat dengan mudah menemukan antarmuka dengan menjalankan perintah berikut:ip -o -4 route show to default | awk '{print $5}'
-
PostDown - perintah atau skrip yang dijalankan sebelum menurunkan antarmuka. Aturan iptables akan dihapus setelah antarmuka mati.
wg0.conf
dan privatekey
file seharusnya tidak dapat dibaca oleh pengguna biasa. Gunakan chmod
untuk mengatur izin ke 600
:
sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}
Setelah selesai, bawa wg0
antarmuka menggunakan atribut yang ditentukan dalam file konfigurasi:
sudo wg-quick up wg0
Perintah tersebut akan menghasilkan output seperti berikut:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Jalankan wg show wg0
untuk memeriksa status dan konfigurasi antarmuka:
sudo wg show wg0
interface: wg0
public key: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
private key: (hidden)
listening port: 51820
Anda juga dapat menjalankan ip a show wg0
untuk memverifikasi status antarmuka:
ip a show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.0.0.1/24 scope global wg0
valid_lft forever preferred_lft forever
Untuk menghadirkan antarmuka WireGuard saat boot, jalankan perintah berikut:
sudo systemctl enable wg-quick@wg0
Jaringan Server dan Konfigurasi Firewall #
Agar NAT berfungsi, kita perlu mengaktifkan penerusan IP. Buka /etc/sysctl.conf
file dan tambahkan atau batalkan komentar pada baris berikut:
sudo nano /etc/sysctl.conf
/etc/sysctl.confnet.ipv4.ip_forward=1
Simpan file dan terapkan perubahannya:
sudo sysctl -p
net.ipv4.ip_forward = 1
Jika Anda menggunakan UFW untuk mengelola firewall, Anda perlu membuka lalu lintas UDP pada port 51820
:
sudo ufw allow 51820/udp
Itu dia. Peer Ubuntu yang akan bertindak sebagai server telah disiapkan.
Penyiapan Klien Linux dan macOS #
Petunjuk penginstalan untuk semua platform yang didukung tersedia di https://wireguard.com/install/. Di sistem Linux, Anda dapat menginstal paket menggunakan manajer paket distribusi dan di macOS dengan brew
. Setelah Anda menginstal WireGuard, ikuti langkah-langkah di bawah ini untuk mengonfigurasi perangkat klien.
Proses untuk menyiapkan klien Linux dan macOS hampir sama seperti yang Anda lakukan untuk server. Mulailah dengan membuat kunci publik dan pribadi:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
Buat file wg0.conf
dan tambahkan konten berikut:
sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0
Pengaturan di bagian antarmuka memiliki arti yang sama seperti saat mengatur server:
- Alamat - daftar alamat IP v4 atau v6 yang dipisahkan koma untuk
wg0
antarmuka. - PrivateKey - Untuk melihat konten file pada mesin klien, jalankan:
sudo cat /etc/wireguard/privatekey
Bagian rekan berisi bidang berikut:
- PublicKey - kunci publik rekan yang ingin Anda sambungkan. (Isi dari server
/etc/wireguard/publickey
berkas). - Endpoint - IP atau nama host dari peer yang ingin Anda sambungkan diikuti dengan titik dua, dan kemudian nomor port yang didengarkan oleh peer jarak jauh.
- AllowedIPs - daftar alamat IP v4 atau v6 yang dipisahkan koma dari mana lalu lintas masuk untuk rekan diizinkan dan ke mana lalu lintas keluar untuk rekan ini diarahkan. Kami menggunakan 0.0.0.0/0 karena kami merutekan lalu lintas dan ingin rekan server mengirim paket dengan IP sumber apa pun.
Jika Anda perlu mengonfigurasi klien tambahan, cukup ulangi langkah yang sama menggunakan alamat IP pribadi yang berbeda.
Pengaturan Klien Windows #
Unduh dan instal paket msi Windows dari situs web WireGuard.
Setelah terinstal buka aplikasi WireGuard dan klik “Add Tunnel” -> “Add empty tunnel…” seperti terlihat pada gambar di bawah ini:
Sepasang kunci publik secara otomatis dibuat dan ditampilkan di layar.
Masukkan nama untuk terowongan dan edit konfigurasi sebagai berikut:
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0
Di bagian antarmuka tambahkan baris baru untuk menentukan Alamat terowongan klien.
Di bagian rekan tambahkan bidang berikut:
- PublicKey - kunci publik server Ubuntu (
/etc/wireguard/publickey
berkas). - Endpoint - alamat IP server Ubuntu diikuti dengan titik dua, dan port WireGuard (51820).
- IP yang Diizinkan - 0.0.0.0/0
Setelah selesai klik tombol “Simpan”.
Tambahkan Rekan Klien ke Server #
Langkah terakhir adalah menambahkan kunci publik klien dan alamat IP ke server:
sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2
Pastikan untuk mengubah CLIENT_PUBLIC_KEY
dengan kunci publik yang Anda buat di mesin klien (sudo cat /etc/wireguard/publickey
) dan sesuaikan alamat IP klien jika berbeda. Pengguna Windows dapat menyalin kunci publik dari aplikasi WireGuard.
Setelah selesai, kembali ke mesin klien dan buka antarmuka tunneling.
Klien Linux dan macOS #
Pada klien Linux, jalankan perintah berikut untuk memunculkan antarmuka:
sudo wg-quick up wg0
Sekarang Anda harus terhubung ke server Ubuntu, dan lalu lintas dari mesin klien Anda harus diarahkan melaluinya. Anda dapat memeriksa koneksi dengan:
sudo wg
interface: wg0
public key: sZThYo/0oECwzUsIKTa6LYXLhk+Jb/nqK4kCCP2pyFg=
private key: (hidden)
listening port: 48052
fwmark: 0xca6c
peer: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
endpoint: XXX.XXX.XXX.XXX:51820
allowed ips: 0.0.0.0/0
latest handshake: 1 minute, 22 seconds ago
transfer: 58.43 KiB received, 70.82 KiB sent
Anda juga dapat membuka browser Anda, ketik “what is my ip”, dan Anda akan melihat alamat IP server Ubuntu Anda.
Untuk menghentikan tunneling, turunkan wg0
antarmuka:
sudo wg-quick down wg0
Klien Windows #
Jika Anda menginstal WireGuard di Windows, klik tombol "Aktifkan". Setelah peer terhubung, status tunnel akan berubah menjadi Aktif: