Photo of author

ditulis oleh: Arianto

Cara Membuat Server VPN di LInux

diperbaharui pada:

kategori : Linux

tag: server

OpenVPN untuk Membuat VPN Server

Untuk membuat server VPN saya menyewa VPS hosting dan menginstall sistem operasi ubuntu linux server yang nantinya akan diinstall OpenVPN sebagai core aplikasi VPN server.

Jika kamu belum punya server linux sendiri, kamu bisa mempunyai server linux yang online 24jam + akses internet dengan mudah dan murah – cara membuat server linux sendiri

Perlu diperhatikan di tutorial ini saya login sebagai root # karena saya menggunakan VPS, jika kamu login sebagai user biasa $ maka kamu tambahkan awalan sudo pada setiap perintah yang kamu ketik  yang ada di tutorial ini agar dijalankan sebagai root.

LANGKAH PERTAMA
Mengecek TUN/TAP Adapter di Linux Mu

Sebagai langkah awal membuat server VPN baiknya kamu cek dulu apakah TUN/TAP di server /VPS kamu sudah aktif /enable,karena tanpa ini VPN gak bakal jalan.kamu bisa menggunakan perintah $ cat /dev/net/tun pastikan outputnya adalah cat: /dev/net/tun: File descriptor in bad state

cara cek tun/tap sudah ter enable apa belum sebelum membuat vpn server

kalau outputnya beda berarti TUN/TAP belum aktif silakan aktifkan terlebih dahulu melalui panel VPS atau hubungi support tempat kamu membeli VPS.

LANGKAH KEDUA
Install OpenVPN Server dan Easy-RSA

Aplikasi server yang akan kita gunakan untuk membuat VPN server adalah OpenVPN namun kita perlu menginstall Easy-RSA untuk membuat ROOT CERTIFICATE AUTHORITY (CA) CERTIFICATE/KEY yang digunakan oleh openvpn untuk mengamankan koneksi antara client dan server.

  1. Sebelum install baiknya kita mengupdate repository menggunakan perintah $ sudo apt-get update agar list repository di mesin kita diperbaharui dengan versi ter anyar.
    pembaruan repository ubuntu menggunakan apt-get update
  2. Setelah pembaruan selesai kemudian kita install openvpn dengan perintah $ sudo apt-get install openvpn
    cara install openvpn di ubuntu dan debian
  3. Setelah openvpn terinstall selanjutnya kita akan menginstall easy-rsa dengan perintah $ sudo apt-get install easy-rsa
    cara install easy-rsa openvpn
navigasi-ke-folder-easy-rsa saat membaut vpn server
install easy-rsa saat membuat VPN server

untuk memastian kalau easyrsa sudah terpasang coba kamu  ke directory easy-rsa seperti di gambar atau bisa list langsung dengan perintah # ls /usr/share/easy-rsa

Kopi directory easy-rsa ke /etc/openvpn ini hanya untuk memudahkan pas kamu setting OpenVPN biar gampang diingat kalau setingan yang berkaitan dengan openvpn ada di folder /etc/openvpn gunakan perintah ini untuk mengcopy directory easy-rsa dan isinya # cp -a /usr/share/easy-rsa /etc/openvpn
untuk mengecek apa sudah berhasil,

Kita pindah ke directory /etc/openvpn dengan perintah # cd /etc/openvpn/easy-rsa
Setelah masuk ke directory /etc/openvpn/easy-rsa berikan perintah# chmod +x * agar semua file di dalam folder easy-rsa bisa dieksekusi

LANGKAH KETIGA
Membuat ROOT CERTIFICATE AUTHORITY (CA)

Pastikan kamu sudah berada di folder /etc/openvpn/easy-rsa jika belum gunakan perintah # cd etc/openvpn/easy-rsa

cara membuat ROOT CERTIFICATE AUTHORITY (CA) CERTIFICATE/KEY untuk openvpn dalam proses membuat vpn server

