Episode praktik pertama: menginstall OpenVPN di berbagai platform, memahami dependensi OpenSSL dan LZO, menulis server.conf dan client.ovpn pertama, lalu memverifikasi tunnel hidup dengan ping.

Teori di episode 2 sudah cukup. Sekarang saatnya tangan mulai bekerja: menginstall OpenVPN dan membuat konfigurasi pertama yang benar-benar berjalan. Episode 3 adalah milestone besar — di akhir episode ini, tunnel VPN pertama kalian akan hidup dan bisa di-ping.
Kita akan menginstall di beberapa platform, memahami dependensi yang wajib ada, menulis server.conf dan client.ovpn dari nol, lalu menjalankan daemon dan memverifikasi koneksi. Jika ada yang gagal, bagian troubleshooting di akhir episode akan menuntun kalian langkah demi langkah.
Instalasi di bawah otomatis membawa dua dependensi inti: OpenSSL 3.x sebagai mesin kriptografi untuk TLS, dan LZO sebagai library kompresi opsional. Verifikasi OpenSSL dengan openssl version setelah instalasi.
Debian dan turunannya menyediakan OpenVPN di repository resmi:
apt update
apt install -y openvpn easy-rsaPaket easy-rsa ikut diinstall karena akan dipakai di episode 4 untuk membangun PKI. Pastikan tidak ada error pada tahap ini sebelum lanjut.
Untuk CentOS Stream, Rocky Linux, atau AlmaLinux:
dnf install -y epel-release
dnf install -y openvpn easy-rsaEasy-RSA tersedia dari EPEL, jadi repository tambahan wajib diaktifkan terlebih dahulu.
Di macOS, Homebrew adalah cara tercepat:
brew install openvpnCatatan: di macOS, klien OpenVPN Connect atau Tunnelblick lebih sering dipakai untuk pemakaian harian. Perintah brew install openvpn menyediakan binary CLI yang sama dengan Linux.
Untuk lab cepat atau isolasi, image kylemanna/openvpn sangat populer:
docker run -v /etc/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://203.0.113.10Alur lengkap Docker akan kita pakai lagi di episode 17 dan 21. Untuk sekarang, instalasi native di VM lebih memudahkan pemahaman.
Cara paling fleksibel — dan paling jarang diperlukan:
apt install -y build-essential libssl-dev liblzo2-dev libpam0g-dev
curl -LO https://swupdate.openvpn.org/community/releases/openvpn-2.7.5.tar.gz
tar xzf openvpn-2.7.5.tar.gz && cd openvpn-2.7.5
./configure && make && make installJalur ini berguna jika kalian butuh fitur yang belum ada di paket distro. curl -LO digunakan untuk mengunduh tarball rilis resmi.
Buat file /etc/openvpn/server/server.conf di sisi server. File ini adalah versi ringkas dari konfigurasi production yang akan kita sempurnakan di episode-episode berikutnya:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
topology subnet
server 10.8.0.0 255.255.255.0
keepalive 10 120
user nobody
group nogroup
persist-key
persist-tun
verb 3Direktif server 10.8.0.0 255.255.255.0 membuat pool alamat untuk client, sementara keepalive 10 120 mengirim ping setiap 10 detik dan menganggap koneksi putus jika tidak ada respon 120 detik.
systemctl enable --now openvpn-server@server
systemctl status openvpn-server@serverService openvpn-server@server membaca konfigurasi server.conf di /etc/openvpn/server. Nama setelah tanda at adalah nama file konfigurasi tanpa ekstensi.
Di sisi client, buat file client.ovpn. Perhatikan perbedaan dengan server: direktif client, remote, dan nobind hanya berlaku untuk client:
client
dev tun
proto udp
remote 203.0.113.10 1194
resolv-retry infinite
nobind
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
verb 3Direktif remote-cert-tls server mencegah serangan man-in-the-middle dengan memastikan sertifikat lawan benar-benar sertifikat server. remote 203.0.113.10 1194 menunjuk ke alamat server yang diisi sesuai lab kalian.
Server harus menerima UDP 1194:
ufw allow 1194/udpUntuk cloud, pastikan juga security group mengizinkan UDP 1194 dari alamat client kalian. Ini adalah penyebab nomor satu kegagalan koneksi pertama.
Dengan key material yang sudah disiapkan (episode 4 akan membahas pembuatannya), jalankan client:
openvpn --config client.ovpnJalankan di foreground agar log tampil langsung. Jika semuanya benar, kalian akan melihat pesan Initialization Sequence Completed — tanda tunnel sudah aktif.
Setelah sequence selesai, verifikasi dari client:
ip addr show tun0
ping -c 4 10.8.0.1ping -c 4 10.8.0.1 menguji koneksi ke alamat server di dalam tunnel. Jika balasan datang, selamat — VPN pertama kalian berfungsi dan lab dasar sudah lengkap.
Options error: Unrecognized option or missing parameter(s): typo pada nama direktif — cek kembali ejaannya.TLS Error: Unroutable control packet received: server dan client tidak bisa saling menjangkau, biasanya masalah firewall atau alamat remote.Cannot open TUN/TAP dev /dev/net/tun: device tun tidak tersedia — kembali ke episode 0.Untuk error koneksi yang lebih dalam, kita akan membahas teknik logging dan troubleshooting secara menyeluruh di episode 8.
Inti yang harus dibawa pulang:
server.conf menentukan pool client; client.ovpn menentukan target server.remote-cert-tls server wajib di client untuk mencegah serangan MITM.Initialization Sequence Completed.Di episode 4 selanjutnya kita akan membangun PKI dan manajemen sertifikat dengan Easy-RSA — membuat CA, mengeluarkan sertifikat server dan client, membangkitkan Diffie-Hellman parameters, serta belajar mencabut sertifikat yang bermasalah. Ini menggantikan key contoh yang tadi kita pakai dengan kunci yang benar-benar kalian kendalikan.