Episode ini membedah arsitektur OpenVPN: pertukaran kunci lewat SSL/TLS, enkripsi data channel, enkapsulasi UDP 1194 atau TCP 443, perbedaan mode tun dan tap, serta komponen utama server dan client.

Setelah memahami sejarah, sekarang saatnya membedah anatomi sebuah koneksi OpenVPN. Ketika kalian menghubungkan client ke server, sebenarnya terjadi banyak hal dalam hitungan detik: negosiasi parameter, pertukaran sertifikat, pembentukan kunci enkripsi, pembuatan interface virtual, sampai pengaturan routing.
Episode 2 ini adalah jembatan antara teori dan praktik. Kita akan membahas protokol dan encapsulation, perbedaan mendasar mode tun dan tap, serta komponen-komponen arsitektur yang akan kalian konfigurasi di episode 3. Setelah episode ini, istilah seperti control channel, data channel, dan cipher suite bukan lagi kotak hitam.
OpenVPN pada dasarnya adalah mesin encapsulation: paket IP biasa dibungkus, dienkripsi, lalu dikirim lewat jaringan lain. Mari bedah lapisan demi lapisan.
Langkah pertama setiap koneksi adalah TLS handshake. Server dan client bertukar sertifikat, memverifikasi kepercayaan lewat CA, dan menegosiasikan kunci sesi yang akan dipakai untuk enkripsi data.
Yang penting dipahami: TLS hanya bertugas pada fase negosiasi dan pengelolaan kunci. Setelah kunci sesi terbentuk, lalu lintas data harian tidak lagi lewat mesin TLS, melainkan lewat data channel yang lebih ringan.
Setelah handshake selesai, OpenVPN membuat data channel: sebuah sesi enkripsi simetris yang cepat untuk setiap paket. Setiap paket data dienkripsi dan diberi kode autentikasi, sehingga isinya tidak bisa dibaca maupun diubah oleh pihak ketiga.
Parameter data channel seperti cipher AES-256-GCM dan auth SHA256 dikontrol lewat direktif yang akan kita bahas tuntas di episode 7.
Tunnel OpenVPN bisa berjalan di atas dua transport:
Pilihan transport ini ditulis di direktif proto pada server dan harus cocok dengan client. Server yang menjalankan dua proto sekaligus dibahas di episode 17.
Salah satu keputusan pertama dalam merancang VPN adalah memilih device virtual yang dipakai.
Mode tun bekerja di layer 3: OpenVPN membuat interface virtual seperti tun0 yang menerima paket IP, lalu merutekannya ke client lain. Ini adalah mode routed yang paling umum dipakai.
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500
inet 10.8.0.1 netmask 255.255.255.0 scope global tun0Perhatikan output di atas: tun0 punya alamat IP dalam subnet virtual 10.8.0.0/24. Karena bekerja di layer 3, tun tidak membawa lalu lintas broadcast — tapi itu justru efisien dan cocok untuk hampir semua kebutuhan.
Mode tap bekerja di layer 2: interface virtual seperti tap0 membawa frame Ethernet lengkap, termasuk ARP dan broadcast. Ini memungkinkan VPN berperilaku seperti switch jaringan.
Mode tap berguna untuk menjalankan protokol yang butuh broadcast, seperti protokol jaringan lama atau game LAN tertentu. Konsekuensinya: overhead lebih besar dan tuning lebih rumit, sehingga tidak disarankan untuk penggunaan umum.
Gunakan dev tun untuk hampir semua skenario: remote access, site-to-site, dan proteksi lalu lintas. Gunakan dev tap hanya jika kalian benar-benar butuh bridging layer 2, misalnya agar semua client satu subnet dengan LAN server.
Di episode 6 dan 15 kita akan melihat perbedaan ini dalam praktik, termasuk implikasi routing dan bridging.
Secara arsitektur, sebuah deployment OpenVPN terdiri dari beberapa komponen yang bekerja sama.
Server daemon adalah proses openvpn yang menunggu koneksi di port tertentu dan mengelola seluruh client. Client daemon adalah proses yang memulai koneksi keluar ke server. Keduanya program yang sama — yang membedakan hanyalah file konfigurasi.
Pada Linux, daemon biasanya dijalankan sebagai service systemd dengan nama seperti openvpn-server@server, sesuai konvensi yang akan kita bahas di episode 3.
Setiap node membutuhkan set key material: CA certificate, sertifikat sendiri, key privat sendiri, dan parameter Diffie-Hellman di sisi server. Kombinasi inilah yang memungkinkan mutual TLS authentication.
/etc/openvpn/
├── ca.crt
├── server.crt
├── server.key
├── dh.pem
├── ta.key
└── server.confStruktur di atas adalah layout klasik server. Manajemen berkas-berkas ini secara aman — termasuk proteksi key dengan chmod 600 — akan kita bahas di episode 4 dan 13.
File konfigurasi adalah teks biasa berisi direktif, satu per baris, dengan komentar diawali tanda pagar. Direktif server dan client di bagian awal menentukan peran, lalu diikuti parameter port, device, sertifikat, dan kebijakan.
Contoh minimal file konfigurasi server:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pemBerkas ini akan tumbuh menjadi konfigurasi lengkap di episode 3. Perhatikan bahwa direktif port dan proto di atas menentukan titik masuk pertama sebuah koneksi.
OpenVPN mendukung ekstensibilitas lewat scripts dan plugins: --up, --down, --client-connect, --client-disconnect, serta plugin untuk autentikasi eksternal seperti LDAP dan RADIUS. Fitur inilah yang membuat OpenVPN bisa diintegrasikan ke sistem corporate yang kompleks.
Di episode 9, 10, dan 12 kita akan menulis script dan konfigurasi yang memanfaatkan titik-titik kait ini.
Untuk memperjelas, berikut alur sebuah koneksi dari client sampai tunnel aktif:
client --(TCP/UDP)--> server : port 1194
TLS handshake + mutual auth (control channel)
negosiasi cipher + kunci sesi
pembuatan tun0 di kedua sisi
enkapsulasi & enkripsi paket (data channel)
tunnel aktif, lalu lintas mengalirAlur di atas akan menjadi panduan saat kita troubleshooting di episode 8. Setiap tahap punya error khasnya masing-masing, dan memahami posisinya di alur ini akan mempercepat diagnosa.
Inti yang harus dibawa pulang:
tun (routed, layer 3) untuk hampir semua skenario; tap (bridged, layer 2) untuk kasus khusus.Di episode 3 selanjutnya kita akan menginstall OpenVPN dan membuat konfigurasi pertama — dari instalasi di berbagai platform, menulis server.conf dan client.ovpn yang bisa berkomunikasi, sampai memverifikasi tunnel pertama kali hidup. Siapkan lab kalian karena episode ini mulai banyak praktik.