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
Software
Billigt Flyg London