Selasa, 10 Mei 2011

Open VPN Fundamental

Tulisan ini saya kutip dari Blog Hadi Yudhitia: http://hadiyudhitia.blogspot.com/2010/04/ilustrasi-vpn-anggap-network-adalah.html, sekedar untuk memudahkan belajar daripada harus browsing lagi. Terima kasih yang sebesar-besarnya kepada penulis aslinya. Semoga menjadi amal sholih bagi beliau.

Anggap network A adalah network tokoh utama dan network B adalah network departemen X. Network A ( kita asumsikan ) mempunyai lokal net ID 192.168.10.0/24 dan network B mempunyai lokal net ID 172.17.17.0/24. Komputer tokoh utama mempunyai alamat IP 10.10.10.103 untuk terhubung ke internal gateway network B dan internal gateway pada network B mempunyai alamat IP 10.10.10.104 yang terhubung dengan komputer tokoh utama. Untuk lebih memudakan pemahaman, anggap saja IP 10.10.10.103 dan 10.10.10.104 adalah alamat IP publik ( walau sebenarnya bukan ), sehingga seolah-olah komputer tokoh utama dengan internal gateway network B terhubung melalui jaringan internet.

Supaya tokoh utama bisa ‘masuk’ sebagai member network lokal B, maka sang tokoh utama perlu membuat suatu tunnel diantara posisinya dengan internal gateway network B. Tunnel inilah yang akan berkomunikasi dan menjembatani antara network A ( network lokal tokoh utama ) dan network B ( network lokal departemen X ). Fungsi tunneling inilah yang akan dilaksanakan oleh VPN. Bisa kita lihat, network tunneling antara network A dan network B hanyalah berupa network virtual ( yang tidak berwujud secara fisik dan bersifat virtual karena hanya untuk komunikasi dalam tunneling itu saja ). Disini net ID yang akan digunakan sebagai tunneling ( atau bisa kita katakan sebagai net ID virtual network yang akan dibuat oleh VPN ) adalah 10.3.0.0/24.

Sebagai informasi tambahan, internal gateway network B menggunakan sistem operasi Linux Fedora Core 6 dan PC yang digunakan oleh tokoh utama menggunakan sistem operasi Windows. Konfigurasi sistem ini tidak mutlak harus demikian dan hanya digunakan pada studi kasus ini saja. Konfigurasi pada sistem operasi lainnya bisa dibaca pada http://openvpn.net.

Nah, persiapan dan background cerita untuk kasus kali ini telah selesai dijelaskan. Kini sudah saatnya kita memasuki penerapan dan pemecahan masalah kasus ini.




Tahap pertama, yang kita butuhkan sudah jelas, yaitu melakukan instalasi VPN
1. Download source file openVPN untuk Linux Fedora Core 6 di http://openvpn.net/download.html. File ini mempunyai nama openvpn-2.0.9.tar.gz ( ketika naskah ini ditulis, rilis terakhir OpenVPN adalah versi 2.0.9 ).
2. Ekstrak source file OpenVPN ini menggunakan perintah :
# tar -zxvf openvpn-2.0.9.tar.gz

3. Masuk ke direktori hasil ekstraksi OpenVPN menggunakan perintah :
# cd openvpn-2.0.9

4. Jalankan perintah configure untuk melakukan pemeriksaan dan pengkonfigurasian installer OpenVPN sesuai dengan sistem yang Anda gunakan.
# ./configure

5. Jika ditemui kesalahan ketika menjalankan perintah configure yang disebabkan karena tidak ditemukannya modul LZO ( modul yang digunakan untuk melakukan kompresi data dalam transmisi data menggunakan OpenVPN ), ulangi proses configure dengan menambahkan opsi –disable-lzo sehingga perintahnya menjadi sebagai berikut :
# ./configure –disable-lzo

