Set up OpenVPN di Ubuntu Server 7.04

Ini merupakan tutorial bagaimana set up OpenVPN di server Ubuntu Feisty. Sebelum melakukan set up pastikan Ubuntu Server sudah terinstal dan berjalan dengan baik. Untuk melakukan instalasi OpenVPN pastikan beberapa dependency package sudah terinstall. Biasanya sih ubuntu akan otomatis menginstall package lain yang dibutuhkan. Namun bila paket yang dibutuhkan tidak terinstall secara otomatis maka bisa dilakukan installasi manual. Paket yang dibutuhkan adalah openssl, lzo, pam. OpenSSL untuk kebutuhan enkripsi data yang dikirim melalui jaringan, LZO merupakan kompressor untuk mengkompress paket data yang dikirim sehingga ukuran paket yang dikirim lebih kecil dan lebih cepat. Sedangkan PAM biasanya sudah diinstall, merupakan paket untuk fungsi otentikasi lokal ke server Linux. Untuk installasi OpenVPN setelah semua siap lakukan langkah sebagai berikut:

  1. Install OpenVPN server, caranya ketik di terminal “sudo apt-get install openvpn”. Installasi akan mencari paket pada repository, bila tidak tersedia secara lokal atau pada CD installer maka harus terhubung ke internet agar installer dapat mendownload paket yang dibutuhkan. Installasi akan berjalan tunggu hingga selesai.
  2. Copy file contoh dari folder document OpenVPN ke folder konfigurasi OpenVPN. Caranya ketik di terminal
    sudo cp -R /usr/share/doc/openvpn/example /etc/openvpn/
  3. Masuk ke folder example yang telah di copy ke folder konfigurasi OpenVPN. Caranya ketik di terminal cd /etc/openvpn/example
  4. Setup Certificate Authority dan server key dimana sertifikat ini harus dimiliki oleh tiap client. Sertifikat merupakan file yang berfungsi sebagai kunci. tanpa file ini maka client tidak akan bisa terhubung. Cara setup sertifikat dan public key sebagai berikut:
    sudo ./vars
    sudo ./clean-all
    sudo ./build-ca

    Perintah-perintah diatas akan mengenerate sertifikat dan key yang dibutuhkan.
  5. Selain sertifikat dan public key diatas kita juga perlu menggenerate private key yang akan digunakan oleh server. Ketikkan perintah berikut di terminal
    sudo ./build-key-server server.
    Jawab yes dengan menekan tombol Ypada pertanyaan
    Sign the certificate? [y/n]
    dan
    1 out of 1 certificate requests certified, commit? [y/n].
  6. Generate Diffie Hellman dengan perintah
    sudo ./build-dh.
  7. Perintah-perintah diatas akan membuat folder keys pada folder saat ini yaitu
    /etc/openvpn/examples/keys/
    folder ini dimiliki oleh root karena perintah dijalankan dengan sudo. Untuk itu kita perlu mengubah hak akses folder dengan perintah
    sudo chmod -R 644 /etc/openvpn/example/keys
  8. Copy file yang dibutuhkan ke folder utama konfigurasi openvpn yaitu dengan perintah
    cd keys
    sudo cp ca.* /etc/openvpn
    sudo cp server.* /etc/openvpn
    sudo cp dh1024.pem /etc/openvpn
  9. Buat file konfigurasi dengan nama server.conf di folder OpenVPN. Berikut contoh dengan menggunakan vim editor. Pada terminal ketik "sudo vim /etc/openvpn/server.conf". Bila muncul screen baru kosong tekan "A" untuk mode edit masukkan teks konfigurasi berikut:
    #plugin untuk membuat OpenVPN client login terlebih dahulu pada server sebelum terhubung
    plugin /usr/lib/openvpn/openvpn-auth-pam.so login
    #client private key tidak diperlukan karena menggunakan login local
    client-cert-not-required
    username-as-common-name
    #port yang digunakan server Openvpn, secara default berisi port 1194
    port 1194
    #Settingan protokol yang digunakan. Defaultnya adalah UDP
    #namun sebagian besar ISP memblok paket UDP
    #sehingga OpenVPN terkadang tidak bisa berjalan pada protokol UDP.
    #Ganti tcp-server dengan UDP bila hendak menggunakan protokol UDP.
    proto tcp-server
    #tipe virtual network yang digunakan, tun untuk tunnel, dan tap untuk bridge mode.
    dev tun
    #Settingan certificate dan key untuk server
    ca ca.crt
    cert server.crt
    key server.key
    dh dh1024.pem
    #Settingan untuk berjalan sebagai server
    #Secara otomatis server akan memiliki IP 10.131.1.1 dan sisanya untuk client
    server 10.22.1.0 255.255.255.0
    #Agar client yang terputus memperoleh ip yang sama maka data koneksi disimpan pd file
    ifconfig-pool-persist ipp.txt
    #memberikan routing ke client agar network di routing melalui vpn
    #sehingga client dapat mengakses network di belakan vpnserver
    push "route 10.22.1.0 255.255.255.0"
    #Settingan apakah client dapat saling terhubung atau tidak
    client-to-client
    keepalive 10 120
    #Setting agar koneksi dikompress dan algoritma LZO
    comp-lzo
    #Untuk keamanan maka aplikasi diubah running user & groupnya
    user nobody
    group nogroup
    persist-key
    persist-tun
    status openvpn-status.log
    verb 3

    Setelah selesai tekan "escape" untuk kembali ke mode normal, lalu tekan ":wq" agar keluar dari vim editor dan menyimpan file.
  10. Jalankan openvpn dengan perintah
    sudo /etc/init.d/openvpn start.

