Choose Your Language

19 September 2010

Cara membuat koneksi VPN dari kantor pusat (HO) ke cabang (Branch) dengan menggunakan OpenVPN Linux Ubuntu

Topology Jaringan OpenVPN


Kali ini kita akan membahas cara membuat koneksi VPN dari kantor pusat (Head Office) ke cabang (Branch) dan rumah dengan menggunakan OpenVPN Linux Ubuntu. Sebagai koneksi internetnya saya menggunakan speedy paket game 1 MB karena memiliki ip address static (tidak berubah-rubah). Untuk membuatnya kita memerlukan 2 buah pc sebagai server di kantor pusat dan klien di kantor cabang. PC di HO dan cabang tersebut memerlukan 2 buah NIC (kartu jaringan) karena fungsinya meneruskan paket dari network yang berbeda ke LAN kita/cabang atau dengan kata lain mirip dengan firewall yang mempunyai 2 buah NIC pula.

Pertama-tama kita harus enable IP Forwarding:
nano /etc/sysctl.conf

hilangkan tanda # di net.ipv4.ip_forward = 1
net.ipv4.ip_forward = 1
 
# Konfigurasi Server OpenVPN

1.Install OS Ubuntu pada PC di PC Kantor Pusat. Saya memakai Ubuntu 9.04 Jaunty sebagai servernya. (Pada saat saya implementasi menggunakan Ubuntu 9.04 Jaunty saya pernah 2x mengalami masalah, setelah diselidiki ternyata device TAP yang ada hilang. Untuk itu saya menggantinya dengan Ubuntu Server 10 non GUI, masalah selesai)

2.Tentukan IP address untuk NIC LAN misal 10.10.10.250 dan tentukan IP address untuk NIC WAN misal 192.168.1.2 dengan cara masuk ke menu System-Preferences-Network Connections atau dengan merubahnya dengan perintah nano /etc/network/interfaces. Sedangkan di modem speedy nya kita telah mengeset LAN IP  Addressnya menjadi 192.168.1.1. Untuk IP Address modem speedy biarkan apa adanya karena yg kita perlukan hanya mengubah LAN IP Adress saja di modem tersebut.



3.Tambahkan ip address 192.168.1.2 dan mac addressnya sebagai IP client di modem speedy kita.

4.Install openvpn dengan perintah sudo apt-get install openvpn

5.Rubah konfigurasi file vars dengan perintah nano /usr/share/doc/openvpn/examples/easy-rsa/2.0/vars
   yang dirubah di file tersebut cukup pada bagian ini saja, biarkan setting lainnya pada keadaan default:
   export KEY_COUNTRY=”ID
   export KEY_PROVINCE=”JKT
   export KEY_CITY=”JAKSEL
   export KEY_ORG=”SCD
   export KEY_EMAIL=”indra_pd@yahoo.com“ 

6. Masih di folder /usr/share/doc/openvpn/examples/easy-rsa/2.0/ masukkan perintah source ./vars 
    (perintah ini maksudnya untuk menggunakan file vars sebagai default variabel untuk proses selanjutnya)

7. Hapus seluruh konfigurasi dan key yang ada dengan perintah: ./clean-all
    Perintah ./clean-all ini sama dengan perintah rm -rf /etc/openvpn/easy-rsa/2.0/keys
    Catatan : Hati-hati dengan perintah ./clean-all ini karena akan menghapus semua keys yg ada    sebelumnya

8.  Membuat Certificate Authority (CA) dengan perintah ./build-ca

     Ada 4 file yang terbentuk setelah proses ini yaitu:
     1. ca.crt
     2. ca.key
     3. index.txt
     4. serial

    Hilangnya salah satu file tersebut diatas dapat mengakibatkan error pada saat kita membuat key client
  
9. Membuat key untuk server openvpn dengan perintah :
   

    ./build-key-server server 

10. Membuat key untuk client openvpn dengan perintah :
    ./build-key bandung      (buat key untuk kantor cabang Bandung)
    ./build-key managerIT (buat key untuk manager IT yang ingin mengakses pc di kantor dari rumah/jalan)

 11. Membuat Diffie-Hellman key (dh-key) dengan perintah : ./build-dh