Jika Anda menggunakan opsi –disable-lzo, maka Anda tidak bisa menggunakan kemampuan kompresi LZO ketika Anda menggunakan OpenVPN nantinya. Jika Anda ingin menggunakan LZOketika menjalankan OpenVPN, Anda harus mendownload modul ini terlebih dahulu.
6. Jalankan perintah ‘make’ untuk mengkompilasi source code OpenVPN
# make

7. Jalankan perintah ‘make install’ untuk menginstalasi kode binary hasil kompilasi source code OpenVPN ke system Linux Anda.
# make install

Sampai disini tahapan instalasi OpenVPN telah selesai. Pastikan bahwa tidak ditemukan kesalahan selama proses instalasi berlangsung. Jika masih ditemui kesalahan, maka tugas Anda untuk menyelesaikan masalah-masalah tersebut, he he he

Tahap berikutnya adalah tahapan konfigurasi. Untuk melakukan konfigurasi, VPN perlu melakukan setting terhadap beberapa path variabelnya ( istilah Windows-nya environtment variable nya ). Setting ini bisa dilakukan manual atau dilakukan secara otomatis. Karena sudah tersedia mekanisme otomatisnya, kita nggak perlu susah-susah lagi melakukan setting manual. Kita cukup menjalankan file dengan nama ‘vars’. File ini berada di $direktori_ekstrak_source_openvpn/easy_rsa. Cara menjalankannya adalah sebagai berikut :
# cd easy_rsa
# . vars

Semua environment variables secara otomatis akan diset oleh OpenVPN.

Langkah berikutnya adalah membersihkan semua konfigurasi awal bawaan OpenVPN ( sebagai langkah antisipasi saja ) untuk menghindari crash dengan konfigurasi yang baru.
# ./clean-all

Tahap berikutnya adalah membuat certificate awal dari OpenVPN. Analoginya dengan ijasah SMA adalah membuat blanko ijasahnya, sehingga nantinya sertifikat tersebut bisa didelegasikan ke client yang akan menggunakan sambungan OpenVPN. Perintah ini dijalankan sebagai berikut :
# ./build-ca

Pada tahap ini, Anda bisa membiarkan semua isian dengan isian default, kecuali isian common name, ( disarankan ) isilah dengan nama server yang Anda gunakan.

Langkah berikutnya adalah membuat key untuk servernya sendiri terlebih dahulu. Sebagaimana client yang membutuhkan key untuk melakukan koneksi dengan server-nya, si server sendiri juga harus mempunyai key untuk OpenVPN nya sendiri. Untuk melakukan hal itu, perintah yang digunakan adalah :
# ./build-key-server

OpenVPN akan meng-generate key untuk server OpenVPN –nya sendiri. Sebagaimana langkah sebelumnya, isian yang lain bisa dibiarkan defalt dan isian common name diisi dengan nama server Anda.

Langkah berikutnya adalah melakukan build-dh. Perintah yang digunakan adalah sebagai berikut :
# ./build-dh

Setelah melakukan build-dh, langkah berikutnya adalah meng-generate beberapa key lainnya untuk klien. Untuk membedakan, Anda beri saja nama untuk key klien dengan nama klien. Misal saya disini ( di Unibraw ) menggunakan nama unibraw-client1
# ./build-key unibraw-client1

Anda bisa meng-generate beberapa key sesuai kebutuhan. Seperti langkah sebelumnya, common name-nya sebaiknya disamakan dengan nama clientnya ( atau disamakan dengan nama key nya ) menjadi common name : unibraw-client1.

Nah, sampai tahap ini, urusan bikin key dan tetek bengeknya udah beres. Fuuhhhh…..silahkan minum dulu dan tarik nafas panjang untuk merileks-kan pikiran Anda sesaat.

Udah…? Kalau udah, monggo dilanjutkan ke tahap konfigurasi server…

Pertama kali melakukan instalasi OpenVPN, saya juga nggak tau gimana isi konfigurasi OpenVPN tersebut. Mau nyonto siapa, juga belum ada yang punya. Syukurlah ternyata di source code OpenVPN sudah ada contoh konfigurasinya. So, tinggal di-kopi-paste, trus diutak-atik, he he he File konfigurasi ini berada pada direktori $ direktori_ekstrak_source_openvpn/sample-config-files
# cd sample-config-files

