ssh pada Chapter sebelumnya mengenkripsi percakapan dua mesin yang saling mengenali; VPN (Virtual Private Network) memperbesar gambarnya. Dua ujung — laptop dengan intranet kantor, atau dua kantor di kota berbeda — membangun terowongan terenkripsi yang menembus jaringan publik, lalu berperilaku seolah terhubung langsung dalam satu jaringan privat. Bagi kernel, terowongan itu hanyalah satu interface jaringan baru; bagi trafik, hanya rute-rute tertentu yang dialihkan ke dalamnya. Chapter ini membedah konsep terowongan itu, dua implementasi paling populer — WireGuard dan OpenVPN — beserta batas jujur dari janji “privasi” yang sering disandang VPN.
Terowongan di Atas Jaringan Publik #
Mekanisme dasarnya disebut encapsulation: paket IP milik jaringan privat (misalnya menuju server intranet 192.0.2.0/24) dibungkus dan dienkripsi menjadi isi paket UDP biasa, dikirim melalui internet, lalu dibongkar kembali di ujung terowongan. Penyadap di jalur publik hanya melihat dua endpoint yang bertukar data tersandi — tidak bisa membaca tujuan asli di dalamnya. Tiga kasus pemakaian paling umum:
- Akses intranet dari jauh — pekerja remote menyambungkan laptop ke gateway VPN kantor, dan seolah-olah berada di dalam jaringan kantor: server berkas, printer, dan aplikasi internal langsung terjangkau.
- Site-to-site antar kantor — dua router di dua kantor menjaga terowongan yang selalu hidup, sehingga mesin di Jakarta memanggil mesin di Bandung dengan alamat internal tanpa tahu bahwa jalurnya menembus internet.
- Perlindungan wifi publik — trafik laptop di jaringan kafe yang tidak dipercaya dienkripsi sampai keluar dari VPN server, sehingga pengendus di jaringan yang sama tidak bisa membacanya.
Interface tun, Rumah Terowongan #
Saat VPN menyala, kernel mendapat interface virtual baru — biasanya bertipe tun (tunnel, point-to-point, tanpa hardware fisik) atau wg0 milik WireGuard — lengkap dengan alamat IP di subnet terowongan. Inilah contoh tampilan interface WireGuard yang sedang aktif, diperiksa dengan alat ip dari Chapter Network Interfaces
:
$ ip -br addr show wg0
wg0 UNKNOWN 10.10.0.2/32
Status UNKNOWN bukan masalah: interface virtual tidak punya kabel untuk dideteksi carrier-nya, jadi kolom itu memang tidak berlaku. Yang penting adalah alamat 10.10.0.2/32 — identitas mesin kita di dalam terowongan, berbeda dari alamat fisik kartu jaringan. Setiap paket yang routing table arahkan ke wg0 akan dibungkus, dienkripsi, dan dikirim ke ujung lainnya.
WireGuard: Konfigurasi Sekecil Isinya #
WireGuard lahir sebagai kritik terhadap VPN lama yang gemuk: kode intinya hanya beberapa ribu baris, masuk ke kernel Linux sebagai modul, dan seluruh konfigurasinya cukup satu berkas kecil. Sisi kriptografinya modern dan sengaja tidak bisa dinegosiasikan turun — tidak ada ruang untuk server “salah pilih” algoritma lemah. Menghidupkan terowongan sungguhan membutuhkan root dan berkas di /etc/wireguard/, jadi di sini kita membangun berkas itu sebagai latihan di sandbox — dengan kunci privat ditulis sebagai penampung:
cat > wg0.conf <<'EOF'
[Interface]
PrivateKey = YOUR_PRIVATE_KEY
Address = 10.10.0.2/32
ListenPort = 51820
DNS = 192.0.2.53
[Peer]
PublicKey = CONTOH_PUBLIC_KEY_PEER
AllowedIPs = 10.10.0.0/24, 192.0.2.0/24
Endpoint = vpn.kantor.example.com:51820
PersistentKeepalive = 25
EOF
cat wg0.confOutput yang Dihasilkan:
[Interface]
PrivateKey = YOUR_PRIVATE_KEY
Address = 10.10.0.2/32
ListenPort = 51820
DNS = 192.0.2.53
[Peer]
PublicKey = CONTOH_PUBLIC_KEY_PEER
AllowedIPs = 10.10.0.0/24, 192.0.2.0/24
Endpoint = vpn.kantor.example.com:51820
PersistentKeepalive = 25Mari kita bedah baris demi baris:
[Interface]: sisi kita sendiri — laptop yang memakai berkas ini.PrivateKey = YOUR_PRIVATE_KEY: kunci privat kita, penampung yang di mesin asli berupa base64 panjang; berkas aslinya di/etc/wireguard/wg0.confwajib dilindungi permission ketat karena siapa pun yang membacanya bisa menyamar sebagai kita.Address = 10.10.0.2/32: alamat kita di dalam terowongan — alamat inilah yang muncul diip -br addr show wg0.ListenPort = 51820: port UDP tempat menerima paket dari peer; 51820 adalah kebiasaan komunitas WireGuard.DNS = 192.0.2.53: resolver internal kantor yang dipakai selama terowongan aktif, agar nama sepertiintranet.kantorbisa terjawab.[Peer]: ujung lain terowongan — biasanya gateway VPN di kantor.PublicKey = CONTOH_PUBLIC_KEY_PEER: kunci publik peer, identitas yang kita percaya; WireGuard mengenali peer dari kunci, bukan dari alamat.AllowedIPs: baris paling berpengaruh — daftar subnet yang boleh datang dari peer ini dan tujuan yang akan dirutekan kepadanya; kita bedah perannya sebentar lagi.Endpoint: alamat publik peer di internet, tempat paket tersandi dikirim.PersistentKeepalive = 25: mengirim sapaan kecil tiap 25 detik agar NAT di router kita tetap menjaga pintu terowongan terbuka — penting saat laptop berpindah jaringan.
Di mesin sungguhan, wg-quick up wg0 menghidupkan interface ini dan wg-quick down wg0 mematikannya — keduanya perlu root.
Rute Trafik: Split Tunnel atau Full Tunnel #
AllowedIPs adalah sakelar yang menentukan berapa banyak trafik yang masuk terowongan. Dua mode yang biasa dipilih — dan selisihnya memang satu baris — kita buktikan dengan membandingkan dua berkas:
cat > split.conf <<'EOF'
[Peer]
PublicKey = CONTOH_PUBLIC_KEY_PEER
AllowedIPs = 10.10.0.0/24, 192.0.2.0/24
Endpoint = vpn.kantor.example.com:51820
EOF
cat > penuh.conf <<'EOF'
[Peer]
PublicKey = CONTOH_PUBLIC_KEY_PEER
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = vpn.kantor.example.com:51820
EOF
diff split.conf penuh.conf || trueOutput yang Dihasilkan:
3c3
< AllowedIPs = 10.10.0.0/24, 192.0.2.0/24
---
> AllowedIPs = 0.0.0.0/0, ::/0Config pertama adalah split tunnel: hanya trafik menuju 10.10.0.0/24 dan 192.0.2.0/24 yang masuk terowongan; browsing ke internet tetap lewat jalur biasa, hemat dan cepat. Config kedua adalah full tunnel: 0.0.0.0/0 menangkap semua tujuan IPv4 (dan ::/0 semua IPv6), sehingga seluruh trafik keluar dari ujung VPN server. Full tunnel memberi perlindungan menyeluruh di jaringan asing, tetapi juga menyerahkan seluruh jalur keluar kita kepada VPN server — pilihannya selalu soal siapa yang lebih layak dipercaya melihat trafik kita di mana.
OpenVPN, Pihak yang Matang #
Sebelum WireGuard ada, OpenVPN sudah dua dekade menjadi standar de facto — dan tetap relevan. OpenVPN berbasis TLS dan sertifikat X.509 (rantai CA, client cert, server cert), berjalan sebagai proses userspace, dan bisa lewat UDP maupun TCP — termasuk port 443, yang menyelamatkan pengguna di jaringan yang membatasi UDP. Perbandingan singkat keduanya:
| Aspek | WireGuard | OpenVPN |
|---|---|---|
| Basis kode | muda, kecil, mudah diaudit | matang, besar, teruji lama |
| Berjalan di | modul kernel | proses userspace |
| Autentikasi | pasangan kunci statis | rantai sertifikat X.509 |
| Kriptografi | set modern yang tetap | TLS, dinegosiasikan dan fleksibel |
| Konfigurasi | satu wg0.conf pendek | berkas .ovpn + rantai sertifikat |
| Protokol transpor | UDP | UDP atau TCP (termasuk 443) |
Pilihan praktisnya sederhana: untuk terowongan baru yang kita kendalikan dua ujungnya, WireGuard menang dalam kemudahan; untuk infrastruktur lama, sertifikat yang bisa dicabut, atau jaringan yang hanya mengizinkan TCP, OpenVPN masih jawabannya.
VPN Komersial Bukan Anonimitas #
Iklan VPN sering berbunyi “jadi tak terlacak” — dan itu berlebihan. Memakai VPN komersial hanya memindahkan kepercayaan: alih-alih ISP yang melihat tujuan trafik kita, kini penyedia VPN yang melihatnya, lengkap dengan waktu sambung dan alamat IP asli. Identitas di lapisan aplikasi — akun yang kita login, cookie browser, sidik jari perangkat — tidak tersentuh VPN sama sekali; situs tetap mengenali kita sebagai kita. Ancaman yang benar-benar dijawab VPN di wifi publik adalah pengendus di jaringan lokal — dan untuk itu, VPN memang alat yang tepat.
Seperti semua peralatan di section ini, VPN pun akhirnya hanya sekumpulan interface, rute, dan proses — dan semua elemen itu bisa sakit satu per satu. Chapter penutup section ini merangkai seluruh alat diagnosa dari ip sampai curl menjadi pola kerja yang tertib.
Referensi lanjut: wiki Arch tentang WireGuard
untuk instalasi dan pemakaian wg-quick, serta wiki Arch tentang OpenVPN
untuk konfigurasi berbasis sertifikat.