Isnin, 4 Julai 2011

Pasang Sendiri OpenVPN: Persediaan Pelayan (kemaskini 2015-06-27)

Salam sejahtera pengunjung budiman,

Dalam Bahagian 1, saya telah membincangkan mengenai definisi dan penjelasan mengenai apa itu VPN secara ringkas. Kali ini saya akan membawa anda ke penyediaan pelayan OpenVPN anda sendiri.

Tutorial kali ini akan menumpukan kepada penyediaan pelayan OpenVPN sebagai terowong (tunnel) yang membolehkan anda melepasi sekatan dan juga menegelakkan transaksi Internet anda dihidu (sniff) oleh orang lain.


Panduan membeli pelayan (server)

Mungkin anda tertanya-tanya bagaimana untuk membeli Virtual Private Server(VPS) ataupun Dedicated Server. Saya akan beri sedikit tips sekadar yang saya tahu untuk kegunaan OpenVPN.

  • Pastikan dalam terma dan syarat (ToS) pembekal VPS anda memberi kebenaran untuk memasang VPN.
  • Pastikan TUN/TAP enabled pada VPS anda. Boleh hubungi Support Ticket pembekal anda untuk maklumat lanjut.
  • Kalau VPS anda berasaskan OpenVZ, minta hosting anda untuk menghidupkan "iptables_nat" pada VPS/container anda.
  • Pastikan harga mengikut bajet poket anda
  • Mahukan cadangan saya? Kalau jenis bajet rendah macam saya, dahulu saya beli dari BudgetVM. Sekarang saya beli dedicated server dari Online.net.
  • Tambahan info: Pastikan waktu pelayan anda dan waktu komputer anda diselaraskan dengan pelayan waktu(time server) seperti time.nasa.gov Anda boleh gunakan arahan
    sudo ntpdate time.nasa.gov
    di komputer anda dan meminta penyedia perkhidmatan pelayan anda untuk menyelaraskan waktu di server anda juga.
Selepas membeli VPS/Dedicated server anda sendiri. Seterusnya, kita perlu memasang sistem pengendali (OS) di server.Saya memilih Ubuntu 14.04 LTS Server Edition untuk sistem pengendali pelayan (server) saya. Tutorial ini akan fokus kepada pemasangan openvpn server di Ubuntu 14.04 LTS Server Edition.

Pemasangan OpenVPN

Periksa dulu sama ada TUN/TAP sudah diupayakan (enabled) atau belum dengan arahan (command).
cat /dev/net/tun  
Anda sepatutnya akan mendapat keputusan seperti ini.
cat: /dev/net/tun: File descriptor in bad state
Jikalau anda mendapat ralat (error) seperti ini.
 cat: /dev/net/tun: No such device
Anda perlu menghubungi pembekal VPS anda untuk mengupayakan (enable) TUN/TAP di VPS anda.

Sekarang bolehlah kita teruskan dengan memasang openvpn,openssl,dnsmasq, dan juga iptables-persistent
di pelayan.

sudo apt-get install openvpn openssl iptables-persistent
Selepas melaksanakan arahan di atas.

Laksanakan arahan berikut untuk menduplikasi sample config openvpn ke direktori /etc/openvpn/easy-rsa


sudo mkdir /etc/openvpn/easy-rsa

cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/

sudo cp -R * /etc/openvpn/easy-rsa

cd /etc/openvpn/easy-rsa
UPDATE 2013-04-07: sample easy-rsa pada  pakej asal Ubuntu sekarang mengalami masalah. Sila ikuti langkah berikut sebagai ganti.

Laksanakan arahan berikut untuk gunakan sample easy-rsa dari github OpenVPN

