Panduan terkait
Mengenal WireGuard: cara kerja dan sejarahnya
Diperbarui
WireGuard adalah protokol VPN open source rancangan Jason A. Donenfeld, dipublikasikan sekitar 2015 dan resmi masuk kernel Linux pada 2020. Cirinya bisa diringkas dalam satu kata: sedikit. Kodenya sedikit, implementasi intinya hanya beberapa ribu baris, sementara OpenVPN dan IPsec ratusan ribu baris. Opsinya sedikit, hanya ada satu set algoritma enkripsi yang tetap dan tidak bisa dipilih. Statusnya sedikit, tidak ada konsep “sedang menyambung” atau “terputus”: ada data dikirim, tidak ada data diam. Dari situ datang kecepatan, hemat baterai, dan mudah diaudit, tetapi juga keterbatasannya: hanya lewat UDP, tanpa penyamaran, dan tidak mengurus pembagian kunci. Di bawah ini dibahas dulu cara kerjanya, lalu bagaimana ia pelan-pelan menjadi fondasi VPN generasi baru.
Ide desainnya: VPN yang berperilaku seperti kartu jaringan
Sebelum WireGuard, pilihan utamanya adalah IPsec dan OpenVPN. IPsec adalah keluarga standar yang besar dengan sangat banyak opsi, dan terkenal repot saat perangkat dari vendor berbeda harus saling tersambung. OpenVPN berjalan di user space dan bergantung pada library TLS yang besar, fleksibel tetapi lambat. Kode keduanya begitu besar sehingga hampir tidak ada yang bisa mengauditnya secara utuh.
WireGuard mengambil arah sebaliknya: mengerjakan satu hal saja dan mengerjakannya dengan benar. Di sistem, ia tampil sebagai kartu jaringan virtual (misalnya wg0). Anda memberi kartu itu kunci privat Anda dan kunci publik beberapa peer; paket yang dikirim ke kartu itu dienkripsi lalu dikirim keluar, dan paket yang masuk didekripsi lalu keluar dari kartu itu. Sisanya, seperti routing, firewall, dan pembagian alamat, diserahkan ke alat yang sudah ada di sistem.
Hal yang sengaja tidak dikerjakannya juga jelas: tidak menegosiasikan algoritma, tidak mengurus username dan kata sandi, tidak membagikan alamat, dan tidak menyamarkan lalu lintas. Semua itu dianggap sumber celah keamanan, atau diserahkan ke alat di lapisan atas.
Cryptokey routing: kunci publik adalah identitas
Di WireGuard, setiap perangkat punya sepasang kunci, dan kunci publiknya adalah identitasnya, mirip cara kerja SSH: kedua sisi saling menulis kunci publik lawannya di konfigurasi masing-masing, dan kepercayaan pun terbentuk, tanpa sertifikat, tanpa username dan kata sandi.
Di konfigurasi, setiap peer diberi satu baris “alamat yang diizinkan” (AllowedIPs). Baris ini mengatur dua arah sekaligus: saat mengirim, alamat tujuan masuk rentang milik peer mana, paket dienkripsi dengan kunci publik peer itu dan dikirim kepadanya; saat menerima, setelah didekripsi dicek apakah alamat asalnya ada di rentang peer tersebut, kalau tidak, paket dibuang. Cara ini disebut cryptokey routing: tabel routing dan kontrol akses digabung menjadi satu tabel.
Jadi kalau AllowedIPs sebuah peer ditulis 0.0.0.0/0, artinya “semua lalu lintas diserahkan kepadanya”, yaitu yang biasa disebut VPN global; kalau hanya ditulis satu subnet jaringan internal, terowongan hanya dipakai saat mengakses subnet itu.
Handshake dan enkripsi: satu set algoritma yang tetap
Sebelum dua perangkat berkomunikasi pertama kali, mereka melakukan handshake: pihak pemulai mengirim satu paket, pihak penjawab membalas satu paket, dan sekali bolak-balik itu selesai, kedua pihak mendapat satu set kunci sesi yang hanya berlaku untuk periode itu. Handshake ini berbasis kerangka protokol Noise: kunci jangka panjang kedua pihak dipakai untuk saling mengautentikasi, sementara kunci sementara menjamin forward secrecy, sehingga meskipun kunci privat jangka panjang kelak bocor, lalu lintas lama yang sempat direkam tetap tidak bisa dibuka.
Kunci sesi diganti otomatis setiap beberapa menit, seluruh prosesnya tidak terlihat oleh pengguna, dan tidak ada yang namanya “sambung ulang”.
Algoritma enkripsinya tetap: pertukaran kunci memakai Curve25519, enkripsi data memakai ChaCha20-Poly1305, dan hash memakai BLAKE2s. Tidak ada negosiasi, jadi tidak ada serangan downgrade: penyerang tidak bisa membujuk kedua sisi untuk beralih ke algoritma yang lebih lemah. Kalau suatu hari salah satu algoritma ini bobol, solusinya adalah merilis versi protokol baru yang menggantinya secara utuh, bukan menambah opsi.
Selain itu bisa ditambahkan satu kunci pre-shared yang dipakai bersama mekanisme kunci publik, untuk berjaga-jaga terhadap ancaman komputer kuantum di masa depan terhadap algoritma kunci publik.
Hanya UDP, tidak menjawab orang asing, tidak putus saat ganti jaringan
- Hanya UDP: WireGuard mengenkripsi setiap paket data secara terpisah lalu mengirimnya di dalam satu paket UDP. Tidak memakai TCP itu disengaja: kalau TCP dijalankan di dalam TCP, kedua lapisan sama-sama mengirim ulang, dan saat ada packet loss keduanya saling menghambat.
- Tidak menjawab orang asing: paket yang tidak lolos autentikasi tidak pernah dibalas. Bagi orang yang memindai port, port itu tampak seperti tertutup, dan tidak ada cara untuk tahu bahwa WireGuard berjalan di sana.
- Roaming: WireGuard tidak mengenal “koneksi”, hanya kunci publik. Kalau alamat peer berubah, misalnya HP pindah dari Wi‑Fi ke data seluler, paket berikutnya darinya cukup lolos autentikasi, dan sisi ini otomatis mengirim balasan ke alamat baru. Karena itu terowongan tidak putus saat berganti jaringan.
- Senyap: saat tidak ada data yang perlu dikirim, terowongan tidak menghasilkan lalu lintas sama sekali, sehingga sangat hemat baterai di HP. Hanya kalau perangkat berada di balik router dan harus selalu bisa dihubungi pihak lain, Anda perlu menyalakan keepalive berkala (PersistentKeepalive), yang mengirim paket kecil setiap beberapa puluh detik untuk menjaga pemetaan di router.
Kenapa cepat
- Berjalan di kernel: di Linux, WireGuard adalah modul kernel, sehingga paket tidak perlu disalin bolak-balik antara kernel dan program pengguna; OpenVPN secara tradisional berjalan di user space, jadi setiap paket harus memutar sekali lagi.
- Algoritmanya cocok untuk semua CPU: ChaCha20 tidak bergantung pada instruksi akselerasi hardware khusus, sehingga sangat diuntungkan di chip tanpa instruksi AES seperti di HP dan router.
- Handshake singkat: sekali bolak-balik sudah bisa mengirim data, hampir tanpa menunggu saat membangun koneksi.
- Kodenya sedikit: jalurnya pendek, dan semua optimasi yang mungkin dilakukan dipusatkan di beberapa langkah kunci.
- Perlu dicatat, semua ini adalah overhead protokol dan implementasinya sendiri. Kecepatan nyata di jalur lintas negara lebih banyak ditentukan oleh packet loss di jalur itu dan sikap operator terhadap UDP.
Sejarah: dari proyek satu orang sampai masuk kernel
- Sekitar 2015: Jason A. Donenfeld mulai mengembangkan dan mempublikasikan WireGuard, awalnya sebagai modul kernel terpisah di Linux.
- 2017: makalah tentang desainnya diterbitkan di konferensi keamanan jaringan NDSS, dan protokolnya kemudian melewati beberapa verifikasi formal independen. Di sekitar tahun yang sama, penyedia VPN seperti Mullvad mulai menyediakan akses WireGuard.
- 2018: pencipta Linux, Linus Torvalds, memuji kodenya di milis dan menyebutnya karya seni dibandingkan OpenVPN dan IPsec. Ucapan itu membuatnya terkenal luas di kalangan developer.
- 2019: Cloudflare merilis BoringTun, implementasi user space yang ditulis dengan Rust, dan memakai WireGuard untuk WARP; NordVPN meluncurkan NordLynx yang berbasis WireGuard; Tailscale juga mulai di periode ini dengan WireGuard sebagai data plane-nya.
- Maret 2020: WireGuard resmi masuk mainline kernel bersama Linux 5.6, bersamaan dengan rilis versi 1.0. Sejak itu distro Linux utama sudah membawa WireGuard tanpa perlu memasang modul tambahan. Di tahun yang sama OpenBSD juga menambahkannya ke kernel.
- 2021: di Windows hadir WireGuardNT, implementasi di level kernel yang kinerjanya jauh di atas implementasi user space sebelumnya; FreeBSD kemudian juga punya implementasi kernel.
- Sekarang: Windows, macOS, Linux, iOS, dan Android punya aplikasi resmi, sistem router dan NAS seperti OpenWrt dan Synology umumnya sudah mendukungnya bawaan, dan hampir semua VPN komersial menjadikannya protokol bawaan atau pilihan.
Yang tidak dikerjakannya, dan keterbatasan yang muncul darinya
- Tidak mengurus pembagian kunci: setiap kali menambah perangkat, kunci publiknya harus ditulis ke konfigurasi perangkat lain. Kalau perangkatnya banyak, ini jadi tidak terurus, dan justru inilah alasan alat seperti Tailscale ada.
- Tidak membagikan alamat secara dinamis: alamat internal setiap peer ditulis permanen di konfigurasi, tanpa mekanisme “diberi alamat setelah tersambung” seperti di OpenVPN. VPN komersial yang memakainya harus membangun satu lapisan sendiri di luarnya.
- Kekhawatiran privasi: server perlu mengingat alamat publik terakhir setiap peer agar bisa membalas paket. Penyedia VPN yang menjanjikan “tanpa log” biasanya perlu penanganan tambahan (misalnya penghapusan berkala atau translasi alamat ganda).
- Hanya UDP: di jaringan yang memblokir atau membatasi UDP, ia tidak jalan atau sangat lambat. Kalau ingin lewat TCP atau port 443, harus dibungkus alat lain di luarnya.
- Tanpa penyamaran: format dan panjang paket handshake dan paket data punya ciri tetap, sehingga mudah dikenali. Tujuan desainnya adalah keamanan dan kesederhanaan, bukan melawan sensor.
- Tanpa sistem akun: protokolnya tidak mengenal username, kata sandi, atau masa berlaku; yang dikenali hanya kunci publik.
Dibandingkan OpenVPN dan IPsec
- Jumlah kode: inti WireGuard beberapa ribu baris; OpenVPN beserta library TLS yang dipakainya, juga berbagai implementasi IPsec, berada di kisaran ratusan ribu baris.
- Transport: WireGuard hanya UDP; OpenVPN bisa keduanya dan bisa lewat TCP 443, membaur di port lalu lintas HTTPS; IPsec memakai nomor protokolnya sendiri serta UDP 500 / 4500.
- Konfigurasi: WireGuard beberapa baris per peer; file konfigurasi OpenVPN punya banyak opsi tetapi fleksibel; IPsec paling rumit.
- Kinerja: di jaringan yang bersih, WireGuard biasanya paling cepat dan paling hemat baterai; OpenVPN versi baru juga sudah punya akselerasi kernel (DCO), sehingga selisihnya makin kecil.
- Fitur: autentikasi username dan kata sandi, pembagian alamat dan rute secara dinamis, serta jalan lewat TCP sudah bawaan OpenVPN, sedangkan WireGuard perlu dilengkapi sistem di luarnya.
- Dukungan perangkat: OpenVPN sudah lama ada, sehingga hampir semua router lama, NAS, dan perangkat embedded mengenalnya; WireGuard sudah umum di sistem beberapa tahun terakhir, tetapi belum tentu ada di perangkat lama.
Yang tumbuh di atas WireGuard
- Tailscale: menambahkan login, pembagian kunci, NAT traversal, dan relay di atas WireGuard, menjadi jaringan otomatis antarperangkat; lihat Mengenal Tailscale lebih dalam. Headscale adalah implementasi server kontrolnya yang open source.
- Netmaker, NetBird, Firezone, dan sejenisnya: produk jaringan atau zero trust lain yang juga memakai “WireGuard sebagai data plane, manajemennya dibuat sendiri”.
- Cloudflare WARP: aplikasi WireGuard untuk pengguna umum yang mengirim lalu lintas ke jaringan Cloudflare.
- Kemasan khusus VPN komersial: NordLynx dan sejenisnya, yang menambahkan pembagian alamat dan penanganan privasi di luar WireGuard.
- Varian seperti AmneziaWG: mengubah header paket dan menambah padding untuk menyembunyikan ciri tetap WireGuard, untuk jaringan yang diperiksa ketat; varian ini tidak kompatibel dengan aplikasi WireGuard standar.
Di jaringan di dalam China
- Bisa dipakai atau tidak, pertama tergantung UDP: banyak jaringan internet rumah dan seluler membatasi kecepatan UDP bervolume besar, dan gejalanya cepat di awal lalu melambat setelah beberapa saat, atau jelas tersendat di jam sibuk malam.
- Koneksi langsung lintas negara mudah dikenali: paket handshake WireGuard punya ciri tetap, sehingga di jalur lintas negara bisa dikenali dan diganggu, dengan gejala handshake gagal atau aliran data berhenti setelah dipakai sebentar. Ini akibat langsung protokol tanpa penyamaran.
- Jaringan antarperangkat di dalam China (kantor dan rumah, HP dan NAS) tidak melewati jalur lintas negara, jadi umumnya tidak kena masalah ini; yang berpengaruh hanya pembatasan UDP dan tingkat keberhasilan hole punching.
- Jadi WireGuard lebih cocok untuk jaringan antarperangkat dan akses jarak jauh; untuk lintas negara yang stabil dalam jangka panjang, perlu dipadukan dengan cara yang punya penyamaran atau bisa lewat TCP / TLS. Perbandingan tiap protokol ada di Perbandingan protokol VPN.
Di mana LeoTun memakai WireGuard
Menu “Privat” di LeoTun memakai Tailscale, dan data plane-nya adalah WireGuard: terowongan antarperangkat maupun terowongan ke node keluar di tiap wilayah, semuanya dienkripsi dan dikirim olehnya. Anda tidak perlu membuat kunci atau menulis konfigurasi sendiri; cukup login dengan akun situs ini, dan aplikasinya mengurus sisanya. Cara memakainya ada di Apa itu Privat (Tailscale), dan pintu masuknya di halaman Privat.
Selain Privat, akun yang sama juga punya cara yang tidak bergantung pada UDP: Cisco (AnyConnect) lewat TLS, OpenVPN bisa lewat TCP, dan Hiddify (Hysteria2) khusus menghadapi packet loss. Kalau Privat lambat dan tidak stabil di jaringan Anda, cukup ganti cara; lihat Cara koneksi mana yang cocok untuk situasi apa.
FAQ
Mana yang lebih bagus, WireGuard atau OpenVPN?
Di jaringan yang bersih dan tidak membatasi UDP, WireGuard lebih cepat, lebih hemat baterai, dan tidak putus saat ganti jaringan. Kalau perlu lewat TCP, perlu login dengan username dan kata sandi, atau perangkatnya agak lama, OpenVPN lebih cocok. Keduanya protokol open source yang sudah teruji lama dan sama-sama andal dari segi keamanan.
Apakah WireGuard aman?
Ia memakai satu set algoritma yang modern dan konservatif, protokolnya sudah diverifikasi secara formal, dan kodenya kecil sehingga mudah diaudit; sampai sekarang belum ada cara nyata yang diketahui untuk membobolnya. Yang perlu diingat, ia tidak mengurus penyimpanan dan pembagian kunci: kalau kunci privat bocor atau kunci publik dipasang ke pihak yang salah, protokolnya tidak bisa menolong.
Kenapa WireGuard hanya mendukung UDP?
Itu pilihan desain. Kalau TCP dijalankan di dalam koneksi TCP, kedua lapisan sama-sama mengirim ulang saat ada packet loss dan kinerjanya anjlok; selain itu UDP membuat fitur “tidak menjawab orang asing” dan roaming mudah diwujudkan. Harganya, ia tidak bisa dipakai di jaringan yang memblokir UDP.
Apakah WireGuard bisa dipakai di China?
Untuk jaringan antarperangkat di dalam China umumnya bisa. Koneksi langsung lintas negara tidak stabil: lalu lintasnya tanpa penyamaran sehingga mudah dikenali dan diganggu, ditambah sebagian jalur membatasi kecepatan UDP. Kalau butuh koneksi lintas negara yang stabil, padukan dengan cara yang punya penyamaran atau lewat TLS.
Siapa pembuat WireGuard, dan kapan masuk kernel Linux?
Dirancang dan dikembangkan oleh Jason A. Donenfeld, dipublikasikan sekitar 2015; masuk mainline kernel bersama Linux 5.6 pada Maret 2020, bersamaan dengan rilis versi 1.0.
Apakah Tailscale sama dengan WireGuard?
Bukan hal yang sama. WireGuard adalah protokol terowongan terenkripsi; Tailscale adalah sistem jaringan antarperangkat yang memakai WireGuard untuk mengirim data, dan juga mengurus login, pembagian kunci, NAT traversal, dan relay. Lihat Mengenal Tailscale lebih dalam.
Apakah saya harus mengatur kunci sendiri untuk memakai WireGuard?
Kalau memakai WireGuard langsung, ya: setiap perangkat membuat kunci, lalu kunci publik, alamat, dan alamat peer ditulis ke konfigurasi. Kalau lewat Tailscale atau aplikasi VPN komersial, software-nya yang mengerjakan itu. Di Privat milik LeoTun, cukup login dengan akun Anda.