all about technology

Cara Instal OpenVPN di VPS Debian

Hello,
Kali ini saya akan share tata cara dan adat istiadat dalam instalasi OpenVPN di VPS Debian. Saya sudah sering kali instal VPN jenis ini tetapi memang belum pernah saya dokumentasikan. Based on request akhirnya saya coba posting disini…. jadi moga2 bermanfaat. Tutorial ini saya ketik sambil saya ujicobakan, dengan kata lain ini adalah live report dari cara memasang OpenVPN di server.
OpenVPN ini akan mempunyai beberapa spesifikasi yaitu:

  • Menggunakan 2 jalur untuk konek; UDP port 1194 yg merupakan port default OpenVPN dan jalur TCP port 443 (sebagai alternatif untuk client saat konek. Jika port 443 udah terpakai misal untuk ssh tunnel maka anda harus pake port lain misal 465, dll)
  • User yg konek harus memiliki file2 untuk konek yaitu ca.crt dan file config .ovpn. Setelah ada file tsb user akan konek dg autentikasi username+password.
VPS yg saya gunakan untuk percobaan ini adalah VPS dg OS Debian 7 x86 (atau 32 bit), virtualisasinya adalah OpenVZ. Tentu saja anda bisa pake VPS lainnya misal dari DigitalOcean tetapi akan ada perbedaan kecil dalam proses nantinya.
Syarat OpenVPN bisa diinstal adalah bahwa interface tun/tap sudah ready. Hal ini bisa dicek dengan membaca mantra cat /dev/net/tun, dan jika aktif maka outputnya adalah: cat: /dev/net/tun: File descriptor in bad state. Jika tidak ada kalimat tsb artinya belum bisa diinstal OpenVPN, silahkan enable dulu via panel atau kalo bingung kontak host owner untuk meng-enable tun/tap device. Saya asumsikan anda udah login ke console sebagai root. Let’s start!

  1. Update dulu apt-get update, tunggu beberapa detik hingga rampung
  2. Instal paket OpenVPN apt-get install openvpn
  3. OpenVPN telah memudahkan proses instalasi dengan menyediakan banyak helper script, kita copy saja file tsb ke dir OpenVPN cp -a /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/
  4. Buatlah certificate, pindah dulu ke dir berikut cd /etc/openvpn/easy-rsa/2.0
  5. Jalankan: source ./vars
  6. Jalankan: ./clean-all
  7. Jalankan: ./build-ca
ScreenHunter_376-Aug.-29-10.41
  • Nah akan muncul isian yg dimulai dengan nama negara atau Country Name. Pada tahap ini saya ga pernah isi/edit apapun. Enter saja sebanyak 7 kali untuk 7 pertanyaan yg muncul (terakhir adalah Email Address), ini tidak pengaruh apa2. Tapi kalo anda ingin tampak keren misal karena sedang ada teman yg duduk disebalah anda maka isilah pertanyaan2 tsb, jadi anda tampak sibuk ngetik diconsole dan itu akan membuat kagum teman anda :P
  • Sekarang buatlah Diffie Hellman parameter ./build-dh
  • Generate certificate untuk servernya ./build-key-server server01
  • Kali ini anda akan diinterogasi 10 pertanyaan, disini saya juga ga isi apa2 alias enter2 saja. Hati2 pencet enter jangan ngebut2 karena nanti ada dialog apakah anda ingin sign the certificate? anda harus pilih dengan pencet y
  • 1 out of 1 certificate requests certified, commit? [y/n] Pilih y lagi pada dialog ini
ScreenHunter_377-Aug.-29-10.50

  • Untuk menghindari UDP flood dan serangan DDoS maka jalankan: openvpn --genkey --secret keys/ta.key
  • Sekarang buatlah server config. Seperti tadi saya bilang bahwa nanti user bisa konek via UDP dan TCP maka disini kita akan buat 2 config. Pertama yg UDP dulu nih. cd /etc/openvpn
  • Buat file vim server.conf
  • Isikan dengan parameter berikut ini: port 1194
    proto udp
    dev tun
    ca keys/ca.crt
    cert keys/server01.crt
    key keys/server01.key
    dh keys/dh1024.pem
    plugin /usr/lib/openvpn/openvpn-auth-pam.so login
    client-cert-not-required
    username-as-common-name
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    push "redirect-gateway def1"
    push "dhcp-option DNS 4.2.2.1"
    push "dhcp-option DNS 4.2.2.2"
    keepalive 5 30
    comp-lzo
    persist-key
    persist-tun
    status server-tcp.log
    verb 3
  • Save+close file tsb
  • Buat config untuk koneksi jalur TCP: vim server-tcp.conf
  • Isikan parameter berikut ini: port 465
    proto tcp
    dev tun
    ca keys/ca.crt
    cert keys/server01.crt
    key keys/server01.key
    dh keys/dh1024.pem
    plugin /usr/lib/openvpn/openvpn-auth-pam.so login
    client-cert-not-required
    username-as-common-name
    server 10.9.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    push "redirect-gateway def1"
    push "dhcp-option DNS 4.2.2.1"
    push "dhcp-option DNS 8.8.8.8"
    keepalive 5 30
    comp-lzo
    persist-key
    persist-tun
    status server-tcp.log
    verb 3
  • Copy certificates dan keys, buat dulu direktorinya mkdir /etc/openvpn/keys
  • Copy semuanya
    cp /etc/openvpn/easy-rsa/2.0/keys/{ca.crt,server01.crt,server01.key,dh1024.pem,ta.key} /etc/openvpn/keys/
  • Konfigurasi UDP dan TCP untuk server udah kelar, sekarang edit supaya config tsb terbaca ketika OpenVPN nanti dijalankan. vim /etc/default/openvpn
  • Pada entri #AUTOSTART="all" hilangkan tanda pagar # didepannya sehingga menjadi AUTOSTART="all". Save dan close kembali file tsb
  • Restart OpenVPN /etc/init.d/openvpn restart. Hasilnya harus ada 2 [OK] sebagai bukti bahwa config UDP dan TCP sudah running
