WireGuard untuk Pemula: Konsep Dasar
Sebagai Kepala IT yang tiap hari bolak-balik urus infrastruktur klinik/rumah sakit, saya sering ketemu tim yang butuh akses aman ke server internal—entah untuk maintenance, deploy, atau sekadar cek log dari luar kantor. Dulu saya andalkan OpenVPN, tapi belakangan WireGuard jadi pilihan utama karena konfigurasinya jauh lebih ringkas. Masalahnya, banyak yang mundur duluan begitu baca dokumentasi resminya yang penuh istilah kriptografi. Padahal untuk pakai WireGuard sehari-hari, kita cuma perlu paham tiga konsep: keypair, peer, dan allowed-ips. Kalau tiga ini sudah klik, sisanya tinggal ikuti pola.
Keypair: identitas, bukan password
Di WireGuard, setiap perangkat—baik itu server maupun client—punya sepasang kunci: private key dan public key. Bayangkan ini seperti kartu identitas digital. Private key disimpan rahasia di perangkat masing-masing, sementara public key dibagikan ke lawan bicara (peer) supaya mereka tahu "ini saya, boleh dipercaya".
Bedanya dengan sistem username/password, di sini tidak ada proses login manual. Begitu dua perangkat saling menukar public key dan konfigurasinya cocok, koneksi terenkripsi langsung terbentuk secara otomatis. Contoh generate keypair-nya kira-kira begini:
wg genkey | tee privatekey | wg pubkey > publickey
Yang penting diingat: private key jangan pernah dikirim ke siapa pun, bahkan ke sesama admin. Kalau bocor, siapa pun bisa menyamar jadi perangkat itu.
Peer: siapa saja yang boleh saling ngobrol
Setelah punya keypair, langkah berikutnya adalah mendefinisikan peer—yaitu perangkat lain yang diizinkan berkomunikasi. Setiap konfigurasi WireGuard pada dasarnya adalah daftar "saya siapa" (keypair sendiri) plus "siapa saja teman saya" (daftar peer beserta public key masing-masing).
Model ini sebenarnya lebih dekat ke arsitektur mesh daripada VPN tradisional yang selalu client-ke-server. Server bisa jadi satu peer di antara banyak peer lain, dan kalau perlu, dua client pun bisa saling terhubung langsung tanpa lewat server dulu, selama network-nya mendukung. Untuk kebutuhan kantor kecil sampai menengah, biasanya cukup pola hub-and-spoke: satu server pusat, beberapa client sebagai peer-nya.
Setiap entri peer di file konfigurasi biasanya berisi public key peer tersebut, endpoint (alamat IP/host dan port kalau peer itu punya IP tetap), dan tentu saja allowed-ips.
Allowed-ips: bagian yang paling sering bikin bingung
Ini yang menurut saya paling sering disalahpahami pemula. Allowed-ips punya dua fungsi sekaligus, tergantung sisi mana yang membacanya:
- Di sisi routing, allowed-ips menentukan trafik dengan tujuan IP mana saja yang akan dikirim lewat tunnel ke peer tersebut.
- Di sisi keamanan, allowed-ips juga jadi filter: paket masuk dari peer itu hanya diterima kalau source IP-nya cocok dengan daftar allowed-ips yang didefinisikan untuknya.
Sebagai ilustrasi, kalau di konfigurasi client saya set AllowedIPs = 0.0.0.0/0, artinya semua trafik internet client akan lewat tunnel VPN (full tunnel). Kalau saya set AllowedIPs = 10.10.0.0/24, hanya trafik ke subnet internal itu yang lewat tunnel, sementara browsing biasa tetap lewat jalur internet normal (split tunnel). Untuk kebutuhan akses infrastruktur internal, saya hampir selalu pakai pola split tunnel—lebih hemat bandwidth dan lebih gampang di-audit.
Satu kesalahan umum: menyamakan allowed-ips dengan "alamat IP milik peer". Padahal allowed-ips bisa berupa banyak subnet sekaligus, dan tidak harus sama dengan IP tunnel peer itu sendiri—misalnya server bisa mengumumkan seluruh jaringan kantor di belakangnya lewat allowed-ips, bukan cuma IP dirinya sendiri.
Takeaway
Kalau harus disederhanakan: keypair itu identitas siapa-perangkat-ini, peer itu daftar siapa-boleh-connect, dan allowed-ips itu aturan trafik-mana-yang-boleh-lewat-dan-dari-siapa. Paham tiga hal ini sudah cukup untuk mulai bikin tunnel WireGuard yang jalan dengan benar, tanpa harus jadi ahli kriptografi dulu. Detail seperti handshake dan enkripsi di baliknya bisa dipelajari belakangan—yang penting konsep mental model-nya sudah kuat lebih dulu.