Menu Close

Koneksi internet melalui VPN di OpenVZ VPS

Beberapa waktu lalu, saya pernah membuat tutorial untuk membuat sebuah VPN server dengan sebuah VPS yang berlokasi di Chicago, Amerika. Namun dikarenakan script otomatisasi yang dulu sudah tidak bisa dipakai lagi, maka kali ini saya membuat sebuah tutorial baru, dengan otentifikasi mempergunakan Certificate dan Key untuk masing-masing user.
Tutorial ini saya terapkan di VPS saya dengan spesifikasi berikut :

OpenVZ Virtual Private Server
CentOS 5.5 x86
Location Chicago, IL
Memory 256 Mb
Burstable 512 Mb
Disk Space 10Gb
Bandwidth 500Gb
Tun / Tap enabled

Konfigurasi Server
Sebelum membuat VPN server ini, saya rebuild VPS saya dengan OS Template yang baru, agar tidak terjadi konflik.
Mengupdate dan mengupgrade Operating System yang berjalan di VPS :

# yum upgrade && yum update
# yum install gcc make rpm-build autoconf.noarch zlib-devel pam-devel openssl-devel

 
Download OPENVPN repo :

# wget http://openvpn.net/release/lzo-1.08-4.rf.src.rpm

for 32 bit

# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

for 64bit

# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

Build the rpm packages

# rpmbuild --rebuild lzo-1.08-4.rf.src.rpm
# rpm -Uvh /usr/src/redhat/RPMS/i386/lzo-*.rpm
# rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.i386.rpm
* remember to change i386 to x86_64 if you're using 64bit

Install OPENVPN

# yum install openvpn

Copy OPENVPN easy-rsa folder to /etc/openvpn/

# cp -R /usr/share/doc/openvpn-2.2.0/easy-rsa/ /etc/openvpn/

Creating the Certificate :

# cd /etc/openvpn/easy-rsa/2.0
# chmod 755 *
# source ./vars
# ./vars
# ./clean-all

Build CA :

#./build-ca

Build key server :

#./build-key-server server

Build Diffie Hellman (wait a moment until the process finish)

# ./build-dh

Membuat Certificate untuk Client,  dalam contoh ini saya membuat sesuai nama saya, erawanarifn :

#./build-key erawanarifn
# ./build-key client1
# ./build-key client2
# ./build-key namauser

Membuat konfigurasi port forwarding ke IP VPS :

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to ip.address.vps.anda
# /etc/init.d/iptables save

Selanjutnya kita membuat file konfigurasi untuk server , disimpan di /etc/openvpn/openvpn.conf

local ip.address.vps.anda
port 1194
proto udp
dev tun
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 4.2.2.1"
keepalive 5 30
comp-lzo
persist-key
persist-tun
status server-tcp.log
verb 3

Mengcopy file certificate ke directory openvpn :

# cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn/ca.crt
# cp /etc/openvpn/easy-rsa/2.0/keys/ca.key /etc/openvpn/ca.key
# cp /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem /etc/openvpn/dh1024.pem
# cp /etc/openvpn/easy-rsa/2.0/keys/server.crt /etc/openvpn/server.crt
# cp /etc/openvpn/easy-rsa/2.0/keys/server.csr /etc/openvpn/server.csr
# cp /etc/openvpn/easy-rsa/2.0/keys/server.key /etc/openvpn/server.key

Menambahkan OpenVPN saat startup VPS :

# chkconfig openvpn on

Menjalankan OpenVPN sebagai service :

# service openvpn start

Jika konfigurasi berhasil, maka OpenVPN akan berjalan.
Konfigurasi Client
Mengcopy file di direktory /etc/openvpn/easy-rsa/2.0/keys ke komputer, dan menyimpannya di C:/Program Files/OpenVPN/config
Membuat file konfigurasi untuk Client :

C:/Program Files/OpenVPN/config/Openvpn.ovpn
client
remote ip.address.vps.anda 1194
dev tun
comp-lzo
ca ca.crt
cert erawanarifn.crt
key erawanarifn.key
route-delay 2
route-method exe
redirect-gateway def1
dhcp-option DNS 10.8.0.1
verb 3

