Setup OpenVPN Server on Ubuntu 24.04 LTS

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-rsa

Perintah 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-ca

Setelah 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 nopass

Perintah 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 nopass

File 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 nopass

Hasilnya 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.key

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

Masukkan 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@server

Jika 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

  1. Gejala: Client tidak dapat terhubung, muncul “TLS Handshake Failed”.
    Penyebab: Kunci ta.key tidak cocok antara server dan client.
    Solusi: Pastikan file ta.key yang sama disalin ke client, dan periksa opsi tls-auth (0 pada server, 1 pada client).
  2. Gejala: After connection, internet tidak bisa diakses.
    Penyebab: IP forwarding belum aktif atau NAT iptables tidak berfungsi.
    Solusi: Verifikasikan sysctl net.ipv4.ip_forward menghasilkan 1, dan cek aturan NAT dengan iptables -t nat -L -n -v.
  3. Gejala: Server gagal start dengan error “Cannot resolve host name”.
    Penyebab: Pada server.conf terdapat directive push "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 tambahkan push "dhcp-option DNS 1.1.1.1".
  4. Gejala: Log menunjukkan AUTH_FAILED untuk client tertentu.
    Penyebab: Sertifikat client tidak ditandatangani oleh CA yang sama atau telah dicabut.
    Solusi: Periksa ca.crt pada client, pastikan tidak ada spasi tambahan, atau regenerasi sertifikat baru.
  5. Gejala: Layanan OpenVPN tidak start setelah reboot.
    Penyebab: File konfigurasi berada di lokasi yang tidak dikenali systemd (/etc/openvpn/server.conf vs /etc/openvpn/server/server.conf).
    Solusi: Pastikan nama service mengacu pada folder server: systemctl enable openvpn-server@server dan periksa /lib/systemd/system/openvpn-server@.service untuk path yang benar.

Best Practice

  • Keamanan Sertifikat: Simpan ca.key di lokasi terisolasi; gunakan password untuk CA jika lingkungan mengizinkan.
  • Rotasi Kunci: Ganti ta.key dan sertifikat server setidaknya setiap 6 bulan.
  • Logging Terpusat: Forward log OpenVPN ke syslog atau solusi SIEM dengan menambahkan log-append /var/log/openvpn.log pada konfigurasi.
  • Backup PKI: Backup folder /etc/openvpn/server/ dan ~/openvpn-ca/pki secara rutin.
  • Limitasi Client: Gunakan client-config-dir untuk 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.

Referensi

Comments

No comments yet. Why don’t you start the discussion?

    Leave a Reply

    Your email address will not be published. Required fields are marked *