File konfigurasi server mempunyai nama server.conf. OpenVPN secara default akan mencari file ini pada direktori yang sama dengan lokasi file biner OpenVPN itu sendiri ( yang notabene berada di direktori /usr/local/sbin ). Jika Anda tidak mau susah-susah mengarahkan OpenVPN ke direktori baru ini, ya kopi aja file ini ke direktori /usr/local/sbin
# cp server.conf /usr/local/sbin
# cd /usr/local/sbin

Setelah server.conf disalin ke /usr/local/sbin, kini buka file tersebut kemudian lakukan konfigurasi untuk beberapa hal sebagai berikut :

port : 2222

Port digunakan sebagai port komunikasi OpenVPN. Anda bisa menggunakan sembarang port, asal tidak kres dengan port yang digunakan aplikasi lain dan port tersebut sudah aktif dan bisa digunakan untuk melakukan komunikasi.

proto : udp

Pengaturan ini digunakan untuk protokol komunikasinya. Secara default, OpenVPN menggunakan UDP, tapi Anda bisa saja menggunakan TCP, tergantung mana yang dibuka oleh administrator jaringan lokal Anda.

cert /usr/local/sbin/server.crt
key /usr/local/sbin/server.key

Dua isian di atas adalah isian default untuk certificate dan key nya. Namanya harus Anda sesuaikan dengan nama certificate dan key yang telah Anda buat sebelumnya. Karena sebelumnya nama certificate dan key saya samakan dengan nama server menjadi unibraw, maka di komputer saya konfigurasinya menjadi :

cert /usr/local/sbin/unibraw.crt
key /usr/local/sbin/unibraw.key

server 10.8.0.0 255.255.255.0

Isian ini digunakan sebagai NetID OpenVPN. Server OpenVPN sendiri secara otomatis akan mengambil alamat IP paling depan dari NetID ini dan semua kliennya akan diberikan IP secara dinamis berdasar range ini. Jika disesuaikan dengan kasus di awal, maka mestinya, isian disini menjadi :

server 10.3.0.0 255.255.255.0

Dan server OpenVPN secara otomatis akan mengambil IP 10.3.0.1 netmask 255.255.255.0

push “route [net_ID]“

Isian digunakan untuk melakukan routing dari jaringan lokal OpenVPN ( dalam kasus ini 10.3.0.0 ) ke jaringan tujuan ( dari kasus di awal, misal lokal NetID departemen X adalah 10.0.0.0 ), maka isian ini akan berubah menjadi :

push “route 10.0.0.0 255.255.255.0”

Sampai disini, konfigurasi sudah bisa dikatakan selesai. Konfigurasi lainnya bisa dibiarkan default dan apabila Anda pengen mencoba-cobanya sendiri, ya monggo

Sekarang, let’s try to run the OpenVPN…..

Sebelumnya jangan lupa, menyalin file ca.crt, ca.key, dh1024.pem, dan file crt serta file key untuk server ke /usr/local/sbin.

Jika sudah, coba jalankan OpenVPN dengan perintah :
# ./openvpn server.conf &

Tanda ampersand ( & ) di belakang menunjukkan kita menyuruh OpenVPN agar bekerja secara background. Jika tidak ada masalah, maka akan muncul pesan terakhir berupa pernyataan ‘Initialization sequence completed’. Jika masih ditemui kesalahan, coba lakukan pemeriksaan ulang pada konfigurasi sebelumnya.

Sampai disini, instalasi dan konfigurasi OpenVPN telah selesai. Kini tinggal sedikit sentuhan akhir supaya tunneling kita jadi lebih berdaya guna. Sentuhan akhir itu adalah pengaturan men-set PC yang digunakan untuk router dan setting NAT.

