OpenVPN ini akan mempunyai beberapa spesifikasi yaitu:
Menggunakan 2 jalur untuk konek; UDP port 1194 yg merupakan port default OpenVPN dan jalur TCP port 443 (sebagai alternatif untuk client saat konek. Jika port 443 udah terpakai misal untuk ssh tunnel maka anda harus pake port lain misal 465, dll)
- User yg konek harus memiliki file2 untuk konek yaitu ca.crt dan file config .ovpn. Setelah ada file tsb user akan konek dg autentikasi username+password.
VPS yg saya gunakan untuk percobaan ini adalah VPS dg OS Debian 7 x86 (atau 32 bit), virtualisasinya adalah OpenVZ. Tentu saja anda bisa pake VPS lainnya misal dari DigitalOcean tetapi akan ada perbedaan kecil dalam proses nantinya.
Syarat OpenVPN bisa diinstal adalah bahwa interface tun/tap sudah ready. Hal ini bisa dicek dengan membaca mantra
dan jika aktif maka outputnya adalah:
Jika tidak ada kalimat tsb artinya belum bisa diinstal OpenVPN, silahkan enable dulu via panel atau kalo bingung kontak host owner untuk meng-enable tun/tap device. Saya asumsikan anda udah login ke console sebagai root. Let’s start!
cat /dev/net/tun
, dan jika aktif maka outputnya adalah:
cat: /dev/net/tun: File descriptor in bad state
. Jika tidak ada kalimat tsb artinya belum bisa diinstal OpenVPN, silahkan enable dulu via panel atau kalo bingung kontak host owner untuk meng-enable tun/tap device. Saya asumsikan anda udah login ke console sebagai root. Let’s start!
- Update dulu
apt-get update
tunggu beberapa detik hingga rampung - Instal paket OpenVPN
apt-get install openvpn
- OpenVPN telah memudahkan proses instalasi dengan menyediakan banyak helper script, kita copy saja file tsb ke dir OpenVPN
cp -a /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/
- Buatlah certificate, pindah dulu ke dir berikut
cd /etc/openvpn/easy-rsa/2.0
- Jalankan:
source ./vars
- Jalankan:
./clean-all
- Jalankan:
./build-ca
- Nah akan muncul isian yg dimulai dengan nama negara atau Country Name. Pada tahap ini saya ga pernah isi/edit apapun. Enter saja sebanyak 7 kali untuk 7 pertanyaan yg muncul (terakhir adalah Email Address), ini tidak pengaruh apa2
- Sekarang buatlah Diffie Hellman parameter
./build-dh
- Generate certificate untuk servernya
./build-key-server server01
- Kali ini anda akan diinterogasi 10 pertanyaan, disini saya juga ga isi apa2 alias enter2 saja. Hati2 pencet enter jangan ngebut2 karena nanti ada dialog apakah anda ingin sign the certificate? anda harus pilih dengan pencet y
1 out of 1 certificate requests certified, commit? [y/n]
Pilih y lagi pada dialog ini- Untuk menghindari UDP flood dan serangan DDoS maka jalankan:
openvpn --genkey --secret keys/ta.key
- Sekarang buatlah server config. Seperti tadi saya bilang bahwa nanti user bisa konek via UDP dan TCP maka disini kita akan buat 2 config. Pertama yg UDP dulu nih.
cd /etc/openvpn
- Instal Vim server
apt-get install vim - Buat file
vim server.conf
- Isikan dengan parameter berikut ini dengan menekan tombol i:
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server01.crt
key keys/server01.key
dh keys/dh1024.pem
plugin /usr/lib/openvpn/openvpn-auth-pam.so login
client-cert-not-required
username-as-common-name
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 4.2.2.1"
push "dhcp-option DNS 4.2.2.2"
keepalive 5 30
comp-lzo
persist-key
persist-tun
status server-tcp.log
verb 3 - Save+close file tsb dengan menekan tombol [esc] kemudian ketik :wq enter
- Buat config untuk koneksi jalur TCP:
vim server-tcp.conf
- Isikan parameter berikut ini:
port 465
proto tcp
dev tun
ca keys/ca.crt
cert keys/server01.crt
key keys/server01.key
dh keys/dh1024.pem
plugin /usr/lib/openvpn/openvpn-auth-pam.so login
client-cert-not-required
username-as-common-name
server 10.9.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 4.2.2.1"
push "dhcp-option DNS 8.8.8.8"
keepalive 5 30
comp-lzo
persist-key
persist-tun
status server-tcp.log
verb 3 - Copy certificates dan keys, buat dulu direktorinya
mkdir /etc/openvpn/keys
- Copy semuanya
cp /etc/openvpn/easy-rsa/2.0/keys/{ca.crt,server01.crt,server01.key,dh1024.pem,ta.key} /etc/openvpn/keys/
- Konfigurasi UDP dan TCP untuk server udah kelar, sekarang edit supaya config tsb terbaca ketika OpenVPN nanti dijalankan.
vim /etc/default/openvpn
- Pada entri
#AUTOSTART="all"
hilangkan tanda pagar # didepannya sehingga menjadiAUTOSTART="all"
. Save dan close kembali file tsb dengan menekan tombol :wq enter. - Restart OpenVPN
/etc/init.d/openvpn restart
.
Hasilnya harus ada 2 [OK] sebagai bukti bahwa config UDP dan TCP sudah running
- Pastikan ada 2 instances OpenVPN running di server, jalankan
lsof -i |grep openvpn
- Ada UDP dan TCP kan? Artinya udah betul. Pada TCP terlihat ssmtp yg running, itu karena saya tadi pake port 465 di config TCP-nya. Jika anda pake 443 maka akan tertera disitu sebagai https
- Enable forwarding di VPS agar user bisa browsing, kan seru tuh user udah gembira konek tapi ga bisa browsing hehehe. Buatlah file
vim /etc/sysctl.d/forwarding.conf
dan isikan dengan mantra pendeknet.ipv4.ip_forward=1
- Save+close kemudian jalankan
sysctl -p /etc/sysctl.d/forwarding.conf
dan outputnya adalah mantra yg ada di step 28 tsb - Seting iptables untuk jalur UDP
iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE - Seting iptables untuk jalur TCP
iptables -t nat -I POSTROUTING -s 10.9.0.0/24 -o eth0 -j MASQUERADE - Masih di dalam folder /etc/openvpn buatlah direktori
mkdir clientconfig
- Copy-kan ca.crt dan ta.key yg tadi kita buat ke dir tsb. Ini akan dibutuhkan client sbg syarat konek
cp /etc/openvpn/easy-rsa/2.0/keys/{ca.crt,ta.key} clientconfig
/ - Buatlah file dengan ekstensi .ovpn. Karena OpenVPN ini menyediakan 2 jalur koneksi UDP dan TCP, maka untuk client kita akan beri 2 config. Pertama saya beri nama HANTU-UDP.ovpn. Pindah dulu ke
cd clientconfig
kemudian
vim Private-UDP.ovpn
- Isikan mantra ini:
client
dev tun
proto udp
remote 128.199.359.77 1194
resolv-retry infinite
route-method exe
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
auth-user-pass
comp-lzo
verb 3 - Lihat ip yg saya ketik bold diatas, pada VPS anda ganti dengan ip VPS anda sendiri!
- Trus sekarang bikin config client yg TCP,
vim Private-TCP.ovpn
- Isikan dengan mantra:
client
dev tun
proto tcp
remote 128.199.359.77 465
resolv-retry infinite
route-method exe
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
auth-user-pass
comp-lzo
verb 3 - Sekali lagi ganti ip yg bold tsb dg ip VPS anda sendiri, disampingnya adalah port TCP yg dipake. Kalo bukan pake 465 maka sesuaikan saja ya
- OPTIONAL: Anda juga bisa pake domain untuk menggantikan ip tsb, dengan catatan anda sudah membuat domain atau subdomain pointing ke ip server
- OPTIONAL: Jika ingin konek via proxy maka pada config ovpn tsb bisa anda tambahkan
http-proxy x.x.x.x
dan
http-proxy-retry
- Jika sudah, cek dengan command
ls -al
di dalam dir clientconfig dan anda harus melihat 4 buah file yaitu:
Private-UDP.ovpn,
Private-TCP.ovpn,
ca.crt, dan
ta.key - OPTIONAL: file config ovpn tsb bisa juga langsung digabung dengan ca.crt, biasanya config semacam ini digunakan oleh pengguna device mobile semacam Android atau iPhone. Bagaimana caranya? Simple saja kok, jalankan saja cat ca.crt dan setelah certificate tsb nongol di layar, copy saja kemudian edit kembali file ovpn, delete baris ca.crt dan tambahkan code certificate di bahwanya dengan contoh format seperti ini:
- Untuk memudahkan distribusi file tsb kepada para calon user maka archive-lah menjadi zip file. Jalankan zip dan jika malah command not found maka instal dahulu
apt-get install zip
- Terus Jalankan
zip VPN.zip *
- Jalankan Bitvise SSH tunnelier
- Login harus sebagai root (wajib)
- Klik “New SFTP Window”
- Sebuah jendela explorer akan nongol. Sebelah kiri adalah PC anda (Local Files) dan sebelah kanan adalah isi dari VPS anda (Remote Files). Silahkan tuju ke Remote Files di sebelah kanan. Pada tombol navigasi klik up sekali untuk masuk ke dir
/
sehingga tampaklah direktori2 linux VPS anda - Dobel klik pada direktori etc. Ingat kan, sebelumnya kita sudah membuat config untuk user yg sudah di-zip di dalam /etc/openvpn/clientconfig. Maka setelah masuk ke dir /etc dobel klik openvpn dan dobel klik dir clientconfig untuk membuka dir tsb
- Terlihat di dalamnya ada VPN.zip yg sudah kita buat pada tahap sebelumnya. Download file ini ke PC anda dengan cara klik kanan > Download atau cukup drag and drop saja ke jendela Local Files yg ada disebelah kiri.
- Setelah ter-download pastikan isi dari VPN.zip adalah 4 buah file yg sudah kita buat tadi
- Ekstrak VPN.zip ke lokasi sementara, misalnya di DesktopTU TCP atau nama folder sesuka anda
- Silahkan Edit config Sesuai Kebutuhan Kalian
- Selamat menikmati koneksi OpenVPN yg sudah anda setting.
*jeleknya tuh kadang Debian me-reset iptables setelah VPS restart, alias musnahlah settingan iptables yg kita jalankan tadi. Untuk menghindari hal tsb, maka jalankan tutorial ini agar iptables tersimpan dengan Baik di VPS.
boss tutorialnya bagus dan berguna cuma itu ada salah nulis no 30 dan 31 , harus di ubah dari iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
ReplyDeletemendajadi : iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o etho -j MASQUERADE
soalnya ga ada eth0 , yang ada etho , percuma panjang lebar ingkutin , tapi hasilnya ga sempurna ga akan nyambung ke server di ping ga akan jalan
tapi disini paling bagus tutorialnya ...