Jalankan perintah dibawah ini secara ber urutan untuk membuat CA OpenVPN
# source ./vars
# ./vars
# ./clean-all
# ./build-ca  
Masukan data ke formulir seperti Country name,emal dll seperti gambar dibawah ini ketika kamu membuat root certificate

LANGKAH KE EMPAT
Membuat Server Key OpenVPN

OpenVPN memerlukan server key yang akan digunakan dalam proses enkripsi koneksi antara server dan client saat kamu menggunakan sambungan VPN

Buat Key Server dengan perintah #./build-key-server namafilekeymuBebas beri mana terserah untuk fule key server OpenVPN mu.

cara membuat server vpn key certificate untuk openvpn

Server key yang berhasil kamu buat akan ber extensi *.key misalnya namafilekeymuBebas.key

LANGKAH KE LIMA
Build Diffie Hellman (DH)

Diffie Hellman digunakan oleh OpenVPN dalam proses enkripsi data antara server dan client agar koneksi yang terjalin lewat jaringan public menjadi jalur yang aman.

build diffie Helman untuk openvpn

Untuk membuatnya Diffie Hellman cukup ketikan perintah # ./build-dh dan tunggu hingga proses selesai.
Semua file yang kita buat dengan perintah diatas berada di folder /etc/openvpn/easy-rsa/keys untuk melihatnya kamu bisa menggunakan perintah # ls /etc/openvpn/easy-rsa/keys

isi-keys-folder

LANGKAH KE ENAM
Membuat File Config OpenVPN Server

Agar service OpenVPN bisa berjalan kamu perlu membuat dan mengisi file config dengan benar sesuai data servermu dan file pendukung yang telah kita buat tadi,mulai dari file RSA dan DH.

Untuk membuat file config OpenVPN server cukup ketikan perintah #pico /etc/openvpn/namaFileConfigServerMu ganti namaFileConfigServerMu dengan nama yang kamu kehendaki.

Kopi dan paste template config dibawah ini lalu edit sesuai informasi servermu.Untuk menyimpan tekan CTRL+X lalu tekan Y kemudian enter.


PERHATIAN!!

Setelah Tanda pagar adalah komen gak ngefek apa2 kok hanya sebagai keterangan saja.

Template file config OpenVPN Server

local 103.252.101.170  #ganti dengan IP VPS atau domain anda
port 995  #Sesuaikan dengan port yang anda inginkan
proto tcp #ptocol bisa tcp atau  udp sesuaikan dengan kebutuhan
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt  #lokasi file ca yang kita buat dengan easy-rsa
cert /etc/openvpn/easy-rsa/keys/serverVPNTembolokID.crt #lokasi file server crt yang kita buat dengan easy-rsa
key /etc/openvpn/easy-rsa/keys/serverVPNTembolokID.key #lokasi file key server yang kita buat dengan easy-rsa
dh /etc/openvpn/easy-rsa/keys/dh2048.pem #lokasi file dh yang kita buat dengan easy-rsa
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so /etc/pam.d/login
management localhost 8443 #console untuk memonitor user VPN
client-cert-not-required
username-as-common-name
server 10.9.8.0 255.255.255.0   # ip yang akan dipakai client
ifconfig-pool-persist ipp.txt
push “redirect-gateway def1”
push “dhcp-option DNS 8.8.8.8”
push “dhcp-option DNS 8.8.4.4”
keepalive 5 30
comp-lzo
persist-key
persist-tun
status server-tcp.log
verb 3

Contoh saat membuat file config untuk OpenVPN server di linux ubuntu server

cara membuat openvpn config file

LANGKAH KE TUJUH
Menjalankan Service OpenVPN Server

