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 berikutcannot 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 key server:./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 Diffie Hellman (tunggu sampe proses selesai):./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-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/enforceCara di atas hanya temporary disable SELinux na, ketika reboot harus set ulang. Untuk membikin otomatis maka perlu kita edit di file /etc/selinux/config :
Ketika sistem reboot maka SELinux otomatis susah ke disable.SELINUX=enforcing
Menjadi :SELINUX=disabled
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 :Openvpn server sudah selesai instalasi tapi perlu kita tambahin iptables supaya dapat kita akses dari luar:killall -9 openvpn
service openvpn restart
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:dalam hal ini ip public saya misal 123.123.123.123 (silahkan di ganti menurut server anda).iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to-source 123.123.123.123
Andiptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j SNAT --to-source 123.123.123.123
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.