Membuat VPN Server Sendiri
Pendahuluan
Virtual Private Network (VPN) memungkinkan koneksi aman antara perangkat dan jaringan internal melalui internet.
Tutorial ini mengajarkan cara membangun VPN server OpenVPN pada VPS Linux, lengkap dengan pembuatan sertifikat, konfigurasi firewall, dan panduan keamanan produksi.
Prasyarat & Persiapan
| Item | Keterangan |
|---|---|
| VPS | Ubuntu 22.04 LTS (atau Debian 12) |
| Root Access | SSH key atau password |
| Domain | (Opsional) untuk sertifikat Letβs Encrypt |
| Tools | - ChatGPT Plus (ai-chat) untuk membantu menulis konfigurasi: https://tools.jartekindo.com/tool/chatgpt-plus/ - Notion AI (ai-writing) untuk menyiapkan dokumentasi: https://tools.jartekindo.com/tool/notion-ai/ |
Langkah 1: Update Sistem
sudo apt update && sudo apt upgrade -y
Langkah Demi Langkah
1. Instalasi OpenVPN dan EasyRSA
sudo apt install -y openvpn easy-rsa
2. Persiapan PKI (Public Key Infrastructure)
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
Edit vars:
nano vars
Ubah baris berikut sesuai kebutuhan:
export KEY_COUNTRY="ID"
export KEY_PROVINCE="DKI"
export KEY_CITY="Jakarta"
export KEY_ORG="Jartekindo"
export KEY_EMAIL="admin@jartekindo.com"
export KEY_OU="IT"
3. Build CA dan Server Certificate
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-req server nopass
./easyrsa sign-req server server
4. Generate DH Parameters & HMAC Key
openssl dhparam -out dh.pem 2048
openvpn --genkey --secret ta.key
5. Konfigurasi Server OpenVPN
Buat file /etc/openvpn/server.conf:
sudo nano /etc/openvpn/server.conf
Isi dengan:
port 1194
proto udp
dev tun
ca /home/ubuntu/openvpn-ca/pki/ca.crt
cert /home/ubuntu/openvpn-ca/pki/issued/server.crt
key /home/ubuntu/openvpn-ca/pki/private/server.key
dh /home/ubuntu/openvpn-ca/pki/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
tls-auth /home/ubuntu/openvpn-ca/pki/ta.key 0
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
6. Konfigurasi Firewall
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
Enable IP forwarding:
sudo nano /etc/sysctl.conf
Tambahkan baris:
net.ipv4.ip_forward=1
Aktifkan:
sudo sysctl -p
7. Mulai dan Aktifkan OpenVPN
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
sudo systemctl status openvpn@server
8. Generate Client Configuration
cd ~/openvpn-ca
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
Buat file client1.ovpn:
cat > client1.ovpn <<EOF
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256
key-direction 1
<ca>
$(cat ~/openvpn-ca/pki/ca.crt)
</ca>
<cert>
$(cat ~/openvpn-ca/pki/issued/client1.crt)
</cert>
<key>
$(cat ~/openvpn-ca/pki/private/client1.key)
</key>
<tls-auth>
$(cat ~/openvpn-ca/pki/ta.key)
</tls-auth>
EOF
Transfer client1.ovpn ke perangkat klien dan jalankan:
sudo openvpn --config client1.ovpn
Tips Optimasi & Keamanan
| Praktik | Penjelasan |
|---|---|
| TLS Auth | Menambahkan tls-auth mencegah serangan DoS. |
| Cipher & Auth | Gunakan AES-256-CBC + SHA256 untuk keamanan tinggi. |
| IP Forwarding | Pastikan hanya IP tertentu yang dapat mengakses VPN. |
| Fail2Ban | Instal fail2ban untuk melindungi port OpenVPN. |
| Monitoring | Gunakan systemctl status dan log /var/log/syslog. |
Menggunakan ChatGPT Plus
Buat skrip konfigurasi atau troubleshoot error dengan bantuan ChatGPT Plus: https://tools.jartekindo.com/tool/chatgpt-plus/
Troubleshooting Error Umum
| Error | Penyebab | Solusi |
|---|---|---|
TLS Error: TLS handshake failed |
Port 1194 diblokir | Pastikan firewall mengizinkan UDP 1194 |
Cannot resolve host |
DNS tidak terkonfigurasi | Tambahkan DNS pada push "dhcp-option DNS" |
OpenVPN service failed to start |
File konfigurasi salah | Periksa sintaks di /etc/openvpn/server.conf |
IP forwarding not enabled |
net.ipv4.ip_forward = 0 |
Set ke 1 dan reload sysctl -p |
Kesimpulan
Dengan langkah-langkah di atas, Anda dapat memiliki VPN server OpenVPN yang aman dan dapat diandalkan di VPS Linux. Selalu perbarui paket, monitor log, dan gunakan praktik keamanan terbaik untuk menjaga jaringan tetap terlindungi. Selamat mencoba!