sudo mkdir /etc/openvpn/easy-rsa
wget -c https://github.com/OpenVPN/easy-rsa/archive/master.zip
unzip master.zip
sudo cp -R easy-rsa-master/easy-rsa/2.0/* /etc/openvpn/easy-rsa
# UPDATE 2014-01-22 , versi baru sudah tiada perbezaan 2.0 dengan 3.0

sudo cp -R easy-rsa-master/easy-rsa/* /etc/openvpn/easy-rsa
 
cd /etc/openvpn/easy-rsa


Sekarang kita akan edit fail vars menggunakan nano.

sudo nano vars
Contoh sample fail vars

Link: http://pastebin.com/CE7s1kn4

sudah edit? Bagus.

Sekarang kita copy config openssl dengan arahan berikut mengikut versi openssl distro yang kita gunakan. Untuk server saya, saya guna openssl 1.X

sudo cp openssl-1.0.0.cnf openssl.cnf
Sekarang, kita jalankan arahan berikut:

source ./vars
sudo ./clean-all

Seterusnya kita bina CA.

sudo ./build-ca

Link: http://pastebin.com/9sS7YzF9
Kalau anda perasan, default value adalah yang anda set di fail vars.cuma perlu tekan enter je dan untuk yang default value 'changeme' setkan kepada '.' (tanpa pembuka/penutup kata). Tak naktukar pun tak jadi masalah besar.

Sekarang, kita bina sijil (certificate) untuk pelayan openvpn kita.

sudo ./build-key-server server Link: http://pastebin.com/Enc9rb1u

Sekarang kita bina Diffie-Helman

 sudo ./build-dh

Link: http://pastebin.com/6PShAG8t
Okay, sekarang kita akan sunting config untuk server

cd /usr/share/doc/openvpn/examples/sample-config-files/
cp server.conf.gz /etc/openvpn/
cd /etc/openvpn/
gzip -d server.conf.gz
nano server.conf

Contoh server.conf: http://pastebin.com/0C018VcT

Saya akan menerangkan serba sedikit mengenai tetapan di dalam serv.conf ini.
Berikut adalah lokasi fail2 yang diperlukan iaitu CA, cert, key dan diffie-helman.
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem


Berikut adalah port dan protokol yang akan digunakan oleh OpenVPN server. Dalam config contoh untuk tutorial ini saya gunakan UDP/53.

# open up this port on your firewall.
port 53
# TCP or UDP server?
;proto tcp
proto udp
Sekarang masa untuk kita menjalankan service  openvpn dengan menaip arahan berikut:
service openvpn start server
Setkan port forwarding

sudo sysctl -w net.ipv4.ip_forward=1
 
Sudah selesai langkah di atas, kita kena config iptables pula.

Simpan script ini sebagai iptables.ipt di folder /etc/openvpn Link: 

http://pastebin.com/v81NYU5j

Pastikan anda tukar nombor IP pada fail tersebut kepada IP server anda.

Selepas anda simpan fail tersebut, jalankan arahan berikut:

sudo iptables-restore < iptables.ipt 
UPDATE 2013-04-07: Skrip di atas bermasalah bila saya cuba untuk pasang openvpn di server sahabat saya. Kita buat konfigurasi iptables secara manual seperti berikut:

sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source 999.888.777.666
Sila tukarkan 999.888.777.666 kepada IP server anda.

Selesai sudah persiapan dan konfigurasi pelayan.

Konfigurasi untuk pelanggan (client) akan bersambung ke pos baru bertajuk "Pasang Sendiri OpenVPN: Persediaan Pelanggan"

Rujukan:

 OpenVPN server ubuntu guide

 IPTables HowTo - Community Ubuntu Documentation

OpenVPN on Ubuntu 10.04 LTS - Ubuntu Help 
 
openvpn setup guide by dimenxion for Debian 6.x




    2 ulasan:

    Areyoudys berkata...

    as salam..
    info yang menarik.boleh buat tutorial untuk membangunkan applikasi java untuk mobile?
    p/s: saya perasan link blog saudara pada beg.perjalanan dalam ktm,bertarikh 29.11.10/3 Muharram.

    Rembulan NagaGala berkata...

    waalaikumussalam,
    kenapa tak tegur je saya tadi? :D


    Saya sendiri tak biasa dengan Java Micro Edition. macam mana nak buat tutorial untuk java mobile :)

    Insya-Allah kalau berkesempatan untuk explore java micro edition sdk nanti, akan dipos di blog ini.

    carian google