Setelah kamu berhasil membuat file config OpenVPN maka kamu sudah bisa mencoba menjalankan OpenVPN Server dengan mengetikan perintah dibawah ini:

  • # service openvpn start untuk menjalankan service openvpn
  • # service openvpn stop untuk menghentikan service openvpn
  • # service openvpn restart untuk merestart service openvpn
  • #service openvpn status untuk melihat status openvpn

Coba cek status openVPN mu dengan mengetikan perintah # service openvpn status pastikan statusnya running kalo tidak berarti ada yang salah silakan kamu cek kembali file config openVPN mu.

Kamu bisa mengecek network state service openVPN dengna mengetikan perintah # netstat -tulpn ,pastikan process openvpn sudah listening seperi gambar dibawah ini

menjalankan openvpn service

Mengaktifkan Internet Untuk Client VPN

Secara default client yang konek ke server VPN mu tidak bisa menggunakan internet dan hanya diberi hak akses jaringan lokal saja, agar client VPN mu bisa menggunakan internet melalui server VPN mu kamu harus mengaktifkan fitur NAT dan port forwarding. Untuk mengaktifkan fitur port forwarding ikuti l angkah dibawah ini :

Untuk mengaktifkan Port Forwarding Jalankan perintah # pico /etc/sysctl.conf lalu hilangkan tanda pagar pada net.ipv4.ip_forward=1 ,jangan lupa save perubahan dengan CTRL+X  lalu Y . kemudian jalankan perintah # sysctl -p /etc/sysctl.conf untuk penerapan.

enable-net-ip-forwarding


Untuk mengaktifkan fitur NAT dengan IPTABLES jalankan perintah dibawah ini secara berurutan

  • # iptables ‐t nat ‐I POSTROUTING ‐s 10.9.8.0/24 ‐o venet0 ‐j MASQUERADE  
  • # ip bisa disesuaikan dengna ip yg dipakai pada openvpnconfig
  • # iptables‐save > /etc/iptables.cfg
  • Agar setingan iptables permanen dan berjalan otomatis saat server reboot kamu bisa melakukan trik ini ,edit file rc.local dengan perintah #p ico /etc/rc.local lalu tambahkan baris  iptables-restore < /etc/iptables.conf  lalu simpan dengan CTRL+X lalu Y
simpan-iptables
membuat iptables permanent di linux

Terakhir jalankan perintah # /etc/init.d/openvpn restart untuk penerapan dan merestart openvpn service

Troubleshooting Setelah Membuat VPN Server

mengatasi error pada openvpn

Saat membuat vpn server kadang terjadi error,nah error ini biasanya karena typo atau kesalahan ketik atau perbedaan directory pas kamu install karena tutorial dan server kamu berbeda,jadi kamu disini harus teliti ,dan untuk membantu melihat error yang terjadi kita bisa membuka error log dengan perintah # grep ovpn /var/log/syslog

Contoh diatas adalah openvpn gak mau jalan walau sudah di start dan tidak menampilkan error ketika di start menggunakan perintah # service openvpn start,setelah ditelusuri lewat log ternyata ada file yang tidak ditemukan ,nah ternyata nama file plugin nya ini berbeda dengan yang dulu pak bikin catatan.

jadi intinya kamu harus cek config file apa sudah betul apa belum.

Membuat File Config OpenVPN untuk  Client

Agar client bisa terkoneksi ke server VPN yang kamu buat,kamu harus membuat sebuah file config yang nantinya akan digunakan oleh aplikasi OpenVPN clint yang terinstall di komputer ataupun HP client.Caranya :

  1. Buat file dengan notepad dan kopi paste dari template yang saya sediakan dibawah ini
  2. ganti bagian “103.252.101.170 995” dengan IP server dna port OpenVPN mu
  3. ganti bagian “isi bagian ini dengan isi file ca.crt”    dengan isi file ca.crt yang ada di server OpenVPN mu ,caranya ketikan perintah # cat /etc/openvpn/easy-rsa/keys/ca.crt untuk melihat isi nya lalu kopi dan paste ke file config openvpn client.
  4. Simpan file dengan nama *.ovpn

