Jumat, 01 Februari 2013

Setup OpenVPN Server dengan Ubuntu

Sebelumnya saya sudah pernah setup VPN (Vritual Private Network) dengan protokol pptpd pada ubuntu, kali ini saya mau share dengan openvpn. Salah satu teknologi VPN yang sangat populer. Cara installnya gampang-gampang susah, tapi asal ada kemauan pasti bisa ;) Dalam tulisan kali ini untuk OpenVPN dites menggunakan client windows. Oke, pertama tama kita urus dulu servernya yang akan menjadi OpenVPN server.


Langkah pertama kita install paket openvpn (saya asumsikan repository sudah terkonfigurasi)


[spoiler intro="Command" title="Instalasi OpenVPN"]



[plain]
sudo apt-get update
sudo apt-get install openvpn
[/plain]

[/spoiler]

tunggu sampai proses installasi selesai, kemudian kita buat private key dan public key pada server. OpenVPN bekerja melalui ssl jadi kita menggunakan metode ssl certificate.


[spoiler intro="Command" title="SSL Configuration"]



[plain]
cd /etc/openvpn
sudo su
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa
nano /etc/openvpn/easy-rsa/vars
[/plain]

[/spoiler]

Lakukan editing dan sesuaikan baris-baris berikut dengan kondisi server anda, negara, provinsi, kota dll.


[spoiler intro="Editing" title="SSL Configuration"]



[plain]
export KEY_COUNTRY="ID"
export KEY_PROVINCE="JABAR"
export KEY_CITY="BANDUNG"
export KEY_ORG="PT Angin Ribut"
export KEY_EMAIL="admin@anginribut.com"
[/plain]

[/spoiler]

Setelah dikonfigurasi, simpan dan keluar dari file tersebut. Selanjutnya kita generate SSL Certificate nya:


[spoiler intro="Command" title="SSL Certificate"]



[plain]
cd /etc/openvpn/easy-rsa/
source vars
./clean-all
./build-ca
./build-key-server myservername
./build-dh
cd keys/
cp myservername.crt myservername.key ca.crt dh1024.pem /etc/openvpn/
[/plain]

[/spoiler]

Jika muncul wizzard di ikuti saja dan di sesuaikan dengan keinginan. Sampai disini konfigurasi untuk server selesai, selanjutnya kita akan coba bikin certificate untuk client pertama (client2 berikutnya cara nya sama):


[spoiler intro="Command" title="SSL Client Certificate"]



[plain]
cd /etc/openvpn/easy-rsa/
source vars
./build-key client1
[/plain]

[/spoiler]

Hasil dari perintah diatas akan membuat file certificate yang akan di distribusikan ke client. Client akan menggunakan certificate ini untuk melakukan koneksi. Copy file berikut untuk client


[spoiler intro="List" title="Client Certificate"]



[plain]
/etc/openvpn/ca.crt
/etc/openvpn/easy-rsa/keys/client1.crt
/etc/openvpn/easy-rsa/keys/client1.key
[/plain]

[/spoiler]

Selanjutnya, masih di server kita akan membuat file konfigurasi untuk openvpn


[spoiler intro="Command" title="OpenVPN Configuration"]



[plain]
nano /etc/openvpn/server.conf
[/plain]

[/spoiler]

Isikan dengan baris berikut, sesuaikan IP dan DNS sesuai dengan jaringan anda


[spoiler intro="Editing" title="OpenVPN Configuration"]



[plain]
dev tun
proto udp
port 1194
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
user nobody
group nogroup
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
client-to-client
push "redirect-gateway def1 bypass-dhcp"
#set the dns servers
push “dhcp-option DNS 8.8.8.8″
push “dhcp-option DNS 8.8.4.4″
log-append /var/log/openvpn
comp-lzo
[/plain]

[/spoiler]

Agar client dapat melakukan routing, maka tambahkan perintah berikut.


[spoiler intro="Command" title="Routing/Firewall"]



[plain]
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/8 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 ! -d 10.0.0.0/8 -o eth0 -j MASQUERADE
[/plain]

[/spoiler]

Terakhir kita start service openvpn nya dengan perintah


[spoiler intro="Command" title="Start OpenVPN"]



[plain]
sudo /etc/init.d/openvpn start
[/plain]

[/spoiler]

Selesai untuk server, untuk client agar bisa terkoneksi kita gunakan file certificate tadi dan buat sebuah file konfigurasi yang berisi


[spoiler intro="Editing" title="Client Configuration"]



[plain]
dev tun
client
proto udp
remote YOUR.VPS.IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3
[/plain]

[/spoiler]

pada openvpn client for windows, file config ini bisa dibuat dengan nama.ovpn dan ditempatkan satu folder dengan file certificate untuk client tadi. Tinggal lakukan koneksi dan selamat menikmati VPN baru ;) Semoga bermanfaat :)