1
Pastikan ada 2 instances OpenVPN running di server, jalankan lsof -i |grep openvpn
2

  • Ada UDP dan TCP kan? Artinya udah betul. Pada TCP terlihat ssmtp yg running, itu karena saya tadi pake port 465 di config TCP-nya. Jika anda pake 443 maka akan tertera disitu sebagai https
  • Enable forwarding di VPS agar user bisa browsing, kan seru tuh user udah gembira konek tapi ga bisa browsing hehehe. Buatlah file vim /etc/sysctl.d/forwarding.conf dan isikan dengan mantra pendek net.ipv4.ip_forward=1
  • Save+close kemudian jalankan sysctl -p /etc/sysctl.d/forwarding.conf dan outputnya adalah mantra yg ada di step 27 tsb
  • Seting iptables untuk jalur UDP
    iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
  • Seting iptables untuk jalur TCP
    iptables -t nat -I POSTROUTING -s 10.9.0.0/24 -o venet0 -j MASQUERADE
  • Nah jeleknya tuh kadang Debian me-reset iptables setelah VPS restart, alias musnahlah settingan iptables yg kita jalankan tadi.
  • Masih di dalam folder /etc/openvpn buatlah direktori mkdir clientconfig
  • Copy-kan ca.crt dan ta.key yg tadi kita buat ke dir tsb. Ini akan dibutuhkan client sbg syarat konek cp /etc/openvpn/easy-rsa/2.0/keys/{ca.crt,ta.key} clientconfig/
  • Buatlah file dengan ekstensi .ovpn. Karena OpenVPN ini menyediakan 2 jalur koneksi UDP dan TCP, maka untuk client kita akan beri 2 config. Pertama saya beri nama HANTU-UDP.ovpn. Pindah dulu ke cd clientconfig kemudian vim HANTU-UDP.ovpn
  • Isikan mantra ini: client
    dev tun
    proto udp
    remote 107.150.3.178 1194
    resolv-retry infinite
    route-method exe
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca ca.crt
    auth-user-pass
    comp-lzo
    verb 3
  • Lihat ip yg saya ketik bold diatas, pada VPS anda ganti dengan ip VPS anda sendiri!
  • Trus sekarang bikin config client yg TCP, vim HANTU-TCP.ovpn
  • Isikan dengan mantra: client
    dev tun
    proto tcp
    remote 107.150.3.178 465
    resolv-retry infinite
    route-method exe
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca ca.crt
    auth-user-pass
    comp-lzo
    verb 3
  • Sekali lagi ganti ip yg bold tsb dg ip VPS anda sendiri, disampingnya adalah port TCP yg dipake. Kalo bukan pake 465 maka sesuaikan saja ya..
  • Jika sudah, cek dengan command ls -al di dalam dir clientconfig dan anda harus melihat 4 buah file yaitu: HANTU-UDP.ovpn, HANTU-TCP.ovpn, ca.crt, dan ta.key
  • Untuk memudahkan distribusi file tsb kepada para calon user maka archive-lah menjadi zip file. Jalankan zip dan jika malah command not found maka instal dahulu apt-get install zip
  • Jalankan zip VPN.zip *
  • Jika pada server anda ada webserver apache yg aktif maka file tsb bisa anda copy ke dir webserver misal /var/www. Sehingga nanti mudah anda ambil yaitu dengan download via browser http://ip-vps/VPN.zip. Saya ga akan kasih tau gimana cara cek apakah ada webserver atau tidak di VPS anda :D Bilamana pusink, download saja VPN.zip tsb dengan tool Bitvise
  • Jalankan Bitvise SSH tunnelier
  • Login harus sebagai root (wajib)
