Kali ini saya akan berbagi pengetahuan mengenai cara install openvpn pada linux centos 5 atau 6. Tutorial ini sudah saya terapkan di server saya dan berjalan dengan lancar tidak ada kendala sama sekali. Untuk lebih mudahnya dalam instalasi dan setting kami sarankan anda paham dengan system operasi linux, minimal tau command-command dasar linux. Berikut step by step nya :
Langkah awal pastikan dev tun anda aktif.
cat /dev/net/tun
Jika terdapat pesan seperti dibawah ini maka dapat di pastikan dev tun anda aktif.
cat: /dev/net/tun: File descriptor in bad state
Install packet dasar dulu bro.
yum install gcc make rpm-build autoconf.noarch zlib-devel pam-devel openssl-devel -y
Download LZO RPM dan Configure RPMForge Repo:
wget http://openvpn.net/release/lzo-1.08-4.rf.src.rpm
Paket 32bit :
CentOS 5:
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
CentOS 6:
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
Paket 64bit :
CentOS 5:
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
CentOS 6:
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Build paket RMP nya:
rpmbuild --rebuild lzo-1.08-4.rf.src.rpm
rpm -Uvh lzo-*.rpm
rpm -Uvh rpmforge-release*
Install OpenVPN:
yum install openvpn -y
Copy file easy-rsa ke folder /etc/openvpn/:
cp -R /usr/share/doc/openvpn-2.2.2/easy-rsa/ /etc/openvpn/
**CATATAB** bila terjadi error seperti berikut
cannot stat `/usr/share/doc/openvpn-2.2.2/easy-rsa/’: No such file or directory
silahkan di cari sendiri folder easy-rsa nya, biasanya di directory /usr/share/doc/openvpn
atau anda bisa juga mendownload file tersebut di:
wget https://github.com/downloads/OpenVPN/easy-rsa/easy-rsa-2.2.0_master.tar.gz
Extract the package:
tar -zxvf easy-rsa-2.2.0_master.tar.gz
Copy to OpenVPN directory:
cp -R easy-rsa-2.2.0_master/easy-rsa/ /etc/openvpn/
Untuk
CentOS 6 ada sedikit modifikasi di file
/etc/openvpn/easy-rsa/2.0/vars edit di bagian:
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
Menjadi :
export KEY_CONFIG=/etc/openvpn/easy-rsa/2.0/openssl-1.0.0.cnf
Lalu save.
Sekarang saatnya membuat certifikasi :
cd /etc/openvpn/easy-rsa/2.0
chmod 755 *
source ./vars
./vars
./clean-all
Build CA:
./build-ca
Country Name: silahkan di isi atau tekan enter saja
State or Province Name: silahkan di isi atau tekan enter saja
City: silahkan di isi atau tekan enter saja
Org Name: silahkan di isi atau tekan enter saja
Org Unit Name: silahkan di isi atau tekan enter saja
Common Name: server hostname
Email Address: silahkan di isi atau tekan enter saja
Build key server:
./build-key-server server
hampir sama dengan build ca cuman ada perbedaan sedikit
Common Name: server
A challenge password: abaikan saja (kosongin)
Optional company name: silahkan di isi atau langsung tekan enter
sign the certificate: y
1 out of 1 certificate requests: y
Build Diffie Hellman (tunggu sampe proses selesai):
./build-dh
Sekarang bikin config file :
touch /etc/openvpn/server.conf
Isi sebagai berikut di file server.conf:
port 1194 #- silahkan di ganti sesuai selera
proto udp #- untuk gretonger pake port tcp
dev tun #- bisa tun atau tab
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
reneg-sec 0
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so /etc/pam.d/login
client-cert-not-required
username-as-common-name
server 10.10.10.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 5 30
comp-lzo
persist-key
persist-tun
status 1194.log
verb 3
Lalu save.
Sebelum menjalankan openvpn kita disable dulu SELinux karena sering bermasalah dengan openvpn jika menggunakan multipe config:
echo 0 > /selinux/enforce
Cara di atas hanya temporary disable SELinux na, ketika reboot harus set ulang. Untuk membikin otomatis maka perlu kita edit di file
/etc/selinux/config :
SELINUX=enforcing
Menjadi :
SELINUX=disabled
Ketika sistem reboot maka SELinux otomatis susah ke disable.
Now lets start OpenVPN:
service openvpn restart
silahkan cek dulu di
/var/log/messages jika terdapat error seperti ini:
PLUGIN_INIT: could not load plugin shared object /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so: /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so: cannot open shared object file: No such file or directory
Then this is because the latest OpenVPN package doesn’t include this
file (which is reported to be fixed soon) silahkan donwload pam file berikut:
wget http://safesrv.net/public/openvpn-auth-pam.zip
lalu extrax :
unzip openvpn-auth-pam.zip
Pindahkan ke OpenVPN directory:
mv openvpn-auth-pam.so /etc/openvpn/openvpn-auth-pam.so
Sesuaikan setingan di server.conf menjadi seperti ini:
plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/login
Restart OpenVPN dan mudah-mudahan berjalan lancar :
killall -9 openvpn
service openvpn restart
Openvpn server sudah selesai instalasi tapi perlu kita tambahin iptables supaya dapat kita akses dari luar:
Enable IP forwarding. Edit file
/etc/sysctl.conf and set ‘net.ipv4.ip_forward’ menjadi 1.
net.ipv4.ip_forward = 1
Ketik berikut untuk update :
sysctl -p
Route Iptables:
Rule berikut untuk vps baik itu xen dan KVM based VPS’s:
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
OpenVZ iptable rules:
iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to-source 123.123.123.123
And
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j SNAT --to-source 123.123.123.123
dalam hal ini ip public saya misal 123.123.123.123 (silahkan di ganti menurut server anda).
Jika menggunakan CSF di server OpenVPN anda untuk membuka port
(contoh port vpn saya 1194) lewat firewall silahkan tambahin di file
/etc/csf/csfpre.sh.
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.10.10.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -j SNAT --to-source 123.123.123.123
Atau anda juga bisa mencoba menggunakan rule beritu :
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
IP 123.123.123.123 hanya sebagai contoh, silahkan ganti sesuai ip public server anda.