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 :
1 2 3 4 5 6 7 8 |
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 :
1 2 |
# yum upgrade && yum update # yum install gcc make rpm-build autoconf.noarch zlib-devel pam-devel openssl-devel |
Download OPENVPN repo :
1 |
# wget http://openvpn.net/release/lzo-1.08-4.rf.src.rpm |
for 32 bit
1 |
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm |
for 64bit
1 |
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm |
Build the rpm packages
1 2 3 4 |
# 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
1 |
# yum install openvpn |
Copy OPENVPN easy-rsa folder to /etc/openvpn/
1 |
# cp -R /usr/share/doc/openvpn-2.2.0/easy-rsa/ /etc/openvpn/ |
Creating the Certificate :
1 2 3 4 5 |
# cd /etc/openvpn/easy-rsa/2.0 # chmod 755 * # source ./vars # ./vars # ./clean-all |
Build CA :
1 |
#./build-ca |
Build key server :
1 |
#./build-key-server server |
Build Diffie Hellman (wait a moment until the process finish)
1 |
# ./build-dh |
Membuat Certificate untuk Client, dalam contoh ini saya membuat sesuai nama saya, erawanarifn :
1 2 3 4 |
#Â ./build-key erawanarifn # ./build-key client1 # ./build-key client2 # ./build-key namauser |
Membuat konfigurasi port forwarding ke IP VPS :
1 2 3 |
# 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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 :
1 2 3 4 5 6 |
# 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 :
1 |
# chkconfig openvpn on |
Menjalankan OpenVPN sebagai service :
1 |
# 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 :
1 |
C:/Program Files/OpenVPN/config/Openvpn.ovpn |
1 2 3 4 5 6 7 8 9 10 11 12 |
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
“maka semua koneksi internet akan dilewatkan melalui VPS”
maksudnya gimana ya mas? 😀
thanks artikelnya 🙂
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… 🙂
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 😉
Wah…
Terima kasih nih untuk informasinya Pak.
Saya akan coba di VPS saya nanti. 🙂
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?
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 :
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.
saya melihat ada settingan :
cert erawanarifn.crt
key erawanarifn.key
ini cara buatnya gmn ya?kok punya saya tidak ditemukan,apakah saya melewatkan sesuatu?
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 :
mas saya juga rencana mau pakai 123system
kira-kira kalau buat vpn /tunnelling cepat tidak ya??rencana mau pakai paket yg 192mb ($15)
Kalau cepet, 123System cepet mas 🙂
Cuman masalahnya ada di server mereka. Kadang-kadang mereka suka reboot sendiri
mas saya pengen lebih belajar banyak mengenai server,boleh minta kontaknya?
Mari sama-sama belajar Pak 🙂
Kontak via email, bisa ke :
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)
hehehe…
Nggak apa-apa mas 😀
Soalnya informasi kontak, juga bisa dilihat dari WHOIS website saya 🙂
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 😀
Config yang mana yang dimaksud mas? Kurang begitu paham, hehe..
Kalau yang dimaksud :
Kemungkinan OpenVPN atau program yang lain sudah ada yang mempergunakan port 443.
Coba direstart OpenVPNnya :
sya udh brhasil buat koneksi vpnnya mas,, tpi kok malah gk bisa koneksi ke internet yaa?
mhon petunjuk’a,, thanks..
Kemungkinan besar karena port forwardingnya belum disetting 🙂
Silakan dicoba dijalankan perintah berikut ini :
Setelah OpenVPN di Server / VPS direstart, coba disconnect OpenVPN Client yang ada di Computer / Laptop kita. Lalu dicoba connect lagi / Reconnect.
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??
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.
ssnya pak:
http://i.imgur.com/mBfoY.png
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.,,
🙂
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.
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]#
Coba begini mas :
Muncul errornya apa ya? Apakah vpsnya support tun/tap? Coba diperiksa pakai perintah ini :
Apakah muncul seperti di atas?
kalau muncul eror seperti yang diatas gmn mas solusinya?
Maksudnya tun/tap tidak ada mas?
Coba dienable dulu tun/tap dari SolusVM, tunggu sebentar, vps akan reboot, setelah itu coba perintah ini :
Ada muncul list tun nggak? Kadang tun/tap didisable sama providernya, jadi harus minta bantu ke provider juga.
nice tutor pak
tapi kurang jelas tuh pak tutorialnya -_-
Kurang jelasnya di bagian mana ya mas? Nanti coba ditambahi 🙂
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
Sore mas, barangkali beda OS, beda lokasinya ya 🙂
Coba buka /usr/share/doc, ada direktory openvpn ga? Kalau ada, coba dibuka satu persatu direktorynya 🙂
OpenVPNnya sudah diinstal belum ya?
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 ….
Coba paste errornya seperti apa mas.
Apakah ini OpenVZ ataukah Xen/KVM? Kalau OpenVZ, apakah sudah dienable module tun/tapnya?