3

  • Klik “New SFTP Window”
  • Sebuah jendela explorer akan nongol. Sebelah kiri adalah PC anda (Local Files) dan sebelah kanan adalah isi dari VPS anda (Remote Files). Silahkan tuju ke Remote Files di sebelah kanan. Pada tombol navigasi klik up sekali untuk masuk ke dir / sehingga tampaklah direktori2 linux VPS anda
4

  • Dobel klik pada direktori etc. Ingat kan, sebelumnya kita sudah membuat config untuk user yg sudah di-zip di dalam /etc/openvpn/clientconfig. Maka setelah masuk ke dir /etc dobel klik openvpn dan dobel klik dir clientconfig untuk membuka dir tsbScreenHunter_383 Aug. 29 12.00
  • Terlihat di dalamnya ada VPN.zip yg sudah kita buat pada tahap sebelumnya. Download file ini ke PC anda dengan cara klik kanan > Download atau cukup drag and drop saja ke jendela Local Files yg ada disebelah kiri.
  • Setelah ter-download pastikan isi dari VPN.zip adalah 4 buah file yg sudah kita buat tadi

  • ScreenHunter_384 Aug. 29 12.01
  • Ekstrak VPN.zip ke lokasi sementara, misalnya di Desktop
  • Download software OpenVPN GUI ke PC anda dan segera instal
  • Setelah terinstal di PC, masuklah ke folder C:Program FilesOpenVPNconfig
  • Hapus semua file dan folder yg ada disitu
  • Buatlah 2 buah folder baru, masing2 bernama HANTU UDP dan HANTU TCP atau nama folder sesuka anda
  • Kembali ke lokasi dimana anda ekstrak VPN.zip sebelumnya, copy semua file minus HANTU-TCP.ovpn ke dalam folder HANTU UDP
  • Copy semua file minus HANTU-UDP.ovpn ke dalam folder HANTU TCP. Penampakannya gini nih:
  • ScreenHunter_384 Aug. 29 13.30 ScreenHunter_385 Aug. 29 13.31
  • Bagaimana dengan akun untuk konek? User membutuhkan autentikasi username dan password agar bisa konek. Disini user openvpn hanyalah user atau akun Linux biasa. Kalo VPS ini udah anda setting untuk ssh tunnel dan sudah mempunya beberapa user, maka user tsb juga bisa konek ke OpenVPN ini dengan password yg sama. Intinya, pembuatan user bisa pake command paling basic ini di dalam VPS anda: useradd -s /bin/false nama_user
  • Kembali ke console VPS dan mari kita buat 1 user untuk percobaan konek OpenVPN ScreenHunter_386 Aug. 29 13.41
  • Catat username dan passwordnya untuk konek. Jalankan dulu OpenVPN GUI yg sudah terinstal di pc (run as administrator), tunggu hingga icon OpenVPN GUI nongol di system tray sudut kanan bawah. Iconnya adalah logo bola dunia dan 2 pc yg layarnya berwarna merah [UPDATE: GUI versi terbaru logonya udah beda]
  • Klik kanan pada icon tsb dan jika langkah sebelumnya sudah tepat maka akan ada 2 pilihan koneksi yaitu masing2 HANTU-TCP dan HANTU-UDP. Arahkan dg mouse ke salah satu nama koneksi tsb dan pilihlah “Connect”
  • OpenVPN GUI akan segera menyambungkan anda dengan server, tetapi anda harus mengisi username dan password dulu agar bisa konek ScreenHunter_387 Aug. 29 13.47
  • Klik OK untuk memulai koneksi ke server OpenVPN yg sudah diinstal pada seluruh langkah diatas. Status log akan terlihat saat connecting, dan icon akan berubah menjadi warna kuning. Bilamana sudah berwarna hijau artinya koneksi sukses ScreenHunter_390 Aug. 29 14.52
  • Test dengan browsing ke cmyip.com, pastikan browser anda tidak sedang menggunakan proxy atau socks apapun. Jika anda melihat ip VPS anda nongkrong di layar monitor, maka selamat! Anda sudah sukses menginstal OpenVPN di VPS Debian dan menjalankannya di PC/laptop anda
  • Bukti adanya OpenVPN yg sudah konek secara sistematis terlihat pada screenshot dibawah ini, cocokin tuh dg ip vps saya tertera pada server.conf, sama kan? :DScreenHunter_389 Aug. 29 14.02
  • Happy browsing, downloading and gaming! Pada pc anda, setelah OpenVPN GUI sukses koneksinya maka TIDAK diperlukan setingan apapun pada aplikasi apapun. Semua aplikasi yg anda jalankan sudah otomatis akan bekerja dibawah jalur VPN tsb.

Source
Tag : vps
0 Komentar untuk "Cara Instal OpenVPN di VPS Debian"

Back To Top