Untuk melakukan tunneling dengan lancar, kita perlu melakukan NAT terhadap network VPN-nya, jadi semua koneksi akan dianggap sebagai koneksi dari IP komputer yang ditanami OpenVPN. Karena memainkan NAT, maka komputer yang ditanani OpenVPN juga perlu diaktifkan kemampuan ‘ip_forward’ nya.
# echo 1 > /proc/sys/net/ipv4/ip_forward

Untuk menambahkan NAT ke network OpenVPN
# iptables –t nat -A POSTROUTING -s 10.3.0.0/24 -o [nama_interface_yang_digunakan_terhubung_ke_network_target] -j MASQUERADE

Untuk melakukan checking apakah setting ini sudah dikenali oleh IPTABLES, perintah yang digunakan adalah :
# iptables –t nat -L

Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all — 10.3.0.0/24 anywhere
…..

Jika sudah demikian, supaya konfigurasi bisa secara otomatis kembali di-load ketika Linux mengalami restart, tambahkan kedua perintah tadi ke dalam file /etc/rc.local

Urusan di server kini uda beres. Sekarang kita ganti berurusan dengan kliennya.

Misalkan, klien yang kita gunakan adalah Windows, maka kita tinggal mendownload OpenVPN yang versi Windows di www.openvpn.net/download.html.

Cara instalasinya cukup mudah, kita tinggal membaca sekilas panduan-panduan yang ada ketika proses instalasi. Yang pasti, jika muncul prompt mengenai instalasi divais baru bernama TAP, Anda harus memilih Yes / Continue. Divais TAP ini yang akan digunakan sebagai media komunikasi OpenVPN dengan network nyata yang ada.

Seteleh OpenVPN klien selesai diinstal, maka kita tinggal mengkopi key, crt, ca, dan contoh file konfigurasi untuk klien dari server OpenVPN tadi ( berada di direktori $ direktori_ekstrak_source_openvpn/sample-config-files. Minimal, ada 5 file yang harus Anda salin ke klien OpenVPN Windows Anda yaitu clent.conf ( disalin dari direktori $ direktori_ekstrak_source_openvpn/sample-config-files ), dan file crt, csr, dan key untuk klien dan file ca.crt. File client.conf setelah disalin ke komputer klien harus diubah menjadi client.ovpn. Masukkan kelima file tersebut dalam 1 direktori ( supaya gampang dibedakan aja, he he he ), kemudian edit file client.ovpn terutama untuk bagian-bagian berikut :

remote [alamat_IP] [port]

Maksud dari bagian tersebut adalah menanyakan IP server komputer OpenVPN ( IP real nya, dan bukan IP OpenVPN-nya, so jangan bingung lho ya ….:) ) dan port yang digunakan. Dari contoh konfigurasi yang telah dijelaskan sebelumnya, maka isiannya menjadi

remote 10.10.10.103 2222

ca [nama_file_ca.ca]
crt [nama_file_crt.crt]
key [nama_file_key.key]

Ketiga isian di atas meminta isian mengenai nama file ca, crt, dan key yang kita gunakan. Dari contoh sebelumnya, maka isian di atas akan menjadi :

ca unibraw-client1.ca
crt unibraw-client1.crt
key unibraw-client1.key

Langkah terakhir ( sebagai langkah pamungkas ) adalah menjalankan OpenVPN di klien itu sendiri. Untuk menjalankannya, klik kanan file client.ovpn kemudian pilih ‘Start OpenVPN on this config file’. OpenVPN akan membuka layar konsol, kemudian jika OpenVPN Anda sudah bisa berjalan normal, pesan terakhirnya berbunyi ‘Initialization Sequence Completed’ dan ikon divais TAP yang muncul di taskbar di sebelah jam sistem akan menjadi aktif.

Untuk testing, coba lakukan ping ke IP lain di network lokal target. Jika Anda sudah bisa mem-ping komputer di network target, berarti konfigurasi dan OpenVPN sistem Anda sudah berjalan.

0 komentar:

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Hosted Desktop