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:

  1. 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.
  2. 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.
  3. 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 :

console
$ 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:

bash
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.conf

Output yang Dihasilkan:

text
[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

Mari kita bedah baris demi baris:

  1. [Interface]: sisi kita sendiri — laptop yang memakai berkas ini.
  2. PrivateKey = YOUR_PRIVATE_KEY: kunci privat kita, penampung yang di mesin asli berupa base64 panjang; berkas aslinya di /etc/wireguard/wg0.conf wajib dilindungi permission ketat karena siapa pun yang membacanya bisa menyamar sebagai kita.
  3. Address = 10.10.0.2/32: alamat kita di dalam terowongan — alamat inilah yang muncul di ip -br addr show wg0.
  4. ListenPort = 51820: port UDP tempat menerima paket dari peer; 51820 adalah kebiasaan komunitas WireGuard.
  5. DNS = 192.0.2.53: resolver internal kantor yang dipakai selama terowongan aktif, agar nama seperti intranet.kantor bisa terjawab.
  6. [Peer]: ujung lain terowongan — biasanya gateway VPN di kantor.
  7. PublicKey = CONTOH_PUBLIC_KEY_PEER: kunci publik peer, identitas yang kita percaya; WireGuard mengenali peer dari kunci, bukan dari alamat.
  8. AllowedIPs: baris paling berpengaruh — daftar subnet yang boleh datang dari peer ini dan tujuan yang akan dirutekan kepadanya; kita bedah perannya sebentar lagi.
  9. Endpoint: alamat publik peer di internet, tempat paket tersandi dikirim.
  10. 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:

bash
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 || true

Output yang Dihasilkan:

text
3c3
< AllowedIPs = 10.10.0.0/24, 192.0.2.0/24
---
> AllowedIPs = 0.0.0.0/0, ::/0

Config 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:

AspekWireGuardOpenVPN
Basis kodemuda, kecil, mudah diauditmatang, besar, teruji lama
Berjalan dimodul kernelproses userspace
Autentikasipasangan kunci statisrantai sertifikat X.509
Kriptografiset modern yang tetapTLS, dinegosiasikan dan fleksibel
Konfigurasisatu wg0.conf pendekberkas .ovpn + rantai sertifikat
Protokol transporUDPUDP 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.