12. Meng-copy seluruh key yang ada folder keys (didalam folder 2.0) yang telah dihasilkan ke  folder   etc/openvpn dengan perintah: cp -fR keys/* /etc/openvpn/keys/ 
 
13. Meng-copy file server.conf.gz didalam folder ke dalam folder /etc/openvpn dengan perintah :
     cd /usr/share/doc/openvpn/examples/sample-config-files 
     cp server.conf.gz /etc/openvpn

14. Masuk ke folder /etc/openvpn dan extract file server.conf.gz dengan perintah:
     cd /etc/openvpn
     gunzip server.conf.gz
    
15. Edit konfigurasi file server.conf dengan perintah : nano server.conf

      port 1194
      proto udp
      dev tap0
      ca keys/ca.crt
      cert keys/server.crt
      key keys/server.key
      dh keys/dh1024.pem
      server 10.8.0.0 255.255.255.0
      #untuk menanyakan username dan password ketika login
      #username dan password dibuat dengan menggunakan perintah sudo adduser 
      plugin /usr/lib/openvpn/openvpn-auth-pam.so /etc/pam.d/login
      #reneg-sec 720 berarti untuk 24 jam
      reneg-sec 720
      ifconfig-pool-persist ipp.txt
     #push route agar client dapat mencapai network di belakang server openvpn 
      push "route 10.10.10.0 255.255.255.0"
      client-to-client
      keepalive 10120
      comp-lzo
      max-client 100
      user nobody
      grup nobody
      persist-key
      persist-tun
      status /var/log/openvpn-status.log
      log-append /var/log/openvpn.log
      verb 4
      mute 20

# Konfigurasi Di Client (Windows XP, Vista, 7)

   1. Download OpenVPN GUI (openvpn 2.1.4) dari http://openvpn.net/index.php/open-source/downloads.html dan kemudian install.

   2. Copy file managerIT.key, managerIT.crt, dan ca.crt yang ada di server openvpn ke C:\Program Files\OpenVpn\Config\Keys (kalau belum ada folder keys buat dulu)

  3. Edit file client.ovpn di dalam folder c:\Program Files\Openvpn\config\ dengan isi sebagai berikut:

      client
      dev tap
      proto udp
      remote (isi dengan ip address speedy server openvpn anda tanpa tanda kurung) 1194
      resolv-retry infinite
      nobind
      persist-key
      persist-tun
      #Pada saat koneksi ke server, akan muncul tampilan username dan password yg terdaftar di server 
      auth-user-pass
      ca  keys/ca.crt
      cert  keys/managerIT.crt
      key  keys/managerIT.key
      comp-lzo
      verb 3 
ns-cert-type server
auth-nocache


 4. klik kanan di icon openvpn (di pojok kanan bawah) kemudian connect
      jika sudah terkoneksi maka gambar network openvpn akan berwarna hijau



  5. pada pc di rumah : masuk ke start - run - ketik cmd - enter. Ketik route add (masukkan network LAN kantor anda dan network masknya) 10.8.0.1. Misal route add 10.10.10.0 mask 255.255.255.0 10.8.0.1
Yang berarti tambahkan network 10.10.10.0 dengan netmask 255.255.255.0 melalui ip address 10.8.0.1

 6. Buat TAP-Win32 adapter caranya Start - All Programs - OpenVPN - Add a new TAP-Win32 virtual ethernet adapter.

 7. PC di kantor (PC IT Manager) juga harus dibuat routing ke server openvpn :
     route add 10.8.0.0 mask 255.255.0.0 (isi dengan nic di openvpn server yang konek ke LAN kita)
     misal: route add 10.8.0.0 mask 255.255.0.0 10.10.10.250.
     Atau bisa juga menambahkan routingnya di router yang berfungsi sbg default gateway di kantor.

8 Gunakan perintah ping dan tracert untuk troubleshooting koneksi openvpn.

Tips: Jika anda menemukan error seperti ini pada saat klik kanan Connect "TLS key negotiation failed" maka kemungkinan hal ini dikarenakan oleh setting pada modem yang dipakai misal Aztech / TP-Link, dimana Port Forwarding (DNAT) pada modem Aztech / TP-Link untuk port 1194 (OpenVPN) tersebut belum dibuka untuk meneruskan packet data dari modem ke server OpenVPN yang berada di belakang modem. Baca disini untuk solusi modem Aztech dan TP-Link.

# Konfigurasi Di Server Client OpenVPN (Linux)

1. Install OS Ubuntu pada PC di PC Kantor Cabang. Saya memakai Ubuntu 9.04 Jaunty sebagai servernya.

2.Tentukan IP address untuk NIC LAN misal 10.20.20.250 dan tentukan IP address untuk NIC WAN misal 192.168.10.2 dengan cara masuk ke menu System-Preferences-Network Connections atau dengan merubahnya dengan perintah nano /etc/network/interfaces. Sedangkan di modem speedy nya kita telah mengeset LAN IP  Addressnya menjadi 192.168.10.1. Untuk IP Address modem speedy biarkan apa adanya karena yg kita perlukan hanya mengubah LAN IP Adress saja di modem tersebut.
    
3.Tambahkan ip address 192.168.10.2 dan mac addressnya sebagai IP client di modem speedy kita.

4.Install openvpn dengan perintah sudo apt-get install openvpn


5. Copy bandung.key, bandung.crt dan ca.crt dari server openvpn di jakarta ke folder /etc/openvpn

6. Edit konfigurasi file client.conf dengan perintah : nano client.conf

    client
    dev tap
    proto udp
    remote (isi dengan ip address speedy server openvpn anda tanpa tanda kurung) 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca keys/ca.crt
    cert keys/bandung.crt
    key keys/bandung.key
    auth-user-pass
    comp-lzo
    verb 3
    ns-cert-type server
    auth-nocache

7. Membuat koneksi ke LAN cabang Jakarta pada server openvpn cabang Bandung: 
     route add 10.10.10.250 mask 255.255.255.0 10.8.0.1
    
     Atau kalau ingin membuat semua LAN Bandung konek ke LAN Jakarta buat routing di router Bandung yang mengarah ke LAN Jakarta.

8. Gunakan perintah ping dan tracert untuk troubleshooting koneksi openvpn.

OpenVPN User Authentication


NB: Untuk menambahkan autentikasi username dan password pada saat user ingin koneksi ke HO maka dapat ditambahkan sebagai berikut:

Pada file server.conf tambahkan tulisan berikut:
plugin /usr/lib/openvpn/openvpn-auth-pam.so /etc/pam.d/login 
client-cert-not-required
username-as-common-name 
  

Pada file client.ovpn dapat ditambahkan tulisan berikut : auth-user-pass

Kemudian tambahkan user baru pada server openvpn:

adduser (misal budi)

Dan set password untuk budi dengan perintah  : passwd budi

Silahkan login dengan username budi dan password yang benar untuk koneksi dari client openvpn

-----------------------------------------------------------------------------------------------

Terima kasih untuk http://lqman.wordpress.com/2010/06/02/koneksi-vpn-dengan-openvpn/ yang telah membantu saya untuk dokumentasi koneksi openvpn ini.

Referensi lain : http://opensource.telkomspeedy.com/wiki/index.php/Instalasi_OpenVPN

7 comments:

lqman said...

trima kasih kembali bro... :D

Roi setiawan putra said...

artikelnya sangat baik.. saya pemula di vpn, pernah mencoba membuat vpn (dgn mikrotik) untuk mengakses data pembukuan di toko yg mysqlnya ditaruh di ubuntu server.

Kalau tidak keberatan, bisa memberi pencerahan gak ya mas.? Saat ini saya masih bekerja di bank. Ingin membuat VPN, agar saya bisa menggunakan AKSES INTRANET bank tempat saya bekerja, misalkan akses web BI.

Permasalahannya adalah IP intranet yang digunakan (termasuk IP gatewaynya) juga merupakan IP Publik (setelah saya trace route).

Jika modem lsg dial dari mikrotik (agar ip address bisa sy dial dari luar).. ip intranet tabrakan dengan ip dari internet (akibatnya routing dikantor kacau.. Jaringan sistem banknya dan ATM tidak bisa bekerja. (dugaan saya mungkin akibat gateway intranetnya merupakan ip publik juga).

Mohon sekali dapat memberikan pencerahan.. terima kasih sebelumnya... untuk artikel yang detail di atas, dan sangat-sangat banyak terima kasih atas pencerahannnya :-)

Indra Permata Dinda said...

Mas Roi, kalau saya boleh tahu topologinya seperti apa ya ? Saya belum kebayang network di tempat mas seperti apa. Kirim lewat japri aja, Insya Allah kalau saya bisa saya nanti saya bantu. Lewat YM saja juga boleh.

Irfan Sugianto said...

Mantep nih ttutorial nya om,,
Klo boleh kasih saran,,
pada settingan file auth.cfg itu di sesuaikan dengan kode area (Cabang)masing2,,
mestinya di setting di mikrotik aja gan, jadi user gak perlu login ulang pada saat openvpn itu running.

Thank You,
Irfan

Indra Permata Dinda said...

ane belum pernah coba gan cara itu.
Sekarang ane di IT Operation ngurusin sistem jadi ngga pegang IT Infra lagi
hiks

Asa Togarma said...

selamat sore mas
saya staff it di bimbel ini mas

kami memakai vpn juga dikantor kami mas

tapi terkadang tidak bisa tersambung mas ke ip vpn server

biar pon dari server client kita sndiri

kami memakai isp speedy mas
dan kendala kami tidak bisa tersambung ke vpn server pusat maupun server client


topologi kami

VPN Server Pusat(linux ubuntu server>====> Server Client(LINUX UBUNTU SERVER>===>>> client (WINDOWS)


JIKA KITA PING DARI CLIENT(WINDOWS) KE ALAMAT VPN SERVER CLIEANT MAKA BALASANNYA UNCREABLE
SEPERTI ITU JUGA JIKA KE SERVER PUSAT
DAN SAMA JUGA BALASAN DARI SERVER PUSAT JIKA KITA PING DARI SERVER PUSAT...


saya mohon pencerahannya mas

Asa Togarma said...

kalau bisa pencerahannya lewat gmail aja ya mas

togarma29@gmail.com

makasih dluan mas

Software
Billigt Flyg London