Overview
Virtual Private Network (VPN) bukan lagi sekadar tren, melainkan kebutuhan dasar bagi perusahaan dan pengguna pribadi yang mengedepankan privasi serta keamanan data. OpenVPN tetap menjadi pilihan utama karena sifat open‑source, dukungan lintas platform, dan fleksibilitas dalam mengatur enkripsi. Artikel ini menuntun Anda langkah demi langkah menyiapkan OpenVPN Server pada Ubuntu 24.04 LTS, mulai dari instalasi paket hingga verifikasi koneksi client.
Prerequisites
- Server fisik atau virtual dengan Ubuntu 24.04 LTS terpasang dan terhubung ke internet.
- Akses root atau sudo pada server.
- Alamat IP publik statis (contoh: 203.0.113.10).
- Port UDP 1194 terbuka pada firewall eksternal.
Environment
Kita akan menggunakan paket openvpn dari repositori resmi Ubuntu, easy-rsa untuk membangun Public Key Infrastructure (PKI), dan iptables untuk mengatur lalu lintas jaringan. Semua perintah dijalankan di terminal dengan hak sudo.
Konsep Singkat
OpenVPN beroperasi pada lapisan jaringan (Layer 3) dengan menciptakan virtual tunnel interface (TUN) atau tap interface. Pada contoh ini kami memakai mode TUN, yang mengirimkan paket IP mentah. Proses autentikasi mengandalkan sertifikat X.509 yang dibuat dengan Easy‑RSA, sedangkan enkripsi dipilih menggunakan AES‑256‑GCM. Setiap client memiliki sertifikat unik, memungkinkan revocation bila diperlukan.
Langkah Konfigurasi
Step 1 – Instalasi Paket
Tujuan: Menyiapkan OpenVPN dan Easy‑RSA pada sistem.
sudo apt update
sudo apt install -y openvpn easy-rsaPerintah di atas memperbarui indeks paket lalu menginstal dua paket utama. Output yang diharapkan adalah daftar paket yang selesai di‑install tanpa error. Jika muncul E: Unable to locate package, pastikan repositori universe aktif dengan sudo add-apt-repository universe.
Step 2 – Membuat Direktori PKI
Tujuan: Menyiapkan struktur file untuk sertifikat.
make-cadir ~/openvpn-ca
cd ~/openvpn-caSetelah perintah, Anda akan memiliki folder ~/openvpn-ca yang berisi skrip Easy‑RSA. Pastikan Anda berada di dalam direktori tersebut sebelum melanjutkan.
Step 3 – Menginisialisasi PKI dan Membuat CA
Tujuan: Membuat Certificate Authority (CA) yang akan menandatangani semua sertifikat client dan server.
./easyrsa init-pki
./easyrsa --batch build-ca nopassPerintah pertama membuat struktur PKI; perintah kedua menghasilkan file ca.crt tanpa password (dengan nopass), memudahkan proses otomatis pada server. Output mencakup checksum file ca.crt. Jika muncul error “Unable to write file”, periksa hak akses direktori.
Step 4 – Membuat Sertifikat Server dan Kunci
Tujuan: Menghasilkan pasangan kunci publik‑privat untuk server OpenVPN.
./easyrsa build-server-full server nopassFile yang dihasilkan: private/server.key dan issued/server.crt. Simpan keduanya di /etc/openvpn/server/:
sudo mkdir -p /etc/openvpn/server
sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key /etc/openvpn/server/Jika sudo cp gagal karena permission, pastikan Anda berada di direktori ~/openvpn-ca dan jalankan dengan hak sudo.
Step 5 – Membuat Sertifikat Client
Tujuan: Menyiapkan identitas unik untuk setiap client.
./easyrsa build-client-full client1 nopassHasilnya adalah client1.crt dan client1.key. Salin ke folder terpisah agar dapat didistribusikan ke perangkat client.
Step 6 – Membuat File Diffie‑Hellman dan TLS‑Auth Key
Tujuan: Menambah keamanan pertukaran kunci.
./easyrsa gen-dh
openvpn --genkey --secret /etc/openvpn/server/ta.keyFile dh.pem dan ta.key akan dipakai dalam konfigurasi server.
Step 7 – Konfigurasi Server OpenVPN
Tujuan: Membuat file server.conf yang mengatur jaringan virtual, enkripsi, dan aturan firewall.
sudo nano /etc/openvpn/server/server.confMasukkan konten berikut (gunakan editor nano atau vim):
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
cipher AES-256-GCM
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
verb 3
# Network topology
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
# Client specific configuration directory
client-config-dir ccd
# Enable status log
topology subnet
status /var/log/openvpn-status.log
Setelah menyimpan, pastikan semua file sertifikat, kunci, dan dh.pem berada di /etc/openvpn/server/. Jika ada error Cannot load certificate, periksa kembali nama file dan hak akses (600).
Step 8 – Mengatur IP Forwarding dan Firewall
Tujuan: Mengizinkan paket dari interface TUN melewati router.
# Aktifkan IP forwarding secara permanen
sudo sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.d/99-openvpn.conf
# Atur iptables untuk NAT
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -j ACCEPT
sudo iptables -A FORWARD -o tun0 -j ACCEPT
# Simpan aturan iptables
sudo apt install -y iptables-persistent
sudo netfilter-persistent save
Pastikan antarmuka luar bernama eth0. Jika menggunakan nama lain (contoh ens3), gantilah sesuai.
Step 9 – Memulai dan Mengaktifkan Service
sudo systemctl start openvpn-server@server
sudo systemctl enable openvpn-server@server
sudo systemctl status openvpn-server@serverJika status menunjukkan active (running), server siap menerima koneksi. Bila service gagal, lihat log dengan journalctl -u openvpn-server@server untuk menemukan penyebab.
Verifikasi
Gunakan klien OpenVPN pada laptop Windows, macOS, atau Linux. Buat file konfigurasi client client1.ovpn:
client
dev tun
proto udp
remote 203.0.113.10 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA256
cipher AES-256-GCM
tls-auth ta.key 1
verb 3
-----BEGIN CERTIFICATE-----
... (isi ca.crt) ...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... (isi client1.crt) ...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
... (isi client1.key) ...
-----END PRIVATE KEY-----
-----BEGIN OpenVPN Static key V1-----
... (isi ta.key) ...
-----END OpenVPN Static key V1-----
Jalankan openvpn --config client1.ovpn. Jika koneksi berhasil, Anda akan melihat baris Initialization Sequence Completed dan IP virtual 10.8.0.x. Uji dengan ping 10.8.0.1 (IP server pada tunnel) dan ping 8.8.8.8 untuk memverifikasi rute internet.
Troubleshooting
- Gejala: Client tidak dapat terhubung, muncul “TLS Handshake Failed”.
Penyebab: Kuncita.keytidak cocok antara server dan client.
Solusi: Pastikan fileta.keyyang sama disalin ke client, dan periksa opsitls-auth(0 pada server, 1 pada client). - Gejala: After connection, internet tidak bisa diakses.
Penyebab: IP forwarding belum aktif atau NAT iptables tidak berfungsi.
Solusi: Verifikasikansysctl net.ipv4.ip_forwardmenghasilkan 1, dan cek aturan NAT denganiptables -t nat -L -n -v. - Gejala: Server gagal start dengan error “Cannot resolve host name”.
Penyebab: Padaserver.confterdapat directivepush "redirect-gateway"yang menyalin DNS yang tidak dapat di‑resolve.
Solusi: Ganti DNS publik ke 1.1.1.1 atau 8.8.8.8, atau tambahkanpush "dhcp-option DNS 1.1.1.1". - Gejala: Log menunjukkan
AUTH_FAILEDuntuk client tertentu.
Penyebab: Sertifikat client tidak ditandatangani oleh CA yang sama atau telah dicabut.
Solusi: Periksaca.crtpada client, pastikan tidak ada spasi tambahan, atau regenerasi sertifikat baru. - Gejala: Layanan OpenVPN tidak start setelah reboot.
Penyebab: File konfigurasi berada di lokasi yang tidak dikenali systemd (/etc/openvpn/server.confvs/etc/openvpn/server/server.conf).
Solusi: Pastikan nama service mengacu pada folderserver:systemctl enable openvpn-server@serverdan periksa/lib/systemd/system/openvpn-server@.serviceuntuk path yang benar.
Best Practice
- Keamanan Sertifikat: Simpan
ca.keydi lokasi terisolasi; gunakan password untuk CA jika lingkungan mengizinkan. - Rotasi Kunci: Ganti
ta.keydan sertifikat server setidaknya setiap 6 bulan. - Logging Terpusat: Forward log OpenVPN ke syslog atau solusi SIEM dengan menambahkan
log-append /var/log/openvpn.logpada konfigurasi. - Backup PKI: Backup folder
/etc/openvpn/server/dan~/openvpn-ca/pkisecara rutin. - Limitasi Client: Gunakan
client-config-diruntuk menetapkan static IP per client, memudahkan kontrol akses.
FAQ
Q: Apakah saya harus menutup port UDP 1194 pada firewall?
A: Port tersebut harus terbuka untuk inbound traffic agar client dapat terhubung. Anda dapat membatasi akses hanya ke IP management jika diperlukan.
Q: Bisakah saya menggunakan protokol TCP?
A: Ya, ubah proto udp menjadi proto tcp pada kedua sisi, namun akan menambah latency.
Q: Bagaimana cara menonaktifkan akses internet bagi client tertentu?
A: Buat file di /etc/openvpn/server/ccd/ dengan nama client, lalu tambahkan push "route 0.0.0.0 0.0.0.0 net_gateway" atau gunakan firewall iptables untuk membatasi.
Q: Apakah OpenVPN mendukung IPv6?
A: Ya, dengan menambahkan push "redirect-gateway ipv6" serta menyiapkan subnet IPv6 pada server.
Q: Bagaimana cara mencabut sertifikat client?
A: Tambahkan nama file client1.crt ke crl.pem dengan perintah ./easyrsa revoke client1, lalu regenerasi CRL dan distribusikan kembali ke server.
Kesimpulan
Membangun OpenVPN Server pada Ubuntu 24.04 LTS tidak memerlukan langkah yang rumit, namun memperhatikan detail pada pembuatan PKI, konfigurasi firewall, dan pengaturan IP forwarding sangat krusial untuk mendapatkan koneksi yang stabil dan aman. Dengan mengikuti panduan step‑by‑step ini, Anda dapat menyediakan jaringan pribadi yang terenkripsi untuk tim atau klien eksternal, sekaligus mengimplementasikan praktik keamanan terbaik seperti rotasi kunci, backup PKI, dan monitoring log. Selalu uji koneksi setelah setiap perubahan konfigurasi, dan manfaatkan troubleshooting yang telah disediakan untuk mengatasi masalah umum.