Kopi -Paste Template File Config OpenVPN Client Dibwah ini !!

client
dev tun
proto tcp
remote 103.252.101.170 995  #Ip Server kamu dan port
route-method exe
resolv-retry infinite
nobind
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-key
persist-tun
auth-user-pass
comp-lzo
verb 3
<ca>
—–BEGIN CERTIFICATE—–
isi bagian ini dengan isi file ca.crt    #
—–END CERTIFICATE—–
</ca>

Contoh file config OpenVPN client yang dibuat dengan notepad.

contoh client certificate openvpn

Membuat dan Mengatur Akun VPN Client

Setelah server VPN mu jadi,kamu bisa membuat banyak user untuk bisa login ke server VPN mu, kamu hanya perlu membuat user linux tanpa shell agar bisa konek ke server VPN mu.

Kamu bisa menjual atau menyewakan server VPN mu ke banyak user,saya akan memberikan script yang akan memudahkan mu dalam mengelola user akun VPN mu,dengan script ini kamu lebih mudah dalam membuat,mengatur masa aktif,memperpanjang,blokir atau menghapus akun VPN client mu.

1. Membuat User dan membatasi masa aktif akun VPN

akun yang kita buat bisa digunakan untuk mengakses VPN atau membuat SSH tunnel ke Server kita. untuk mempermudah mengelola akun penlanggan yang jumlah nya banyak (jika dipakai jualan) kita akan membutuhkan sedikit script untuk membuat user dan membuat masa aktif dan random password.

Posisikan dirimu di home caranya ketik # cd ~ lalu buat file dengan perintah # pico buatuser.sh lalu masukan script dibawah ini tekan CTRL+X lalu Y dan enter untuk menyimpan

#!/bin/bash
#Script auto create trial user SSH
#yg akan expired setelah 5 Bulan
# ./ini.sh username jumlah-hari
Login=$1-`</dev/urandom tr -dc X-Z0-9 | head -c4`

Pass=`</dev/urandom tr -dc a-f0-9 | head -c9`
IP=`ifconfig eth0:0| awk ‘NR==2 {print $2}’| awk -F: ‘{print $2}’`
useradd -e `date -d “$2 days” +”%Y-%m-%d”` -s /bin/false -M $Login
echo “____________________________________________________________”
echo -e “$Pass\n$Pass\n”|passwd $Login &> /dev/null
echo -e “Username: $Login\nPassword: $Pass”
echo “_____________________________________________________________”
echo -e |chage -l $Login

membuat user VPN dengan masa aktif otomatis saat membuat membuat vpn server

Setelah disave jalankan perintah # chmod +x buatuser.sh agar file bisa dieksekusi
Cara menggunakanya dengan ekseskusi file secara langsung dan masukan parameter dengan format # ./buatuser.sh namaUser masaAktifHari contoh # ./buatuser.sh dodit 60

username dan password akan dibuat random oleh sistem,jadi kamu pas buat gak usa mikir soal bikin password.

2. Mengatur dan mengelola UserVPN dan SSH

Kita bisa melihat semua user yang terdaftar dan masa aktifnya,ini sangat berguna jika kamu menggunakan VPS dengan banyak user seperti untuk jualan VPN atau SSH tunnel.

pastikan kamu ada di home directory (supaya mudah aja) dan buat file dengan perintah pico lihatuser.sh lalu masukan script dibawah ini sinpan dengan tombol CTRL+X lalu Y dan Enter
Berikan atribut executable dengan perintah chmod +x lihatuser.sh
jelankan dengan perintah ./lihatuser.sh