Konfigurasi server sudah selesai. Kita sisa melakukan konfigurasi klien. Saya membahas client windows karena sebagian besar client masih menggunakan windows. Berikut langkah konfigurasi klien VPN:

  1. Download OpenVPN GUI dari http://openvpn.se/download.html
  2. Install hingga selesai.
  3. Buat file konfigurasi klien di folder default OpenVPN di "C:\Program Files\OpenVPN\config\". Caranya buka notepad dan masukkan teks konfigurasi seperti contoh berikut:

    #Setting agar user memasukkan user dan password
    auth-user-pass
    #Setting agar bertindak sebagai client
    client
    #Tipe device dan protokol yang digunakan
    dev tun
    proto tcp-client
    #Alamat & port remote server OpenVPN yang akan diakses
    #Ganti x.x.x.x dengan alamat publik server OpenVPN
    remote x.x.x.x 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    #Settingan agar menggunakan sertifikat CA
    #yang akan dibandingkan dengan server
    ca ca.crt
    ns-cert-type server
    #Settingan untuk kompresi data
    comp-lzo
    verb 3

    Simpan dengan nama client.ovpn di folder config Openvpn.
  4. Jalankan openvpn GUI lalu pada icon OpenVPN Gui di tray klik kanan->Connect. Masukkan username dan password user lokal pada server OpenVPN.
  5. Bila tidak ada masalah maka client akan terhubung dengan server.

Demikian tutorial set up OpenVPN. Untuk lebih jelas sebaiknya menggunakan manual openvpn dan howto openvpn. Tutorial ini cuma memberi langkah praktis. Saya memilih settingan tidak menggunakan private key untuk tiap klien. Tapi menggunakan autentikasi ke server OpenVPN menggunakan account local pada server. Tiap klien yang terhubung harus memiliki user name local yang berbeda agar tidak terjadi bentrok saat terhubung dengan server. Semoga tutorial ini bisa membantu.