Setelah semua selesai, kita jalankan OpenVPN Gui.
Jika sukses, maka semua koneksi internet akan dilewatkan melalui VPS
 

33 Comments

    • Erawan Arif Nugroho

      Maksudnya semua traffic yang kita lakukan dalam mengakses akan dianggap dilakukan dari VPS mas.
      Akses yang kita lakukan akan dilihat dari IP Address dari VPS. Dan juga bandwidth yang kita pakai dalam mengakses internet, akan mengurangi alokasi bandwidth dari VPS kita juga.
      Intinya, koneksi VPN, bisa dipergunakan untuk menyembunyikan identitas/asal lokasi atau IP asli kita.
      Dalam beberapa kasus, ada beberapa website Luar Negeri yang hanya bisa diakses oleh warga di Luar Negeri. Misalnya Hulu.com, film-filmnya hanya bisa dinikmati oleh warga Amerika.
      Bila masih ada yang ingin ditanyakan, monggoo… 🙂

  1. Koole

    kalo sekedar untuk tunneling supaya bisa akses internet melalui IP VPS saya lebih seneng pake debian dan pam plugin, jadi client ngga perlu pake certificate tapi username & password.
    trus KEY_SIZE di file vars saya rubah jadi 384, dan enkripsi cipher juga saya disable supaya koneksi jadi lebih ringan tanpa diberat2in oleh proses enkripsi.
    salam kenal mas erawan 😉

  2. Tigor Manurung

    nice article :), saya sudah mempraktekkan tapi ada kendala error seperti berikut ini :
    Thu Jan 26 03:46:12 2012 OpenVPN 2.2.0 i686-redhat-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] built on Jun 6 2011
    Thu Jan 26 03:46:12 2012 NOTE: OpenVPN 2.1 requires ‘–script-security 2’ or higher to call user-defined scripts or executables
    Thu Jan 26 03:46:12 2012 Diffie-Hellman initialized with 1024 bit key
    Thu Jan 26 03:46:12 2012 TLS-Auth MTU parms [ L:1574 D:138 EF:38 EB:0 ET:0 EL:0 ]
    Thu Jan 26 03:46:12 2012 Socket Buffers: R=[137216->131072] S=[137216->131072]
    Thu Jan 26 03:46:12 2012 ROUTE: default_gateway=UNDEF
    Thu Jan 26 03:46:12 2012 Note: Cannot open TUN/TAP dev /dev/net/tun: Permission denied (errno=13)
    Thu Jan 26 03:46:12 2012 Note: Attempting fallback to kernel 2.2 TUN/TAP interface
    Thu Jan 26 03:46:12 2012 Cannot allocate TUN/TAP dev dynamically
    Thu Jan 26 03:46:12 2012 Exiting
    itu kenapa ya?

    • Erawan Arif Nugroho
      Note: Cannot open TUN/TAP dev /dev/net/tun: Permission denied (errno=13)

      Kalau dilihat dari sini, kemungkinan errornya karena TUN/TAP nya belum aktif Pak 🙂
      Ini pakai OpenVZ? Kalau iya, bisa minta di-enable dari Hostnya. Kalau misalnya pakai Xen, seharusnya langusng jalan.
      Coba dijalankan perintah ini :

      # ls -al /dev/net/tun

      Kalau hasilnya ok, tanpa error, berarti module TUN/TAP jalan di VPS. Kalau ada keterangan not found/error, kemungkinan TUN/TAP nya didisable dari Host.

    • Erawan Arif Nugroho

      O iya, maaf Pak. Sepertinya terlewat, belum saya masukkan.
      Tutorialnya sudah saya update. Bisa dengan menjalankan perintah berikut di tempat kita membuat key untuk server :

      # ./build-key erawanarifn
      # ./build-key client1
      # ./build-key sesuaikebutuhan
  3. Adam

    terimakasih mas
    sudah saya save kontaknya
    wah saya jadi gak enak dipanggil bapak,hihihi
    ps:
    apa gak apa-apa mas share kontak langsung di comment box?saya saja yang dulu gak sengaja share no.hp sekarang suka di spam sama orang ga jelas(info diskon apa lah,dsb)

  4. chandra35

    mas tanya dong,
    gimana cara nya agar semua config td di remove, termasuk binding port nya, masalahnya saya copas dari web , tanda petik pada dns nya itu ternyata berubah menjadi titik , dan saya tidak menelitinya,
    ketika saya teliti, ternyata kesalahannya disitu,
    dan ketika saya buat conf baru, pas di run hasil nya seperti ini :
    root@server [/etc/openvpn]# openvpn 443.conf
    Fri Feb 24 11:44:26 2012 OpenVPN 2.0.9 i386-redhat-linux [SSL] [LZO] [EPOLL] built on Feb 24 2012
    Fri Feb 24 11:44:26 2012 WARNING: This configuration may accept clients which do not present a certificate
    Fri Feb 24 11:44:26 2012 TCP/UDP: Socket bind failed on local address [undef]:443: Address already in use
    Fri Feb 24 11:44:26 2012 Exiting
    ==============
    mohon petunjuknya dong mas, makasih 😀

    • Erawan Arif Nugroho

      Config yang mana yang dimaksud mas? Kurang begitu paham, hehe..
      Kalau yang dimaksud :

      TCP/UDP: Socket bind failed on local address [undef]:443: Address already in use

      Kemungkinan OpenVPN atau program yang lain sudah ada yang mempergunakan port 443.
      Coba direstart OpenVPNnya :

      # service openvpn restart
    • Erawan Arif Nugroho

      Kemungkinan besar karena port forwardingnya belum disetting 🙂
      Silakan dicoba dijalankan perintah berikut ini :

      # echo 1 > /proc/sys/net/ipv4/ip_forward
      # iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to ip.address.vps.anda
      # /etc/init.d/iptables save
      # service openvpn restart
      atau
      # /etc/init.d/openvpn restart

      Setelah OpenVPN di Server / VPS direstart, coba disconnect OpenVPN Client yang ada di Computer / Laptop kita. Lalu dicoba connect lagi / Reconnect.

  5. Adam

    mas saya coba di lain server kok kena error pas routing
    iptablesnya iptables v1.3.5: can’t initialize iptables table `nat’: Table does not exist (do you need to insmod?)
    Perhaps iptables or your kernel needs to be upgraded.
    kenapa ya??

    • Erawan Arif Nugroho

      Kalau muncul kayak gini, berarti module iptablesnya belum dienable sama hostnya.
      Saya pakai XEN maupun OpenVZ, semuanya bisa. Karena sudah dienable sama hostnya.
      Coba dikirimin Ticket, minta dienable TUN/TAP dan IPTABLESnya.

  6. andika

    wahhh,,, tutorialnya bgus bgt mas,,,
    saya mw ngulang cerita lama dikit ne mas,, heheheh
    seperti yang telah di tanyakan @chandra35,,,
    saya kemaren dh coba instal vpn, cuman gagal, trus saya coba lagi, tetap masih gagal, log nya kayak gini mas,,
    openvpn –config /etc/openvpn/service.conf
    Thu Feb 28 05:54:19 2013 OpenVPN 2.2.2 i686-redhat-linux-gnu [SSL] [LZO2] [EPOLL ] [PKCS11] [eurephia] built on Apr 5 2012
    Thu Feb 28 05:54:19 2013 NOTE: OpenVPN 2.1 requires ‘–script-security 2′ or hig her to call user-defined scripts or executables
    Thu Feb 28 05:54:19 2013 PLUGIN_INIT: POST /usr/share/openvpn/plugin/lib/openvpn -auth-pam.so ‘[/usr/share/openvpn/plugin/lib/openvpn-auth-pam.so] [/etc/pam.d/lo gin]‘ intercepted=PLUGIN_AUTH_USER_PASS_VERIFY
    Thu Feb 28 05:54:19 2013 Diffie-Hellman initialized with 1024 bit key
    Thu Feb 28 05:54:19 2013 WARNING: file ‘/etc/openvpn/keys/server.key’ is group o r others accessible
    Thu Feb 28 05:54:19 2013 WARNING: POTENTIALLY DANGEROUS OPTION –client-cert-not -required may accept clients which do not present a certificate
    Thu Feb 28 05:54:19 2013 TLS-Auth MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
    Thu Feb 28 05:54:19 2013 Socket Buffers: R=[87380->131072] S=[16384->131072]
    Thu Feb 28 05:54:19 2013 TCP/UDP: Socket bind failed on local address [undef]:44 3: Address already in use
    Thu Feb 28 05:54:19 2013 Exiting
    saya dh coba restart open vpn y,, tapi hasilnya masih sama,, trus bagaimana solusinya mas?
    mkasih sebelumnya.,,
    🙂
     
     

    • Erawan Arif Nugroho

      Kasus yang sama ya mas?
      TCP/UDP: Socket bind failed on local address [undef]:44 3: Address already in use
      Ini ada proses yang jalan dan mempergunakan port 443 ga ya mas?
      Misalnya webserver (apache/nginx/lighthttpd,dll) atau mungkin ada konfigurasi openvpnnya? Apakah membuat sendiri atau mengambil dari tutorial lainnya?
      Kalau misalnya setelah direstart openvpnnya, openvpnnya masih error, coba distop lalu distart lagi.

  7. sabana

    mas gan, tanya nih, ane ikutin tutorial ente dari awal mpe akhir mas gan, tapi pas nyampe start openvpn nya terjadi kyak gini ? errornya…mohon pencerahan gan… 🙂
    [root@vps easy-rsa]# service openvpn start
    Starting openvpn: Usage: ip link set DEVICE { up | down |
                                 arp { on | off } |
                                 dynamic { on | off } |
                                 multicast { on | off } |
                                 allmulticast { on | off } |
                                 promisc { on | off } |
                                 trailers { on | off } |
                                 txqueuelen PACKETS |
                                 name NEWNAME |
                                 address LLADDR | broadcast LLADDR |
                                 mtu MTU }
           ip link show [ DEVICE ]
                                                               [FAILED]
    [root@vps easy-rsa]#

    • Erawan Arif Nugroho

      Coba begini mas :

      # cd /etc/openvpn
      # openvpn openvpn.conf

      Muncul errornya apa ya? Apakah vpsnya support tun/tap? Coba diperiksa pakai perintah ini :

      # ls -al /dev/net
      drwxr-xr-x 2 root  500    4096 Dec  2 15:58 .
      drwxr-xr-x 5 root root    4096 Feb 12 00:05 ..
      crw-r--r-- 1 root root 10, 200 Dec  2 15:58 tun

      Apakah muncul seperti di atas?

        • Erawan Arif Nugroho

          Maksudnya tun/tap tidak ada mas?
          Coba dienable dulu tun/tap dari SolusVM, tunggu sebentar, vps akan reboot, setelah itu coba perintah ini :

          # ls -al /dev/net/

          Ada muncul list tun nggak? Kadang tun/tap didisable sama providernya, jadi harus minta bantu ke provider juga.

  8. Muhammad Munir

    sore mas,. saya mau tanya ada kendala ini kenpa ya?
    [root@server ~]# cp -R /usr/share/doc/openvpn-2.2.0/easy-rsa/ /etc/openvpn/
    cp: cannot stat `/usr/share/doc/openvpn-2.2.0/easy-rsa/’: No such file or directory

  9. hariyadi

    ms gan, tutornya bagus bgt nih ….
    sy udah ikuti tutor diatas, selama setting dr awal sampe akhir smua normal ..
    tp begitu restart muncul tulisan :
    # service openvpn restart
    Shutting down openvpn: [ OK ]
    Starting openvpn: [FAILED]
    ini knpa ya ?? mohon bantuannya ya ms gan ….

Leave a Reply

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