#!/bin/bash
# melihat semua user dan expired date
echo “—————————————————-“
echo “USERNAME          CREATE DATE          EXP DATE     “
echo “—————————————————-“
while read penghuni
do
        AKUN=”$(echo $penghuni | cut -d: -f1)”
        ID=”$(echo $penghuni | grep -v nobody | cut -d: -f3)”
        exp=”$(chage -l $AKUN | grep “Account expires” | awk -F”: ” ‘{print $2}’)”
        create=”$(chage -l $AKUN | grep “Last password change” | awk -F”: ” ‘{print $2}’)”
        if [[ $ID -ge 1000 ]]; then
        printf “%-17s %2s %18s\n” “$AKUN” “$create” “$exp”
        fi
done < /etc/passwd
JUMLAH=”$(awk -F: ‘$3 >= 1000 && $1 != “nobody” {print $1}’ /etc/passwd | wc -l)”
echo “—————————————————–“
echo “Jumlah akun: $JUMLAH user”
echo “—————————————————–“

lihat-user-akun-ssh-linux saat membuat membuat vpn server

nah kalo ingin merubah masa aktif bisa dengan perintah chage -E `date -d “30 days” +”%Y-%m-%d”` dodit-4120 ini untuk merubah masa aktif bukan menambah loh ya. dihitung dari sekarang bukan ditambahkan masa aktifnya.

3. Blokir user menggunakan ssh tunnel

block-user-menggunakan-ssh saat proses membuat vpn server

Jika kamu membuat server VPN dengan settingan yang ketat (misal server vpn hanya bisa mengakses server game online tertentu agar bandwidth irit) maka kamu perlu memblokir user untuk menggunakan ssh tunnel,karena walau tanpa shell user linux masih bisa login lewat protocol shh dan menggunakan tunnel,kalau sampai terjadi sama aja server VPN kita kecolongan.


Cara memblokir user linux menggunakan ssh protocol :

Jalankan perintah pico /etc/ssh/sshd_config
lalu tambahkan baris DenyUsers user1 user2 user3 user4 userdst   # kamu bisa memasukan user kesini dengan pemisah spasi sebanyak yang kamu mau dalam satu baris
Simpan dengan tombol CTRL+X lalu Y
Restart ssh service dengan perintah service ssh restart

Dengan begini user hanya bisa menggunakan protocol VPN saja sesuai dengan yang kita inginkan.

4. Memonitor user VPN yang aktif

memonitor user yang aktif setelah selesai membuat vpn server

ini berguna untuk ngecek ada berapa user yang sedang aktif biar gak kecolongan kalau ada user yang uda abis masa aktif tapi msh bisa login karena kesalahan mesin atau kita.

jalankan perintah telnet 127.0.0.1 8443 (8443 adalah port yang ada di file config openvpn,pada baris management localhost 8443 kamu bisa merubah nya sesuka hati ) untuk menampilkan daftar perintah yang ada ketik help dan u ntuk keluar ketik exit

Pembahasan Terkait
mengatasi linux gagal shutdown
Cara Mengatasi linux Mint tidak bisa shutdown

Sebab Linux mint tidak bisa shutdown Ketika linux OS dimatikan dengan perintah shutdown atau tombol shutdown,system akan menutup semua aplikasi Read more

memilih linux distro yang tepat sesuai kebutuhan
Macam -Macam Distro Linux Sesuai kebutuhan

Linux menjadi sistem operasi yang spesial karena punya ratusan distro/jenis linux yang kesemuanya didesain dengan tujuan yang spesifik. Apapun kebutuhan Read more

cara install antergos arch linux
tutorial cara install antergos Arch Linux

Mengenal Antergos Linux Antergos merupakan distro Arch linux , arch linux menjanjikan sistem operasi yang ringan dan memungkinkan setiap orang Read more

cara install nvidia optimus vga bumblebee arch linux
Cara Install Driver NVIDIA OPTIMUS di Linux

NVIDIA Optimus technology Teknologi terbaru dari NVIDIA yang diberinama Optimus ini mampu meyensuaikan pemakaian GPU sesuai kebutuhan, jika aplikasi yang Read more