We have 40 comments in this post, add more by leave yours below.

  1. terima kasih sekali atas artikelnya, ternyata membuat vpn seperti ini tidak terlalu sulit dan cukup bermanfaat.

    saya minta ijin untuk mengutip sebagian artikel ini untuk di cantumkan pada blog saya.

  2. Untuk mengkutip artikel silakan saja, selama anda mencantumkan asal artikel ini saya tidak keberatan. Terima kasih.

  3. terima kasih ya, i’m trying it now,

  4. oh ya, mas kalo seting di blankon lontara apa juga sama caranya ..???

    maaf, masih newbie di linux,
    soalnya saya mau migrasi ke linux

  5. Harusnya sih sama, tapi perlu diperhatikan untuk penggunaan versi openvpn dan ubuntu yang menjadi basis blankon. Ada kemungkinan perbedaan sedikit bila versi yang digunakan berbeda.

  6. mas… saya mau tanya kalau auth vpn melalui LDAP server gmn caranya?bisa kasih tutorialnya…karena waktu saya coba pakai openvpn-auth-ldap selalu gagal..

    terima kasih

  7. Wah.. saya blm pernah nyobain auth ke LDAP. Tapi sepertinya ada plugin tambahan untuk OpenVPN tapi mungkin juga tidak. Tinggal menambahkan konfigurasi auth ke LDAP di server.conf. tapi syntax yang ditambahkan saya blm tau. Maaf ya. Mungkin anda bisa menemukan dokumentasinya di openvpn.net. Saya sudah lama ga berkutat dengan OpenVPN jadi rada lupa deh. Hehehehe..

  8. mas, gimana caranya agar server dapat mengakses network dibelakang client? trus gimana setingannya kalo kita mau menghubungkan banyak client dengan satu server dan semua client dapat mengakses network dibelakang server, begitu juga server bisa mengakses network dibelakang semua client?
    thx, sory kalo banyak nanya . .
    hehe . .

  9. agar bisa mengakses network dibelakang client syaratnya ada 2 yaitu client bisa berfungsi sebagai router atau ip forwarding diaktifkan dan client mendapat ip statis bukan dinamis. Hal ini bisa diset dengan mengubah setting server openvpn agar untuk user yang sama diberikan ip address yang sama. Caranya bisa dilihat di openvpn.net. Jangan lupa aturan firewall agar membolehkan akses dari server ke belakang client.

    settingan diatas memang untuk server yang dapat menangani banyak client. namun agar client dapat mengakses network dibelakang server prinsipnya sama dengan diatas. Server harus dapat berfungsi sebagai router dan settingan firewall membolehkan client untuk mengakses network di belakang server.

    Simple-nya sih seperti itu. Semoga membantu.

  10. Om
    pada bagian ini gemana :
    Copy file yang dibutuhkan ke folder utama konfigurasi openvpn yaitu dengan perintah
    cd keys
    sudo cp ca.* server.* dh1024.pem
    ————————————–
    # cp ca.* server.* dh1024.pem
    cp: target `dh1024.pem’ is not a directory
    ————————————–
    muncul itu om kenapa yah ?

    thanks

  11. sorii.. jangan lieur atuh.. ini mah cuma salah nulis. Kan pesan errornya not directory. Maksudnya ngopi file ca.*, server.*,dan dh1024.pem ke folder konfigurasi openvpn yaitu di /etc/openvpn. Udah saya benerin kok. Sok.. dicoba lagi..

  12. Maksih Kang ! Ganti ach om na pake akang ! btw kalo gak salah itu example itu ada yang :
    /1.0 dan
    /2.0

    Akang Pake na yang mana neh ?

    kayakna ada penambahan plugin neh .. ? :D

  13. Nambih :

    sudo cp /usr/share/doc/openvpn/example /etc/openvpn/

    apa

    sudo cp -Rf /usr/share/doc/openvpn/* /etc/openvpn/

    Mohon bimbingan na om eh Kang ! :D

  14. Pake yang versi 2.0 alias versi terbaru. Trus ngopinya pake
    sudo cp -R /usr/share/doc/example/ /etc/openvpn/
    Copy pake option -R maksudnya ngopi rekursif atau kopi folder beserta isinya.
    Pokoknya gimana caranya supaya folder example bisa masuk ke /etc/openvpn/

  15. weh masih onlen toh om ! :D eh kang !

  16. Mas, setingan diatas udah saya coba. Saya ping antar client dengan menggunakan IP virtual mau, tapi kok ping ke server gak mau ya? Dari server juga gak mau ping ke client, gimana thu?

  17. coba cek servernya pake firewall atau tidak, apakah server membolehkan menerima ping. Trus pastiin server ip forwarding sudah diaktifkan. Caranya bisa lihat di
    sini atau coba cari di google bagaimana untuk mengaktifkan ip forwarding untuk distro Linux anda.
    Kalau sudah semua dan masih gagal coba trace route dari client ke server. Caranya di linux traceroute ip-server atau di windows tracert ip-server

    Periksa hasil trace route mati dimana apakah di client atau di server. Jadi bisa ketahuan masalah dimana.

  18. mas, kalo jaringan pake openvpn berarti kan ada header yg ditambahin yg artinya bandwidth juga harus ditambah. kira2 berapa besar tambahan headernya? misalnya kalo ngirim data 64 byte, berapa totalnya kalo pake openvpn? apa ada rumusnya? thx ya! :D

  19. Kalau header tambahan memang pasti ada, tapi besar tambahannya saya tidak tau juga. Tapi adanya beban tambahan tidak terlalu berarti karena jumlahnya sangat kecil. Bahkan dengan mengaktifkan kompressi pada openvpn saya pernah membuktikan ping antar komputer yang sama dengan openvpn dan tidak hasilnya latencynya lebih kecil pake openvpn. Mungkin karena kompresi tapi saya tidak bisa memastikan.

  20. btw, seru juga neh udah kayak di forum . heheheheh .. oiya tanya lagi donk semua nya dech .. !!

    model jaringan yang di pake seperti ini

    http://geocities.com/erahman2001/question_openvpn.txt

    include pertanyaann disana .. !! sebelumnya terima kasih !!

  21. Kalau lihat dari gambaran kasusnya kayaknya bagusnya nginstall openvpn server di router B dan instal openvpn juga di router A tapi bertindak sebagai client. Settingan clientnya bisa sama dengan tutorial diatas cuma modifikasi ip address nembak ke ip router B.

    Jadi nanti kerjanya router A akan terhubung ke router B melalui openvpn network. Jangan lupa di tiap router ditambahin route dari office A ke B dan sebaliknya. Nantinya semua komputer di office A dan B bisa terhubung.

    jangan lupa untuk bisa menggunakan remote desktop pastikan di firewall dibukakan port yang dibutuhkan. Kemungkinan firewall aktif di router A dan B. Semoga berhasil.

  22. om i have this error :
    —————————
    thunderbox:/etc/openvpn# openvpn –config /etc/openvpn/client.conf
    Thu Jul 24 22:15:56 2008 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Sep 20 2007
    Enter Auth Username:redwhite
    Enter Auth Password:
    Thu Jul 24 22:16:08 2008 IMPORTANT: OpenVPN’s default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
    Thu Jul 24 22:16:08 2008 Cannot load CA certificate file ca.crt (SSL_CTX_load_verify_locations): error:02001002:system library:fopen:No such file or directory: error:2006D080:BIO routines:BIO_new_file:no such file: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib
    Thu Jul 24 22:16:08 2008 Exiting
    thunderbox:/etc/openvpn#
    —————————–

    plase advs ! thanks ;)

  23. file ca.crt ga ketemu. Pastiin file ca.crt dikopi dari server openvpn-nya trus masukin ke /etc/openvpn/

  24. #Settingan untuk berjalan sebagai server
    #Secara otomatis server akan memiliki IP 10.131.1.1 dan sisanya untuk client
    server 10.22.1.0 255.255.255.0

    Itu gimana maksudnya?

  25. Maksudnya virtual private network yang dibuat akan memiliki IP range 10.22.1.1 – 10.22.1.254.

    Jadi Ip pertama 10.22.1.1 itu akan dimiliki server dan sisanya akan diberikan kepada client yang terhubung. Semoga membantu

  26. Oohh.. soalnya antara command dan comment beda tuh :D

  27. dmn terminalnya bro hehe cory gaptek

  28. Pa Mohon Bantuannya

    Apakah OPENVPN Selalu harus di install DHCP Server..Karena yang saya bingung adalah bagaimana bisa mendapatkan IP POOL..

    Apakah dari Server OPENVPN yang sudah support DHCP??

    Mhn Bantuannya

    • Ga perlu install DHCP server, karena ip client tuh digenerate oleh OpenVPN server bukan oleh DHCP server. Jadi memang OpenVPN memiliki fungsi terbatas dari DHCP.

  29. Maap Pa mao bertanya lagi…
    Bagaimana caranya Client tidak mendapatkan IP tetapi IP Client di isi static….

    Mohon bantuannnya Pa..

    Thx Before

    • Ada settingan di server yang bisa membuat client menerima IP yang sama setiap kali dia konek. Coba baca di openvpn.net, di bagian manualnya kayaknya ada tuh.

  30. Oya saya mao bertanya lagi..

    kenapa daftar di IP-POOL selalu berbeda 2
    Cth di IP-POOL 192.168.1.4
    di VPN CLient: 192.168.1.6

    Mohon Bantuannya Pa

    • Kalau ga salah OpenVPN ada settingan yang selalu mengalokasikan IP server berbeda untuk tiap client. Jadi ip server untuk client A berbeda dengan IP server client B. Yang dimaksud adalah IP virtual yg digunakan antar server dan client tersebut sj. Manfaatnya mungkin untuk lebih private dan aman aja.

  31. kk kasi tw donkzzzz serifikasi u buntu versi9 ok kirim ke e-mail q ya ni dya

    yudipayuse@yahoo.co.id

    tlong di blzzz bwt tugas nieh

  32. mas gimana cara pengaturan buat username n password komputer client?

  33. nah kalau kita mau authentifikasi pake username+password untuk beberapa user berbeda-beda gimana ya?saya baca di dokumentasinya kurang paham. Mohon bantuannya ^^

    • Kalo detailnya saya dah lupa, tapi dulu saya implementasinya dengan membuat account di server untuk tiap user yang akan login. Kemudian di settingan autentikasinya dibuat agar melakukan login berdasarkan account user di server. Mengenai detail teknis bagaimana settingannya di server dan client silakan merujuk pada dokumentasi karena sudah lama sekali dan saya dah lupa :-)

  34. Bisa dicontohkan mas konfigurasi openvpn client yang akan di jadikan router.
    Terima kasih

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Connect with us

thinkrooms on Facebook

Related Post