Difference between revisions of "OpenVPN: Instalasi di Ubuntu 16.04"

From OnnoWiki
Jump to navigation Jump to search
 
(47 intermediate revisions by the same user not shown)
Line 25: Line 25:
  
 
paket easy-rsa dibutuhkan untuk membantu kita dalam men-setup internal CA (certificate authority)
 
paket easy-rsa dibutuhkan untuk membantu kita dalam men-setup internal CA (certificate authority)
 
  
 
==Step 2: Set Up CA Directory==
 
==Step 2: Set Up CA Directory==
Line 214: Line 213:
  
 
Sekali lagi, default seharusnya sudah terisi, jadi anda cukup menekan ENTER untuk melanjutkan. Tinggalkan pasword kosong dan pastikan untuk memasukkan y untuk petunjuk yang menanyakan apakah akan menandatangani dan komit sertifikat.
 
Sekali lagi, default seharusnya sudah terisi, jadi anda cukup menekan ENTER untuk melanjutkan. Tinggalkan pasword kosong dan pastikan untuk memasukkan y untuk petunjuk yang menanyakan apakah akan menandatangani dan komit sertifikat.
 +
 +
Jika ada masalah, maka database key ada di folder ~/openvpn-ca/keys
  
 
==Step 7: Konfigurasi OpenVPN Service==
 
==Step 7: Konfigurasi OpenVPN Service==
Line 251: Line 252:
 
  cipher AES-128-CBC
 
  cipher AES-128-CBC
  
Below this, add an auth line to select the HMAC message digest algorithm. For this, SHA256 is a good choice:
+
Di bawah ini, tambahkan baris auth untuk memilih algoritma message digest HMAC. Untuk ini, SHA256 adalah pilihan yang baik:
 
/etc/openvpn/server.conf
 
/etc/openvpn/server.conf
  
 
  auth SHA256
 
  auth SHA256
  
Finally, find the user and group settings and remove the ";" at the beginning of to uncomment those lines:
+
Akhirnya, temukan pengaturan user dan grup dan hapus ";" pada awal untuk menghapus tanda komentar baris-baris itu:
 
/etc/openvpn/server.conf
 
/etc/openvpn/server.conf
  
Line 262: Line 263:
 
  group nogroup
 
  group nogroup
  
===(Optional) Push DNS Changes to Redirect All Traffic Through the VPN===
 
  
The settings above will create the VPN connection between the two machines, but will not force any connections to use the tunnel. If you wish to use the VPN to route all of your traffic, you will likely want to push the DNS settings to the client computers.
+
===IP LAN Local===
 +
 
 +
IP LAN local bisa di set di directive
 +
 
 +
server 10.8.0.0 255.255.255.0
 +
 
 +
 
 +
Jika ada jaringan lain selain 10.8.x.x, bisa menggunakan perintah push untuk memberitahukan ke client misalnya
 +
 
 +
push "route 192.168.10.0 255.255.255.0"
 +
push "route 192.168.20.0 255.255.255.0"
  
You can do this, uncomment a few directives that will configure client machines to redirect all web traffic through the VPN. Find the redirect-gateway section and remove the semicolon ";" from the beginning of the redirect-gateway line to uncomment it:
+
Jika push dilakukan, maka semua komputer di jaringan 192.168.10.x dan 192.168.20.x juga harus di set agar mengetahui adanya jaringan 10.8.0.0/24 yang bisa dihubungi melalui gateway openvpn.
 +
 
 +
===(Optional) Paksa perubahan DNS untuk Redirect semua Traffic melalui VPN===
 +
 
 +
Pengaturan di atas akan membuat koneksi VPN antara dua mesin, tetapi tidak akan memaksa koneksi apa pun untuk menggunakan tunnel. Jika anda ingin menggunakan VPN untuk mengarahkan semua lalu lintas anda, anda mungkin ingin memaksa pengaturan DNS ke komputer klien.
 +
 
 +
Anda dapat melakukan ini, menghilangkan komentar beberapa arahan yang akan mengkonfigurasi mesin klien untuk mengalihkan semua lalu lintas web melalui VPN. Temukan bagian redirect-gateway dan hapus titik koma ";" dari awal kalimat redirect-gateway:
 
/etc/openvpn/server.conf
 
/etc/openvpn/server.conf
  
 
  push "redirect-gateway def1 bypass-dhcp"
 
  push "redirect-gateway def1 bypass-dhcp"
  
Just below this, find the dhcp-option section. Again, remove the ";" from in front of both of the lines to uncomment them:
+
Tepat di bawah ini, temukan bagian dhcp-option. Sekali lagi, hapus ";" dari depan kedua baris untuk menghilangkan komentar:
 
/etc/openvpn/server.conf
 
/etc/openvpn/server.conf
  
Line 277: Line 293:
 
  push "dhcp-option DNS 208.67.220.220"
 
  push "dhcp-option DNS 208.67.220.220"
  
This should assist clients in reconfiguring their DNS settings to use the VPN tunnel for as the default gateway.
+
Ini harus membantu klien dalam konfigurasi ulang pengaturan DNS mereka untuk menggunakan tunnel VPN sebagai gateway default. Pastikan IP address DNS adalah IP address yang dilalukan oleh melalui VPN.
  
===(Optional) Adjust the Port and Protocol===
+
===(Optional) Atur Port dan Protocol===
  
By default, the OpenVPN server uses port 1194 and the UDP protocol to accept client connections. If you need to use a different port because of restrictive network environments that your clients might be in, you can change the port option. If you are not hosting web content your OpenVPN server, port 443 is a popular choice since this is usually allowed through firewall rules.
+
Secara default, server OpenVPN menggunakan port 1194 dan protokol UDP untuk menerima koneksi klien. Jika Anda perlu menggunakan port yang berbeda karena lingkungan jaringan yang terbatas di mana klien Anda mungkin berada, Anda dapat mengubah opsi port. Jika anda tidak menghosting konten web server OpenVPN anda, port 443 adalah pilihan populer karena ini biasanya diizinkan melalui aturan firewall.
 
/etc/openvpn/server.conf
 
/etc/openvpn/server.conf
  
Line 287: Line 303:
 
  port 443
 
  port 443
  
Often if the protocol will be restricted to that port as well. If so, change proto from UDP to TCP:
+
Seringkali protokol yang menggunakan port tersebut di batasi juga. Jika demikian, ubah proto dari UDP ke TCP:
 
/etc/openvpn/server.conf
 
/etc/openvpn/server.conf
  
Line 293: Line 309:
 
  proto tcp
 
  proto tcp
  
If you have no need to use a different port, it is best to leave these two settings as their default.
+
Jika anda tidak perlu menggunakan port yang berbeda, sebaiknya biarkan kedua pengaturan ini sebagai default.
  
==(Optional) Point to Non-Default Credentials==
+
===(Optional) Penggunaan Kredensial Non-Default===
  
If you selected a different name during the ./build-key-server command earlier, modify the cert and key lines that you see to point to the appropriate .crt and .key files. If you used the default server, this should already be set correctly:
+
Jika anda memilih nama yang berbeda selama ./build-key-server command sebelumnya, ubah cert dan key lines yang anda lihat untuk menunjuk ke file .crt dan .key yang sesuai. Jika anda menggunakan server default, ini harus sudah diatur dengan benar:
 
/etc/openvpn/server.conf
 
/etc/openvpn/server.conf
  
Line 303: Line 319:
 
  key server.key
 
  key server.key
  
When you are finished, save and close the file.
+
Setelah selesai, simpan dan tutup file.
 +
 
 +
==Step 8: Mengatur Konfigurasi Network Server==
  
==Step 8: Adjust the Server Networking Configuration==
+
Selanjutnya, kita perlu menyesuaikan beberapa aspek dari jaringan server sehingga OpenVPN dapat mengarahkan lalu lintas dengan benar. Untuk keperluan latiham kita dapat menggunakan topologi pada gambar berikut,
  
Next, we need to adjust some aspects of the server's networking so that OpenVPN can correctly route traffic.
+
[[File:Belajar-vpn.jpeg|center|300px|thumb]]
Allow IP Forwarding
 
  
First, we need to allow the server to forward traffic. This is fairly essential to the functionality we want our VPN server to provide.
+
Untuk operasi yang sebenarnya, kita perlu mengatur agar konfigurasi yang di berikan sesuai dengan topologi jaringan yang ada.
  
We can adjust this setting by modifying the /etc/sysctl.conf file:
+
===Ijinkan IP Forwarding===
  
    sudo nano /etc/sysctl.conf
+
Pertama, kita perlu mengizinkan server mem-forward lalu lintas. Ini cukup penting untuk fungsionalitas yang kami inginkan untuk disediakan server VPN kita.
  
Inside, look for the line that sets net.ipv4.ip_forward. Remove the "#" character from the beginning of the line to uncomment that setting:
+
Kita dapat mengaturnya dengan memodifikasi /etc/sysctl.conf
 +
 
 +
sudo nano /etc/sysctl.conf
 +
 
 +
Di dalam, cari baris yang mengatur net.ipv4.ip_forward. Hapus karakter "#" dari awal baris untuk membuka pengaturan:
 
/etc/sysctl.conf
 
/etc/sysctl.conf
  
 
  net.ipv4.ip_forward=1
 
  net.ipv4.ip_forward=1
  
Save and close the file when you are finished.
+
Simpan dan tutup file saat anda selesai.
  
To read the file and adjust the values for the current session, type:
+
Untuk membaca file dan atur nilai untuk sesi saat ini, ketik:
  
    sudo sysctl -p
+
sudo sysctl -p
  
Adjust the UFW Rules to Masquerade Client Connections
+
===Atur UFW Rules untuk Masquerade Client Connection===
  
If you followed the Ubuntu 16.04 initial server setup guide in the prerequisites, you should have the UFW firewall in place. Regardless of whether you use the firewall to block unwanted traffic (which you almost always should do), we need the firewall in this guide to manipulate some of the traffic coming into the server. We need to modify the rules file to set up masquerading, an iptables concept that provides on-the-fly dynamic NAT to correctly route client connections.
+
Jika anda mengikuti panduan pengaturan server awal Ubuntu 16.04 di prasyarat, anda seharusnya memiliki firewall UFW pada tempatnya. Terlepas dari apakah anda menggunakan firewall untuk memblokir lalu lintas yang tidak diinginkan (yang hampir selalu harus anda lakukan), kita memerlukan firewall dalam panduan ini untuk memanipulasi beberapa lalu lintas yang masuk ke server. Kita perlu memodifikasi file aturan untuk mengatur masquerading, sebuah konsep iptables yang menyediakan NAT dinamis on-the-fly agar rute koneksi klien menjadi benar.
  
Before we open the firewall configuration file to add masquerading, we need to find the public network interface of our machine. To do this, type:
+
Sebelum kita membuka file konfigurasi firewall untuk menambahkan masquerading, kita perlu mencari antarmuka jaringan publik dari mesin kami. Untuk melakukan ini, ketik:
  
    ip route | grep default
+
ip route | grep default
  
Your public interface should follow the word "dev". For example, this result shows the interface named wlp11s0, which is highlighted below:
+
Antarmuka publik anda harus mengikuti kata "dev". Sebagai contoh, hasil ini menunjukkan antarmuka bernama ens18, yang terlihat di bawah ini:
  
Output
+
default via 192.168.0.223 dev ens18 onlink
default via 203.0.113.1 dev wlp11s0  proto static  metric 600
 
  
When you have the interface associated with your default route, open the /etc/ufw/before.rules file to add the relevant configuration:
+
Ketika anda memiliki antarmuka yang terkait dengan rute default anda, buka file /etc/ufw/before.rules untuk menambahkan konfigurasi yang relevan:
  
    sudo nano /etc/ufw/before.rules
+
sudo nano /etc/ufw/before.rules
  
This file handles configuration that should be put into place before the conventional UFW rules are loaded. Towards the top of the file, add the highlighted lines below. This will set the default policy for the POSTROUTING chain in the nat table and masquerade any traffic coming from the VPN:
+
File ini menangani konfigurasi yang harus diletakkan sebelum aturan UFW konvensional dimuat. Pada bagian atas file, tambahkan baris yang di perlihatkan di bawah ini. Ini akan menetapkan kebijakan default untuk rantai POSTROUTING di tabel nat dan me-masquerade lalu lintas apa pun yang berasal dari VPN:
  
Note: Remember to replace wlp11s0 in the -A POSTROUTING line below with the interface you found in the above command.
+
Catatan: Pastikan untuk mengganti ens18 di baris A-POSTROUTING di bawah ini dengan antarmuka yang anda temukan dalam perintah di atas.
 
/etc/ufw/before.rules
 
/etc/ufw/before.rules
  
Line 358: Line 378:
 
  #  ufw-before-forward
 
  #  ufw-before-forward
 
  #
 
  #
+
 
 +
 
 
  # START OPENVPN RULES
 
  # START OPENVPN RULES
 
  # NAT table rules
 
  # NAT table rules
 
  *nat
 
  *nat
 
  :POSTROUTING ACCEPT [0:0]  
 
  :POSTROUTING ACCEPT [0:0]  
  # Allow traffic from OpenVPN client to wlp11s0 (change to the interface you discovered!)
+
  # Allow traffic from OpenVPN client to ens18 (change to the interface you discovered!)
  -A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -j MASQUERADE
+
  -A POSTROUTING -s 10.8.0.0/8 -o ens18 -j MASQUERADE
 
  COMMIT
 
  COMMIT
 
  # END OPENVPN RULES
 
  # END OPENVPN RULES
+
 
 +
 
 
  # Don't delete these required lines, otherwise there will be errors
 
  # Don't delete these required lines, otherwise there will be errors
 
  *filter
 
  *filter
 
  . . .
 
  . . .
  
Save and close the file when you are finished.
+
Simpan dan tutup file setelah anda selesai.
  
We need to tell UFW to allow forwarded packets by default as well. To do this, we will open the /etc/default/ufw file:
+
Kita perlu memberi tahu UFW untuk mengizinkan paket yang diforward secara default. Untuk melakukan ini, kita akan membuka file /etc/default/ufw:
  
 
  sudo nano /etc/default/ufw
 
  sudo nano /etc/default/ufw
  
Inside, find the DEFAULT_FORWARD_POLICY directive. We will change the value from DROP to ACCEPT:
+
Di dalamnya, temukan direktif DEFAULT_FORWARD_POLICY. Kita akan mengubah nilai dari DROP ke ACCEPT:
 
/etc/default/ufw
 
/etc/default/ufw
  
DEFAULT_FORWARD_POLICY="ACCEPT"
+
DEFAULT_FORWARD_POLICY="ACCEPT"
 +
 
 +
Simpan dan tutup file setelah anda selesai.
 +
 
 +
===Buka OpenVPN Port===
  
Save and close the file when you are finished.
+
Selanjutnya, kita akan mengatur firewall itu sendiri untuk memungkinkan lalu lintas paket data ke OpenVPN.
Open the OpenVPN Port and Enable the Changes
 
  
Next, we'll adjust the firewall itself to allow traffic to OpenVPN.
+
Jika anda tidak mengubah port dan protokol di file /etc/openvpn/server.conf, anda tetap harus membuka lalu lintas UDP ke port 1194. Jika anda memodifikasi port dan / atau protokol, masukan nilai yang anda pilih di sini.
  
If you did not change the port and protocol in the /etc/openvpn/server.conf file, you will need to open up UDP traffic to port 1194. If you modified the port and/or protocol, substitute the values you selected here.
+
Kita juga akan menambahkan port SSH jika anda lupa menambahkannya ketika mengikuti tutorial prasyarat:
  
We'll also add the SSH port in case you forgot to add it when following the prerequisite tutorial:
+
sudo ufw allow 1194/udp
 +
sudo ufw allow OpenSSH
  
    sudo ufw allow 1194/udp
+
===Aktifkan Perubahan===
    sudo ufw allow OpenSSH
 
  
Now, we can disable and re-enable UFW to load the changes from all of the files we've modified:
+
Sekarang, kita dapat menonaktifkan dan mengaktifkan kembali UFW untuk memuat perubahan dari semua file yang telah kita modifikasi:
  
    sudo ufw disable
+
sudo ufw disable
    sudo ufw enable
+
sudo ufw enable
  
Our server is now configured to correctly handle OpenVPN traffic.
+
Server kita sekarang sudah di konfigurasi untuk benar menangani lalu lintas OpenVPN.
Step 9: Start and Enable the OpenVPN Service
 
  
We're finally ready to start the OpenVPN service on our server. We can do this using systemd.
+
==Step 9: Start dan Enable OpenVPN Service==
  
We need to start the OpenVPN server by specifying our configuration file name as an instance variable after the systemd unit file name. Our configuration file for our server is called /etc/openvpn/server.conf, so we will add @server to end of our unit file when calling it:
+
Kita akhirnya siap untuk memulai layanan OpenVPN di server. Kita dapat melakukan ini menggunakan systemd.
  
    sudo systemctl start openvpn@server
+
Kita perlu men-start server OpenVPN dengan memberitahukan nama file konfigurasi yang kita gunakan sebagai variabel setelah nama file unit systemd file. File konfigurasi untuk server yang kita gunakan adalah /etc/openvpn/server.conf, jadi kita akan menambahkan @server ke akhir file unit kami ketika memanggilnya:
  
Double-check that the service has started successfully by typing:
+
sudo systemctl start openvpn@server
  
    sudo systemctl status openvpn@server
+
Periksa kembali apakah layanan telah berhasil dijalankan dengan mengetik:
  
If everything went well, your output should look something that looks like this:
+
sudo systemctl status openvpn@server
 +
 
 +
Jika semuanya berjalan lancar, output anda akan terlihat seperti ini:
 +
 
 +
● openvpn@server.service - OpenVPN connection to server
 +
    Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset
 +
    Active: active (running) since Mon 2018-06-25 07:26:46 WIB; 9s ago
 +
      Docs: man:openvpn(8)
 +
            https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
 +
            https://community.openvpn.net/openvpn/wiki/HOWTO
 +
  Process: 25449 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/open
 +
  Main PID: 25453 (openvpn)
 +
    CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
 +
            └─25453 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/
 +
 +
Jun 25 07:26:46 refserver ovpn-server[25453]: /sbin/ip addr add dev tun0 local 1
 +
Jun 25 07:26:46 refserver ovpn-server[25453]: /sbin/ip route add 10.8.0.0/24 via
 +
Jun 25 07:26:46 refserver ovpn-server[25453]: GID set to nogroup
 +
Jun 25 07:26:46 refserver ovpn-server[25453]: UID set to nobody
 +
Jun 25 07:26:46 refserver ovpn-server[25453]: UDPv4 link local (bound): [undef]
 +
Jun 25 07:26:46 refserver ovpn-server[25453]: UDPv4 link remote: [undef]
 +
Jun 25 07:26:46 refserver ovpn-server[25453]: MULTI: multi_init called, r=256 v=
 +
Jun 25 07:26:46 refserver ovpn-server[25453]: IFCONFIG POOL: base=10.8.0.4 size=
 +
Jun 25 07:26:46 refserver ovpn-server[25453]: IFCONFIG POOL LIST
 +
Jun 25 07:26:46 refserver ovpn-server[25453]: Initialization Sequence Completed
  
Output
 
● openvpn@server.service - OpenVPN connection to server
 
  Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
 
  Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago
 
    Docs: man:openvpn(8)
 
          https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
 
          https://community.openvpn.net/openvpn/wiki/HOWTO
 
  Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta
 
Main PID: 5856 (openvpn)
 
    Tasks: 1 (limit: 512)
 
  CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
 
          └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid
 
  
May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
+
Anda juga dapat memeriksa apakah antarmuka tun0 OpenVPN tersedia dengan mengetik:
May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip route add 10.8.0.0/24 via 10.8.0.2
 
May 03 15:30:05 openvpn2 ovpn-server[5856]: GID set to nogroup
 
May 03 15:30:05 openvpn2 ovpn-server[5856]: UID set to nobody
 
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link local (bound): [undef]
 
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link remote: [undef]
 
May 03 15:30:05 openvpn2 ovpn-server[5856]: MULTI: multi_init called, r=256 v=256
 
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
 
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL LIST
 
May 03 15:30:05 openvpn2 ovpn-server[5856]: Initialization Sequence Completed
 
  
You can also check that the OpenVPN tun0 interface is available by typing:
+
ip addr show tun0
  
    ip addr show tun0
+
Anda akan melihat antarmuka yang dikonfigurasi:
  
You should see a configured interface:
+
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100
 +
    link/none
 +
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
 +
        valid_lft forever preferred_lft forever
  
Output
+
Jika semuanya berjalan dengan baik, aktifkan layanan sehingga dimulai secara otomatis saat boot:
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100
 
    link/none
 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
 
      valid_lft forever preferred_lft forever
 
  
If everything went well, enable the service so that it starts automatically at boot:
+
sudo systemctl enable openvpn@server
  
    sudo systemctl enable openvpn@server
+
==Step 10: Membuat Konfigurasi Infrastruktur Client==
  
Step 10: Create Client Configuration Infrastructure
+
Selanjutnya, kita perlu menyiapkan sistem yang akan memungkinkan kita untuk membuat file konfigurasi klien dengan mudah.
  
Next, we need to set up a system that will allow us to create client configuration files easily.
+
===Buat Struktur Config Directory Client===
Creating the Client Config Directory Structure
 
  
Create a directory structure within your home directory to store the files:
+
Buat struktur direktori di direktori home anda untuk menyimpan file:
  
    mkdir -p ~/client-configs/files
+
mkdir -p ~/client-configs/files
  
Since our client configuration files will have the client keys embedded, we should lock down permissions on our inner directory:
+
Karena file konfigurasi client akan memiliki key client , kita harus mengunci izin di dalam direktori:
  
    chmod 700 ~/client-configs/files
+
chmod 700 ~/client-configs/files
  
Creating a Base Configuration
+
===Buat Konfigurasi Dasar===
  
Next, let's copy an example client configuration into our directory to use as our base configuration:
+
Selanjutnya, copy contoh konfigurasi client ke direktori untuk digunakan sebagai konfigurasi dasar kita:
  
    cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
+
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf  
  
Open this new file in your text editor:
+
Buka file baru ini di editor text anda:
  
    nano ~/client-configs/base.conf
+
nano ~/client-configs/base.conf
  
Inside, we need to make a few adjustments.
+
Di dalam, kita perlu membuat beberapa penyesuaian.
  
First, locate the remote directive. This points the client to our OpenVPN server address. This should be the public IP address of your OpenVPN server. If you changed the port that the OpenVPN server is listening on, change 1194 to the port you selected:
+
Pertama, temukan remote directive. Ini mengarahkan client ke alamat server OpenVPN kita. Ini harus menjadi alamat IP publik dari server OpenVPN anda. Jika anda mengubah port yang sedang didengarkan oleh server OpenVPN, ubah 1194 ke port yang anda pilih:
 
~/client-configs/base.conf
 
~/client-configs/base.conf
  
. . .
+
. . .
# The hostname/IP and port of the server.
+
# The hostname/IP and port of the server.
# You can have multiple remote entries
+
# You can have multiple remote entries
# to load balance between the servers.
+
# to load balance between the servers.
remote server_IP_address 1194
+
remote server_IP_address 1194
. . .
+
. . .
  
Be sure that the protocol matches the value you are using in the server configuration:
+
Misalnya,
 +
 
 +
remote 202.18.126.200 1194  # kalau ada di IP public
 +
remote 192.168.0.200 1194    # kalau sedang belajar :) ..
 +
 
 +
 
 +
 
 +
Pastikan protokol sesuai dengan nilai yang anda gunakan dalam konfigurasi server:
 
~/client-configs/base.conf
 
~/client-configs/base.conf
  
proto udp
+
proto udp
  
Next, uncomment the user and group directives by removing the ";":
+
Selanjutnya, hapus tanda komentar pada directive user dan grup dengan menghapus ";":
 
~/client-configs/base.conf
 
~/client-configs/base.conf
  
# Downgrade privileges after initialization (non-Windows only)
+
# Downgrade privileges after initialization (non-Windows only)
user nobody
+
user nobody
group nogroup
+
group nogroup
  
Find the directives that set the ca, cert, and key. Comment out these directives since we will be adding the certs and keys within the file itself:
+
Temukan directive yang mengatur ca, cert, dan key. Buka comment pada directive tersebut karena kita akan menambahkan sertifikat dan key dalam file itu tersebut:
 
~/client-configs/base.conf
 
~/client-configs/base.conf
  
# SSL/TLS parms.
+
# SSL/TLS parms.
# See the server config file for more
+
# See the server config file for more
# description.  It's best to use
+
# description.  It's best to use
# a separate .crt/.key file pair
+
# a separate .crt/.key file pair
# for each client.  A single ca
+
# for each client.  A single ca
# file can be used for all clients.
+
# file can be used for all clients.
#ca ca.crt
+
#ca ca.crt
#cert client.crt
+
#cert client.crt
#key client.key
+
#key client.key
  
Mirror the cipher and auth settings that we set in the /etc/openvpn/server.conf file:
+
Mirror pengaturan cipher dan auth yang kita atur di file /etc/openvpn/server.conf:
 
~/client-configs/base.conf
 
~/client-configs/base.conf
  
cipher AES-128-CBC
+
cipher AES-128-CBC
auth SHA256
+
auth SHA256
  
Next, add the key-direction directive somewhere in the file. This must be set to "1" to work with the server:
+
Selanjutnya, tambahkan directive key-direction di dalam file. Ini harus di set ke "1" agar berfungsi dengan server:
 
~/client-configs/base.conf
 
~/client-configs/base.conf
  
key-direction 1
+
key-direction 1
  
Finally, add a few commented out lines. We want to include these with every config, but should only enable them for Linux clients that ship with a /etc/openvpn/update-resolv-conf file. This script uses the resolvconf utility to update DNS information for Linux clients.
+
Akhirnya, tambahkan beberapa baris yang di commented. Kita ingin memasukkan ini dengan setiap konfigurasi, tetapi seharusnya hanya di enable untuk client Linux yang dikirimkan dengan file /etc/openvpn/update-resolv-conf. Script ini menggunakan utilitas resolvconf untuk memperbarui informasi DNS untuk client Linux.
 
~/client-configs/base.conf
 
~/client-configs/base.conf
  
# script-security 2
+
# script-security 2
# up /etc/openvpn/update-resolv-conf
+
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
+
# down /etc/openvpn/update-resolv-conf
  
If your client is running Linux and has an /etc/openvpn/update-resolv-conf file, you should uncomment these lines from the generated OpenVPN client configuration file.
+
Jika client anda menjalankan Linux dan memiliki file /etc/openvpn/update-resolv-conf, anda harus menghapus tanda comment pada  baris tersebut dari file konfigurasi client OpenVPN yang dihasilkan.
  
Save the file when you are finished.
+
Simpan file ketika Anda selesai.
Creating a Configuration Generation Script
 
  
Next, we will create a simple script to compile our base configuration with the relevant certificate, key, and encryption files. This will place the generated configuration in the ~/client-configs/files directory.
+
===Buat Script untuk Membuat Konfigurasi===
  
Create and open a file called make_config.sh within the ~/client-configs directory:
+
Selanjutnya, kita akan membuat skrip sederhana untuk mengkompilasi konfigurasi dasar kami dengan file sertifikat, key, dan enkripsi yang relevan. Ini akan menempatkan konfigurasi yang dihasilkan di direktori ~/client-configs/files .
  
    nano ~/client-configs/make_config.sh
+
Buat dan buka file beri nama make_config.sh dalam direktori ~/client-configs:
  
Inside, paste the following script:
+
nano ~/client-configs/make_config.sh
 +
 
 +
Di dalam, paste script berikut:
 
~/client-configs/make_config.sh
 
~/client-configs/make_config.sh
  
#!/bin/bash
+
#!/bin/bash
 +
 +
# First argument: Client identifier
 +
 +
KEY_DIR=~/openvpn-ca/keys
 +
OUTPUT_DIR=~/client-configs/files
 +
BASE_CONFIG=~/client-configs/base.conf
 +
 +
cat ${BASE_CONFIG} \
 +
    <(echo -e '<ca>') \
 +
    ${KEY_DIR}/ca.crt \
 +
    <(echo -e '</ca>\n<cert>') \
 +
    ${KEY_DIR}/${1}.crt \
 +
    <(echo -e '</cert>\n<key>') \
 +
    ${KEY_DIR}/${1}.key \
 +
    <(echo -e '</key>\n<tls-auth>') \
 +
    ${KEY_DIR}/ta.key \
 +
    <(echo -e '</tls-auth>') \
 +
    > ${OUTPUT_DIR}/${1}.ovpn
  
# First argument: Client identifier
+
Simpan dan tutup file jika anda sudah selesai.
  
KEY_DIR=~/openvpn-ca/keys
+
Ijinkan file untuk bisa di execute ketik:
OUTPUT_DIR=~/client-configs/files
 
BASE_CONFIG=~/client-configs/base.conf
 
  
cat ${BASE_CONFIG} \
+
chmod 700 ~/client-configs/make_config.sh
    <(echo -e '<ca>') \
 
    ${KEY_DIR}/ca.crt \
 
    <(echo -e '</ca>\n<cert>') \
 
    ${KEY_DIR}/${1}.crt \
 
    <(echo -e '</cert>\n<key>') \
 
    ${KEY_DIR}/${1}.key \
 
    <(echo -e '</key>\n<tls-auth>') \
 
    ${KEY_DIR}/ta.key \
 
    <(echo -e '</tls-auth>') \
 
    > ${OUTPUT_DIR}/${1}.ovpn
 
  
Save and close the file when you are finished.
+
==Step 11: Generate Konfigurasi Client==
  
Mark the file as executable by typing:
+
Sekarang, kita dapat dengan mudah men-generate file konfigurasi client.
  
    chmod 700 ~/client-configs/make_config.sh
+
Jika anda mengikuti panduan ini, anda membuat sertifikat dan key client yang disebut client1.crt dan client1.key masing-masing dengan menjalankan perintah ./build-key client1 pada step 6. Kita dapat membuat konfigurasi untuk kredensial ini dengan pindah ke direktori ~/client-configs dan menggunakan skrip yang kita buat:
  
Step 11: Generate Client Configurations
+
cd ~/client-configs
 +
./make_config.sh client1
  
Now, we can easily generate client configuration files.
+
Jika semua berjalan dengan lancar, kita akan memperoleh file client1.ovpn di directory ~/client-configs/files
  
If you followed along with the guide, you created a client certificate and key called client1.crt and client1.key respectively by running the ./build-key client1 command in step 6. We can generate a config for these credentials by moving into our ~/client-configs directory and using the script we made:
+
ls ~/client-configs/files
  
    cd ~/client-configs
+
Output
    ./make_config.sh client1
 
  
If everything went well, we should have a client1.ovpn file in our ~/client-configs/files directory:
+
client1.ovpn
  
    ls ~/client-configs/files
+
===Transfer file konfigurasi ke device Client===
  
Output
+
Kita perlu mentransfer file konfigurasi client ke perangkat yang relevan. Misalnya, ini bisa berupa komputer atau perangkat seluler anda.
client1.ovpn
+
 
 +
Sementara aplikasi yang tepat digunakan untuk melakukan transfer ini akan tergantung pada pilihan anda dan sistem operasi perangkat, anda perlu menggunakan SFTP (SSH file transfer protocol) atau SCP (Secure Copy) pada backend. Ini akan mentransfer file autentikasi VPN klien anda melalui koneksi terenkripsi.
 +
 
 +
Berikut ini contoh perintah SFTP menggunakan contoh client1.ovpn. Perintah ini dapat dijalankan dari komputer anda (OS X atau Linux). Ini menempatkan file .ovpn di direktori home anda:
  
Transferring Configuration to Client Devices
+
sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/
  
We need to transfer the client configuration file to the relevant device. For instance, this could be your local computer or a mobile device.
+
Atau jika anda menggunakan linux, dapat juga menggunakan perintah scp berikut
  
While the exact applications used to accomplish this transfer will depend on your choice and device's operating system, you want the application to use SFTP (SSH file transfer protocol) or SCP (Secure Copy) on the backend. This will transport your client's VPN authentication files over an encrypted connection.
+
scp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/
  
Here is an example SFTP command using our client1.ovpn example. This command can be run from your local computer (OS X or Linux). It places the .ovpn file in your home directory:
+
==Step 12: Instalasi Konfigurasi Client==
  
    sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/
+
Sekarang, kita akan membahas cara menginstal profil VPN client Windows, OS X, iOS, dan Android. Tidak satu pun dari instruksi client ini bergantung satu sama lain, jadi silakan lewati ke mana pun yang berlaku untuk anda.
  
Here are several tools and tutorials for securely transferring files from the server to a local computer:
+
Koneksi OpenVPN akan dibuka saat kita membuka file .ovpn. Dalam contoh ini, koneksi akan disebut client1.ovpn untuk file client pertama yang kami hasilkan.
  
    WinSCP
+
===Windows===
    How To Use SFTP to Securely Transfer Files with a Remote Server
 
    How To Use Filezilla to Transfer and Manage Files Securely on your VPS
 
  
Step 12: Install the Client Configuration
+
'''Instalasi'''
  
Now, we'll discuss how to install a client VPN profile on Windows, OS X, iOS, and Android. None of these client instructions are dependent on one another, so feel free to skip to whichever is applicable to you.
+
Aplikasi client OpenVPN di Windows bisa di ambil situs openvpn
  
The OpenVPN connection will be called whatever you named the .ovpn file. In our example, this means that the connection will be called client1.ovpn for the first client file we generated.
+
* https://openvpn.net/
Windows
+
* http://swupdate.openvpn.org/privatetunnel/client/privatetunnel-win-2.8.exe
  
Installing
+
OpenVPN membutuhkan ijin administrator untuk bisa di instalasi.
 +
Setelah menginstalasi OpenVPN, copy file .ovpn ke:
  
The OpenVPN client application for Windows can be found on OpenVPN's Downloads page. Choose the appropriate installer version for your version of Windows.
+
C:\Program Files\OpenVPN\config
  
Note
+
Saat menjalankan OpenVPN, dia akan secara automatis melihat profile dan langsung membuka sambungan.
OpenVPN needs administrative privileges to install.
 
  
After installing OpenVPN, copy the .ovpn file to:
+
OpenVPN harus dijalankan sebagai administrator setiap kali digunakan, bahkan oleh akun administratif. Untuk melakukan ini tanpa harus mengklik kanan dan memilih Run as administrator setiap kali anda menggunakan VPN, anda dapat mengatur ini, tetapi ini harus dilakukan dari akun administratif. Ini juga berarti bahwa pengguna standar harus memasukkan password administrator untuk menggunakan OpenVPN. Di sisi lain, pengguna standar tidak dapat terhubung dengan benar ke server kecuali aplikasi OpenVPN pada klien memiliki hak admin, oleh karenanya hak istimewa yang ditinggikan diperlukan.
  
C:\Program Files\OpenVPN\config
+
Untuk mengatur aplikasi OpenVPN agar selalu berjalan sebagai administrator, klik kanan pada ikon shortcut-nya dan buka Properties. Di bagian bawah tab "Compatibility", klik tombol untuk "Change Settings for all users". Di jendela baru, cek "Run this program as an administrator".
  
When you launch OpenVPN, it will automatically see the profile and makes it available.
+
'''Connecting'''
  
OpenVPN must be run as an administrator each time it's used, even by administrative accounts. To do this without having to right-click and select Run as administrator every time you use the VPN, you can preset this, but this must be done from an administrative account. This also means that standard users will need to enter the administrator's password to use OpenVPN. On the other hand, standard users can't properly connect to the server unless the OpenVPN application on the client has admin rights, so the elevated privileges are necessary.
+
Setiap kali anda membuka GUI OpenVPN, Windows akan menanyakan apakah anda mengijinkan program untuk melakukan perubahan pada komputer anda. Klik "Yes". Meluncurkan aplikasi klien OpenVPN hanya menempatkan applet di system tray sehingga VPN dapat terhubung dan terputus sesuai kebutuhan; applet tersebut tidak benar-benar membuat koneksi VPN.
  
To set the OpenVPN application to always run as an administrator, right-click on its shortcut icon and go to Properties. At the bottom of the Compatibility tab, click the button to Change settings for all users. In the new window, check Run this program as an administrator.
+
Setelah OpenVPN dimulai, jalankan koneksi dengan masuk ke system tray applet  dan klik kanan pada ikon applet OpenVPN. Ini membuka menu context. Pilih client1 di bagian atas menu (itu profil client1.ovpn) dan pilih Connect.
  
Connecting
+
Jendela status akan terbuka yang menunjukkan keluaran log saat koneksi dibuat, dan sebuah pesan akan muncul setelah klien terhubung.
  
Each time you launch the OpenVPN GUI, Windows will ask if you want to allow the program to make changes to your computer. Click Yes. Launching the OpenVPN client application only puts the applet in the system tray so that the VPN can be connected and disconnected as needed; it does not actually make the VPN connection.
+
Disconnect sambungan dari VPN dengan cara yang sama: Buka system tray applet, klik kanan ikon applet OpenVPN, pilih profil client dan klik Disconnect.
  
Once OpenVPN is started, initiate a connection by going into the system tray applet and right-clicking on the OpenVPN applet icon. This opens the context menu. Select client1 at the top of the menu (that's our client1.ovpn profile) and choose Connect.
+
===OS X===
  
A status window will open showing the log output while the connection is established, and a message will show once the client is connected.
+
'''Installing'''
  
Disconnect from the VPN the same way: Go into the system tray applet, right-click the OpenVPN applet icon, select the client profile and click Disconnect.
+
Tunnelblick adalah client OpenVPN yang free dan open source untuk Mac OS X. Anda dapat mendownload disk image versi terakhir dari Tunnelblick Downloads page. Double-click file .dmg dan ikuti prompt untuk menginstalasi.
OS X
 
  
Installing
+
Di akhir proses instalasi, Tunnelblick akan bertanya apakah anda memiliki file konfigurasi. Akan lebih mudah untuk menjawab "np" dan membiarkan Tunnelblick selesai. Buka Finder window dan double-click client1.ovpn. Tunnelblick akan menginstalasi client profile. Administrative privilege dibutuhkan untuk itu.
  
Tunnelblick is a free, open source OpenVPN client for Mac OS X. You can download the latest disk image from the Tunnelblick Downloads page. Double-click the downloaded .dmg file and follow the prompts to install.
+
'''Connecting'''
  
Towards the end of the installation process, Tunnelblick will ask if you have any configuration files. It can be easier to answer No and let Tunnelblick finish. Open a Finder window and double-click client1.ovpn. Tunnelblick will install the client profile. Administrative privileges are required.
+
Jalankan Tunnelblick dengan double-clicking Tunnelblick di Application folder. Setelah Tunnelblick di jalankan, akan ada icon Tunnelblick di menu bar di sebelah kanan atas layar untuk mengatur sambungan. Klik icon, dan kemudian Connect menu item untuk memulai sambungan VPN. Pilih client1.
  
Connecting
+
===Linux===
  
Launch Tunnelblick by double-clicking Tunnelblick in the Applications folder. Once Tunnelblick has been launched, there will be a Tunnelblick icon in the menu bar at the top right of the screen for controlling connections. Click on the icon, and then the Connect menu item to initiate the VPN connection. Select the client1 connection.
+
'''Instalasi'''
Linux
 
Installing
 
  
If you are using Linux, there are a variety of tools that you can use depending on your distribution. Your desktop environment or window manager might also include connection utilities.
+
Jika anda menggunakan Linux, ada banyak tools yang dapat di gunakan tergantung dari distribusi linux yang digunakan. Desktop atau windows manager mungkin menyediakan utilitas untuk connection.
  
The most universal way of connecting, however, is to just use the OpenVPN software.
+
Cara yang paling umum untuk connecting, adalah dengan menggunakan software OpenVPN.
  
On Ubuntu or Debian, you can install it just as you did on the server by typing:
+
Di Ubuntu atau Debian, proses instalasi tidak berbeda jauh dengan di server dengan menulis:
  
    sudo apt-get update
+
sudo apt-get update
    sudo apt-get install openvpn
+
sudo apt-get install openvpn
  
On CentOS you can enable the EPEL repositories and then install it by typing:
+
Di CentOS kita dapat mengenable EPEL repository dan menginstalasi-nya dengan menulis:
  
    sudo yum install epel-release
+
sudo yum install epel-release
    sudo yum install openvpn
+
sudo yum install openvpn
  
Configuring
+
'''Configuring'''
  
Check to see if your distribution includes a /etc/openvpn/update-resolv-conf script:
+
Cek apakah distribusi anda memasukan script /etc/openvpn/update-resolv-conf:
  
    ls /etc/openvpn
+
ls /etc/openvpn
  
 
Output
 
Output
update-resolve-conf
 
  
Next, edit the OpenVPN client configuration file you transfered:
+
update-resolve-conf
 +
 
 +
Selanjutnya, edit file konfigurasi client OpenVPN:
  
    nano client1.ovpn
+
nano client1.ovpn
  
Uncomment the three lines we placed in to adjust the DNS settings if you were able to find an update-resolv-conf file:
+
Uncomment tiga kalimat yang kita letakan untuk mengatur setting DNS jika anda dapat memperoleh file update-resolv-conf:
 
client1.ovpn
 
client1.ovpn
  
script-security 2
+
script-security 2
up /etc/openvpn/update-resolv-conf
+
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
+
down /etc/openvpn/update-resolv-conf
  
If you are using CentOS, change the group from nogroup to nobody to match the distribution's available groups:
+
Jika anda menggunakan CentOS, ubah group dari nogroup ke nobody agar cocok dengan group yang tersedia di distribusi:
 
client1.ovpn
 
client1.ovpn
  
group nobody
+
group nobody
 +
 
 +
Sava dan close file tersebut.
 +
 
 +
'''Connection'''
 +
 
 +
Sekarang, anda dapat connect ke VPN (untuk client1.ovpn) melalui perintah:
 +
 
 +
sudo openvpn --config client1.ovpn
 +
 
 +
 
 +
Jika tersambung akan muncul interface baru tun0
 +
 
 +
ifconfig
 +
 
 +
Output, kira-kira
  
Save and close the file.
+
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
 +
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
 +
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
 +
          RX packets:32 errors:0 dropped:0 overruns:0 frame:0
 +
          TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
 +
          collisions:0 txqueuelen:100
 +
          RX bytes:5080 (5.0 KB)  TX bytes:5457 (5.4 KB)
 +
 
 +
Jika ada routing ke arah openvpn 10.8.0.x
 +
 
 +
netstat -nr
 +
 
 +
Output
  
Now, you can connect to the VPN by just pointing the openvpn command to the client configuration file:
+
Kernel IP routing table
 +
Destination    Gateway        Genmask        Flags  MSS Window  irtt Iface
 +
0.0.0.0        192.168.0.223  0.0.0.0        UG        0 0          0 enp3s0
 +
10.8.0.1        10.8.0.5        255.255.255.255 UGH      0 0          0 tun0
 +
10.8.0.5        0.0.0.0        255.255.255.255 UH        0 0          0 tun0
 +
50.235.87.130  192.168.0.223  255.255.255.255 UGH      0 0          0 enp3s0
 +
169.254.0.0    0.0.0.0        255.255.0.0    U        0 0          0 enp3s0
 +
192.168.0.0    0.0.0.0        255.255.255.0  U        0 0          0 enp3s0
 +
192.168.10.0    10.8.0.5        255.255.255.0  UG        0 0          0 tun0
 +
222.124.18.79  192.168.0.223  255.255.255.255 UGH      0 0          0 enp3s0
  
    sudo openvpn --config client1.ovpn
+
Jika di perlukan untuk membuat routing tambahan ke LAN (misalnya 192.168.10.0/24) di balik server openvpn (gateway 10.8.0.5), dapat menggunakan perintah
  
This should connect you to your server.
+
sudo route add -net 192.168.10.0/24 gw 10.8.0.5
  
 
==Referensi==
 
==Referensi==
  
 
* https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-16-04
 
* https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-16-04

Latest revision as of 11:28, 30 March 2020

Sumber: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-16-04


Ingin mengakses Internet dengan aman dari smartphone atau laptop anda ketika terhubung ke jaringan tidak bisa dipercaya seperti WiFi dari hotel atau cafe? Virtual Private Network (VPN) memungkinkan Anda untuk melintasi jaringan yang tidak bisa dipercaya secara private dan aman seolah-olah Anda berada di jaringan private. Lalu lintas muncul dari server VPN dan melanjutkan perjalanannya ke tujuan.

Ketika dikombinasikan dengan sambungan HTTPS, pengaturan ini memungkinkan anda untuk mengamankan login dan transaksi wireless anda. Anda dapat menghindari pembatasan geografis dan penyensoran, dan melindungi lokasi anda dan lalu lintas HTTP yang tidak terenkripsi dari jaringan yang tidak dipercaya.

OpenVPN adalah solusi VPN Secure Socket Layer (SSL) open source dengan fitur lengkap yang mengakomodasi berbagai konfigurasi. Dalam tutorial ini, kami akan menyiapkan server OpenVPN pada Droplet dan kemudian mengonfigurasi aksesnya dari Windows, OS X, iOS dan Android. Tutorial ini berusaha agar proses instalasi dan langkah-langkah konfigurasi dijaga sesederhana mungkin.

Persyaratan

Untuk bisa menyelesaikan tutorial ini, anda membutuhkan

  • Ubuntu 16.04 server
  • bisa akses root (sudo) dari non-root user


Step 1: Install OpenVPN

Instalasi aplikasi yang dibutuhkan

sudo su
apt update
apt -y install openvpn easy-rsa

paket easy-rsa dibutuhkan untuk membantu kita dalam men-setup internal CA (certificate authority)

Step 2: Set Up CA Directory

OpenVPN adalah VPN TLS / SSL. Ini berarti bahwa ia menggunakan sertifikat untuk mengenkripsi lalu lintas antara server dan klien. Untuk mengeluarkan sertifikat tepercaya, kita perlu menyiapkan otoritas sertifikat / certificate authority (CA) sendiri yang sederhana.

Untuk itu, kita copy template directory easy-rsa ke home directory dengan perintah make-cadir

make-cadir ~/openvpn-ca

Pindah ke directory CA tersebut untuk memulai konfigurasi CA

cd ~/openvpn-ca

Step 3: Konfigurasi variabel CA

Untuk mengkonfigurasi nilai CA, kita perlu mengedit file

cd ~/openvpn-ca
nano vars

Minimal yang perlu di edit adalah variabel yang berada di bagian agak bawah file tersebut, sebagai berikut,

. . . 
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
. . .

Edit sesuai dengan nilai yang anda sukai, jangan di kosongkan, misalnya,

. . .
export KEY_COUNTRY="ID"
export KEY_PROVINCE="DKI"
export KEY_CITY="Jakarta"
export KEY_ORG="CobaSaja"
export KEY_EMAIL="admin@cobasaja.com"
export KEY_OU="Riset"
. . .

Di bagian bawah parameter di atas, kita juga dapat mengedit nilai KEY_NAME, yang akan mengisi field subject. Untuk membuat sederhana, kita dapat saja menyebutnya "server".

export KEY_NAME="server"

Jika kita selesai, save dan tutup file.

Step 4: Build Certificate Authority

Sekarang, kita dapat menggunakan variabel yang telah kita tetapkan dan utilitas easy-rsa untuk membangun Certificate Authority (CA). Pastikan anda berada di directory CA, dan coba melihat isi file vars yang sudah kita edit,

cd ~/openvpn-ca
source ./vars

Sampai keluar kata2

NOTE: If you run ./clean-all, I will be doing a rm -rf on /root/openvpn-ca/keys

Jalankan

cd ~/openvpn-ca
./clean-all

Setelah lingkungan bersih, kita dapat membuat root CA dengan menulis

cd ~/openvpn-ca
./build-ca

Pada dasarnya kita cukup meng-ENTER semua varibel, sebagai berikut,

Generating a 2048 bit RSA private key
.............................+++
.....................................................................+++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [ID]:
State or Province Name (full name) [DKI]:
Locality Name (eg, city) [Jakarta]:
Organization Name (eg, company) [CobaSaja]:
Organizational Unit Name (eg, section) [Riset]:
Common Name (eg, your name or your server's hostname) [CobaSaja CA]:
Name [server]:
Email Address [admin@cobasaja.com]:

CA sekarang sudah dibuat. Selanjutnya kita perlu membuat berbagai file lainnya yang dibutuhkan.

Step 5: Membuat Server Certificate, Key, dan Encryption File

Selanjutnya, kita perlu membuat certificate server dan pasangan key, maupun berbagai file yang digunakan saat proses enkripsi.

Jika anda menggunakan nama server lain, selain "server". Maka kita perlu memodifikasi /etc/openvpn/server.conf . Juga arah ke file .crt dan .key. Jika kita menggunakan nama "server, maka dapat menggunakan perintah berikut,

cd ~/openvpn-ca/
./build-key-server server

Hasilnya kira-kira,

Generating a 2048 bit RSA private key
........................+++
......+++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [ID]:
State or Province Name (full name) [DKI]:
Locality Name (eg, city) [Jakarta]:
Organization Name (eg, company) [CobaSaja]:
Organizational Unit Name (eg, section) [Riset]:
Common Name (eg, your name or your server's hostname) [server]:
Name [server]:
Email Address [admin@cobasaja.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:CobaSaja.com

Masukan password & company name yang anda suka / inginkan, output akan berlanjut sebagai berikut,

Using configuration from /root/openvpn-ca/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'ID'
stateOrProvinceName   :PRINTABLE:'DKI'
localityName          :PRINTABLE:'Jakarta'
organizationName      :PRINTABLE:'CobaSaja'
organizationalUnitName:PRINTABLE:'Riset'
commonName            :PRINTABLE:'server'
name                  :PRINTABLE:'server'
emailAddress          :IA5STRING:'admin@cobasaja.com'
Certificate is to be certified until Jun 21 02:42:33 2028 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y

Tekan "y" untuk menanda tangani sertifikat, hasilnya adalah

Write out database with 1 new entries
Data Base Updated

Selanjutnya, kita akan membuat beberapa file lainnya. Kita akan men-generate key Diffie-Hellman yang kuat untuk digunakan saat exchange key dengan menuliskan perintah,

./build-dh

Ini akan membutuhkan beberapa waktu untuk selesai. Selanjutnya, kita men-generate HMAC signature untuk menguatkan kemampuan server dalam TLS integrity verification, melalui perintah:

openvpn --genkey --secret keys/ta.key

Step 6: Generate Client Certificate & Key Pair

Selanjutnya, kita dapat men-generate sertifikat client dan pasangan kunci. Meskipun ini dapat dilakukan pada mesin klien dan kemudian ditandatangani oleh server / CA untuk tujuan keamanan, untuk panduan ini kita akan men-generate kunci yang ditandatangani langsung di server supaya lebih sederhana saja. Pada prakteknya, sebetulnya proses ini sebaiknya dilakukan di client.

Kita akan membuat satu (sebuah) kunci / sertifikat klien untuk panduan ini, tetapi jika anda memiliki lebih dari satu client, anda dapat mengulangi proses ini sebanyak yang anda mau. Berikan nilai unik pada skrip untuk setiap client.

Karena anda dapat kembali ke langkah ini di lain waktu, kami akan men-source ulang file vars. Kita akan menggunakan client1 sebagai nilai untuk sertifikat / pasangan kunci pertama kita untuk panduan ini.

Untuk menghasilkan kredensial tanpa password, untuk membantu dalam koneksi otomatis, gunakan perintah build-key seperti ini:

cd ~/openvpn-ca
source vars
./build-key client1

Jika sebaliknya, anda ingin membuat kredensial yang dilindungi password, gunakan perintah build-key-pass:

cd ~/openvpn-ca
source vars
./build-key-pass client1

Sekali lagi, default seharusnya sudah terisi, jadi anda cukup menekan ENTER untuk melanjutkan. Tinggalkan pasword kosong dan pastikan untuk memasukkan y untuk petunjuk yang menanyakan apakah akan menandatangani dan komit sertifikat.

Jika ada masalah, maka database key ada di folder ~/openvpn-ca/keys

Step 7: Konfigurasi OpenVPN Service

Selanjutnya, kita dapat mulai mengkonfigurasi layanan OpenVPN menggunakan kredensial dan file yang telah kita buat.

Copy File ke Direktori OpenVPN

Untuk memulai, kita perlu mengcopy file yang kita butuhkan ke direktori konfigurasi /etc/openvpn.

Kita bisa mulai dengan semua file yang baru kita buat. File tersebut ditempatkan di dalam direktori ~/openvpn-ca/keys saat dibuat. Kita perlu memindahkan sertifikat CA, sertifikat dan key server, tanda tangan digital HMAC, dan file Diffie-Hellman:

cd ~/openvpn-ca/keys
sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn

Selanjutnya, kita perlu mengcopy dan unzip file konfigurasi OpenVPN contoh ke dalam direktori konfigurasi sehingga kita dapat menggunakannya sebagai dasar untuk setup:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

Atur Konfigurasi OpenVPN

Setelah file kita di tempat yang benar, kiita dapat memodifikasi file konfigurasi server:

   sudo nano /etc/openvpn/server.conf

Basic Configuration

Pertama, temukan bagian HMAC dengan mencari petunjuk tls-auth. Hapus ";" untuk menghapus tanda komentar pada baris tls-auth. Di bawah ini, tambahkan parameter key-direction dan set "0": /etc/openvpn/server.conf

tls-auth ta.key 0 # This file is secret
key-direction 0

Selanjutnya, temukan bagian pada cipher cryptographic dengan mencari baris cipher yang dikomentari. Cipher AES-128-CBC menawarkan tingkat enkripsi yang baik dan didukung dengan baik. Hapus ";" untuk menghapus tanda komentar pada cipher AES-128-CBC line: /etc/openvpn/server.conf

cipher AES-128-CBC

Di bawah ini, tambahkan baris auth untuk memilih algoritma message digest HMAC. Untuk ini, SHA256 adalah pilihan yang baik: /etc/openvpn/server.conf

auth SHA256

Akhirnya, temukan pengaturan user dan grup dan hapus ";" pada awal untuk menghapus tanda komentar baris-baris itu: /etc/openvpn/server.conf

user nobody
group nogroup


IP LAN Local

IP LAN local bisa di set di directive

server 10.8.0.0 255.255.255.0


Jika ada jaringan lain selain 10.8.x.x, bisa menggunakan perintah push untuk memberitahukan ke client misalnya

push "route 192.168.10.0 255.255.255.0"
push "route 192.168.20.0 255.255.255.0"

Jika push dilakukan, maka semua komputer di jaringan 192.168.10.x dan 192.168.20.x juga harus di set agar mengetahui adanya jaringan 10.8.0.0/24 yang bisa dihubungi melalui gateway openvpn.

(Optional) Paksa perubahan DNS untuk Redirect semua Traffic melalui VPN

Pengaturan di atas akan membuat koneksi VPN antara dua mesin, tetapi tidak akan memaksa koneksi apa pun untuk menggunakan tunnel. Jika anda ingin menggunakan VPN untuk mengarahkan semua lalu lintas anda, anda mungkin ingin memaksa pengaturan DNS ke komputer klien.

Anda dapat melakukan ini, menghilangkan komentar beberapa arahan yang akan mengkonfigurasi mesin klien untuk mengalihkan semua lalu lintas web melalui VPN. Temukan bagian redirect-gateway dan hapus titik koma ";" dari awal kalimat redirect-gateway: /etc/openvpn/server.conf

push "redirect-gateway def1 bypass-dhcp"

Tepat di bawah ini, temukan bagian dhcp-option. Sekali lagi, hapus ";" dari depan kedua baris untuk menghilangkan komentar: /etc/openvpn/server.conf

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Ini harus membantu klien dalam konfigurasi ulang pengaturan DNS mereka untuk menggunakan tunnel VPN sebagai gateway default. Pastikan IP address DNS adalah IP address yang dilalukan oleh melalui VPN.

(Optional) Atur Port dan Protocol

Secara default, server OpenVPN menggunakan port 1194 dan protokol UDP untuk menerima koneksi klien. Jika Anda perlu menggunakan port yang berbeda karena lingkungan jaringan yang terbatas di mana klien Anda mungkin berada, Anda dapat mengubah opsi port. Jika anda tidak menghosting konten web server OpenVPN anda, port 443 adalah pilihan populer karena ini biasanya diizinkan melalui aturan firewall. /etc/openvpn/server.conf

# Optional!
port 443

Seringkali protokol yang menggunakan port tersebut di batasi juga. Jika demikian, ubah proto dari UDP ke TCP: /etc/openvpn/server.conf

# Optional!
proto tcp

Jika anda tidak perlu menggunakan port yang berbeda, sebaiknya biarkan kedua pengaturan ini sebagai default.

(Optional) Penggunaan Kredensial Non-Default

Jika anda memilih nama yang berbeda selama ./build-key-server command sebelumnya, ubah cert dan key lines yang anda lihat untuk menunjuk ke file .crt dan .key yang sesuai. Jika anda menggunakan server default, ini harus sudah diatur dengan benar: /etc/openvpn/server.conf

cert server.crt
key server.key

Setelah selesai, simpan dan tutup file.

Step 8: Mengatur Konfigurasi Network Server

Selanjutnya, kita perlu menyesuaikan beberapa aspek dari jaringan server sehingga OpenVPN dapat mengarahkan lalu lintas dengan benar. Untuk keperluan latiham kita dapat menggunakan topologi pada gambar berikut,

Belajar-vpn.jpeg

Untuk operasi yang sebenarnya, kita perlu mengatur agar konfigurasi yang di berikan sesuai dengan topologi jaringan yang ada.

Ijinkan IP Forwarding

Pertama, kita perlu mengizinkan server mem-forward lalu lintas. Ini cukup penting untuk fungsionalitas yang kami inginkan untuk disediakan server VPN kita.

Kita dapat mengaturnya dengan memodifikasi /etc/sysctl.conf

sudo nano /etc/sysctl.conf

Di dalam, cari baris yang mengatur net.ipv4.ip_forward. Hapus karakter "#" dari awal baris untuk membuka pengaturan: /etc/sysctl.conf

net.ipv4.ip_forward=1

Simpan dan tutup file saat anda selesai.

Untuk membaca file dan atur nilai untuk sesi saat ini, ketik:

sudo sysctl -p

Atur UFW Rules untuk Masquerade Client Connection

Jika anda mengikuti panduan pengaturan server awal Ubuntu 16.04 di prasyarat, anda seharusnya memiliki firewall UFW pada tempatnya. Terlepas dari apakah anda menggunakan firewall untuk memblokir lalu lintas yang tidak diinginkan (yang hampir selalu harus anda lakukan), kita memerlukan firewall dalam panduan ini untuk memanipulasi beberapa lalu lintas yang masuk ke server. Kita perlu memodifikasi file aturan untuk mengatur masquerading, sebuah konsep iptables yang menyediakan NAT dinamis on-the-fly agar rute koneksi klien menjadi benar.

Sebelum kita membuka file konfigurasi firewall untuk menambahkan masquerading, kita perlu mencari antarmuka jaringan publik dari mesin kami. Untuk melakukan ini, ketik:

ip route | grep default

Antarmuka publik anda harus mengikuti kata "dev". Sebagai contoh, hasil ini menunjukkan antarmuka bernama ens18, yang terlihat di bawah ini:

default via 192.168.0.223 dev ens18 onlink

Ketika anda memiliki antarmuka yang terkait dengan rute default anda, buka file /etc/ufw/before.rules untuk menambahkan konfigurasi yang relevan:

sudo nano /etc/ufw/before.rules

File ini menangani konfigurasi yang harus diletakkan sebelum aturan UFW konvensional dimuat. Pada bagian atas file, tambahkan baris yang di perlihatkan di bawah ini. Ini akan menetapkan kebijakan default untuk rantai POSTROUTING di tabel nat dan me-masquerade lalu lintas apa pun yang berasal dari VPN:

Catatan: Pastikan untuk mengganti ens18 di baris A-POSTROUTING di bawah ini dengan antarmuka yang anda temukan dalam perintah di atas. /etc/ufw/before.rules

#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#


# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0] 
# Allow traffic from OpenVPN client to ens18 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o ens18 -j MASQUERADE
COMMIT
# END OPENVPN RULES


# Don't delete these required lines, otherwise there will be errors
*filter
. . .

Simpan dan tutup file setelah anda selesai.

Kita perlu memberi tahu UFW untuk mengizinkan paket yang diforward secara default. Untuk melakukan ini, kita akan membuka file /etc/default/ufw:

sudo nano /etc/default/ufw

Di dalamnya, temukan direktif DEFAULT_FORWARD_POLICY. Kita akan mengubah nilai dari DROP ke ACCEPT: /etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT"

Simpan dan tutup file setelah anda selesai.

Buka OpenVPN Port

Selanjutnya, kita akan mengatur firewall itu sendiri untuk memungkinkan lalu lintas paket data ke OpenVPN.

Jika anda tidak mengubah port dan protokol di file /etc/openvpn/server.conf, anda tetap harus membuka lalu lintas UDP ke port 1194. Jika anda memodifikasi port dan / atau protokol, masukan nilai yang anda pilih di sini.

Kita juga akan menambahkan port SSH jika anda lupa menambahkannya ketika mengikuti tutorial prasyarat:

sudo ufw allow 1194/udp
sudo ufw allow OpenSSH

Aktifkan Perubahan

Sekarang, kita dapat menonaktifkan dan mengaktifkan kembali UFW untuk memuat perubahan dari semua file yang telah kita modifikasi:

sudo ufw disable
sudo ufw enable

Server kita sekarang sudah di konfigurasi untuk benar menangani lalu lintas OpenVPN.

Step 9: Start dan Enable OpenVPN Service

Kita akhirnya siap untuk memulai layanan OpenVPN di server. Kita dapat melakukan ini menggunakan systemd.

Kita perlu men-start server OpenVPN dengan memberitahukan nama file konfigurasi yang kita gunakan sebagai variabel setelah nama file unit systemd file. File konfigurasi untuk server yang kita gunakan adalah /etc/openvpn/server.conf, jadi kita akan menambahkan @server ke akhir file unit kami ketika memanggilnya:

sudo systemctl start openvpn@server

Periksa kembali apakah layanan telah berhasil dijalankan dengan mengetik:

sudo systemctl status openvpn@server

Jika semuanya berjalan lancar, output anda akan terlihat seperti ini:

● openvpn@server.service - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset
   Active: active (running) since Mon 2018-06-25 07:26:46 WIB; 9s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
  Process: 25449 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/open
 Main PID: 25453 (openvpn)
   CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
           └─25453 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/

Jun 25 07:26:46 refserver ovpn-server[25453]: /sbin/ip addr add dev tun0 local 1
Jun 25 07:26:46 refserver ovpn-server[25453]: /sbin/ip route add 10.8.0.0/24 via
Jun 25 07:26:46 refserver ovpn-server[25453]: GID set to nogroup
Jun 25 07:26:46 refserver ovpn-server[25453]: UID set to nobody
Jun 25 07:26:46 refserver ovpn-server[25453]: UDPv4 link local (bound): [undef]
Jun 25 07:26:46 refserver ovpn-server[25453]: UDPv4 link remote: [undef]
Jun 25 07:26:46 refserver ovpn-server[25453]: MULTI: multi_init called, r=256 v=
Jun 25 07:26:46 refserver ovpn-server[25453]: IFCONFIG POOL: base=10.8.0.4 size=
Jun 25 07:26:46 refserver ovpn-server[25453]: IFCONFIG POOL LIST
Jun 25 07:26:46 refserver ovpn-server[25453]: Initialization Sequence Completed


Anda juga dapat memeriksa apakah antarmuka tun0 OpenVPN tersedia dengan mengetik:

ip addr show tun0

Anda akan melihat antarmuka yang dikonfigurasi:

3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever

Jika semuanya berjalan dengan baik, aktifkan layanan sehingga dimulai secara otomatis saat boot:

sudo systemctl enable openvpn@server

Step 10: Membuat Konfigurasi Infrastruktur Client

Selanjutnya, kita perlu menyiapkan sistem yang akan memungkinkan kita untuk membuat file konfigurasi klien dengan mudah.

Buat Struktur Config Directory Client

Buat struktur direktori di direktori home anda untuk menyimpan file:

mkdir -p ~/client-configs/files

Karena file konfigurasi client akan memiliki key client , kita harus mengunci izin di dalam direktori:

chmod 700 ~/client-configs/files

Buat Konfigurasi Dasar

Selanjutnya, copy contoh konfigurasi client ke direktori untuk digunakan sebagai konfigurasi dasar kita:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf 

Buka file baru ini di editor text anda:

nano ~/client-configs/base.conf

Di dalam, kita perlu membuat beberapa penyesuaian.

Pertama, temukan remote directive. Ini mengarahkan client ke alamat server OpenVPN kita. Ini harus menjadi alamat IP publik dari server OpenVPN anda. Jika anda mengubah port yang sedang didengarkan oleh server OpenVPN, ubah 1194 ke port yang anda pilih: ~/client-configs/base.conf

. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote server_IP_address 1194
. . .

Misalnya,

remote 202.18.126.200 1194   # kalau ada di IP public
remote 192.168.0.200 1194    # kalau sedang belajar :) ..


Pastikan protokol sesuai dengan nilai yang anda gunakan dalam konfigurasi server: ~/client-configs/base.conf

proto udp

Selanjutnya, hapus tanda komentar pada directive user dan grup dengan menghapus ";": ~/client-configs/base.conf

# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

Temukan directive yang mengatur ca, cert, dan key. Buka comment pada directive tersebut karena kita akan menambahkan sertifikat dan key dalam file itu tersebut: ~/client-configs/base.conf

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key client.key

Mirror pengaturan cipher dan auth yang kita atur di file /etc/openvpn/server.conf: ~/client-configs/base.conf

cipher AES-128-CBC
auth SHA256

Selanjutnya, tambahkan directive key-direction di dalam file. Ini harus di set ke "1" agar berfungsi dengan server: ~/client-configs/base.conf

key-direction 1

Akhirnya, tambahkan beberapa baris yang di commented. Kita ingin memasukkan ini dengan setiap konfigurasi, tetapi seharusnya hanya di enable untuk client Linux yang dikirimkan dengan file /etc/openvpn/update-resolv-conf. Script ini menggunakan utilitas resolvconf untuk memperbarui informasi DNS untuk client Linux. ~/client-configs/base.conf

# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

Jika client anda menjalankan Linux dan memiliki file /etc/openvpn/update-resolv-conf, anda harus menghapus tanda comment pada baris tersebut dari file konfigurasi client OpenVPN yang dihasilkan.

Simpan file ketika Anda selesai.

Buat Script untuk Membuat Konfigurasi

Selanjutnya, kita akan membuat skrip sederhana untuk mengkompilasi konfigurasi dasar kami dengan file sertifikat, key, dan enkripsi yang relevan. Ini akan menempatkan konfigurasi yang dihasilkan di direktori ~/client-configs/files .

Buat dan buka file beri nama make_config.sh dalam direktori ~/client-configs:

nano ~/client-configs/make_config.sh

Di dalam, paste script berikut: ~/client-configs/make_config.sh

#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn

Simpan dan tutup file jika anda sudah selesai.

Ijinkan file untuk bisa di execute ketik:

chmod 700 ~/client-configs/make_config.sh

Step 11: Generate Konfigurasi Client

Sekarang, kita dapat dengan mudah men-generate file konfigurasi client.

Jika anda mengikuti panduan ini, anda membuat sertifikat dan key client yang disebut client1.crt dan client1.key masing-masing dengan menjalankan perintah ./build-key client1 pada step 6. Kita dapat membuat konfigurasi untuk kredensial ini dengan pindah ke direktori ~/client-configs dan menggunakan skrip yang kita buat:

cd ~/client-configs
./make_config.sh client1

Jika semua berjalan dengan lancar, kita akan memperoleh file client1.ovpn di directory ~/client-configs/files

ls ~/client-configs/files

Output

client1.ovpn

Transfer file konfigurasi ke device Client

Kita perlu mentransfer file konfigurasi client ke perangkat yang relevan. Misalnya, ini bisa berupa komputer atau perangkat seluler anda.

Sementara aplikasi yang tepat digunakan untuk melakukan transfer ini akan tergantung pada pilihan anda dan sistem operasi perangkat, anda perlu menggunakan SFTP (SSH file transfer protocol) atau SCP (Secure Copy) pada backend. Ini akan mentransfer file autentikasi VPN klien anda melalui koneksi terenkripsi.

Berikut ini contoh perintah SFTP menggunakan contoh client1.ovpn. Perintah ini dapat dijalankan dari komputer anda (OS X atau Linux). Ini menempatkan file .ovpn di direktori home anda:

sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

Atau jika anda menggunakan linux, dapat juga menggunakan perintah scp berikut

scp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

Step 12: Instalasi Konfigurasi Client

Sekarang, kita akan membahas cara menginstal profil VPN client Windows, OS X, iOS, dan Android. Tidak satu pun dari instruksi client ini bergantung satu sama lain, jadi silakan lewati ke mana pun yang berlaku untuk anda.

Koneksi OpenVPN akan dibuka saat kita membuka file .ovpn. Dalam contoh ini, koneksi akan disebut client1.ovpn untuk file client pertama yang kami hasilkan.

Windows

Instalasi

Aplikasi client OpenVPN di Windows bisa di ambil situs openvpn

OpenVPN membutuhkan ijin administrator untuk bisa di instalasi. Setelah menginstalasi OpenVPN, copy file .ovpn ke:

C:\Program Files\OpenVPN\config

Saat menjalankan OpenVPN, dia akan secara automatis melihat profile dan langsung membuka sambungan.

OpenVPN harus dijalankan sebagai administrator setiap kali digunakan, bahkan oleh akun administratif. Untuk melakukan ini tanpa harus mengklik kanan dan memilih Run as administrator setiap kali anda menggunakan VPN, anda dapat mengatur ini, tetapi ini harus dilakukan dari akun administratif. Ini juga berarti bahwa pengguna standar harus memasukkan password administrator untuk menggunakan OpenVPN. Di sisi lain, pengguna standar tidak dapat terhubung dengan benar ke server kecuali aplikasi OpenVPN pada klien memiliki hak admin, oleh karenanya hak istimewa yang ditinggikan diperlukan.

Untuk mengatur aplikasi OpenVPN agar selalu berjalan sebagai administrator, klik kanan pada ikon shortcut-nya dan buka Properties. Di bagian bawah tab "Compatibility", klik tombol untuk "Change Settings for all users". Di jendela baru, cek "Run this program as an administrator".

Connecting

Setiap kali anda membuka GUI OpenVPN, Windows akan menanyakan apakah anda mengijinkan program untuk melakukan perubahan pada komputer anda. Klik "Yes". Meluncurkan aplikasi klien OpenVPN hanya menempatkan applet di system tray sehingga VPN dapat terhubung dan terputus sesuai kebutuhan; applet tersebut tidak benar-benar membuat koneksi VPN.

Setelah OpenVPN dimulai, jalankan koneksi dengan masuk ke system tray applet dan klik kanan pada ikon applet OpenVPN. Ini membuka menu context. Pilih client1 di bagian atas menu (itu profil client1.ovpn) dan pilih Connect.

Jendela status akan terbuka yang menunjukkan keluaran log saat koneksi dibuat, dan sebuah pesan akan muncul setelah klien terhubung.

Disconnect sambungan dari VPN dengan cara yang sama: Buka system tray applet, klik kanan ikon applet OpenVPN, pilih profil client dan klik Disconnect.

OS X

Installing

Tunnelblick adalah client OpenVPN yang free dan open source untuk Mac OS X. Anda dapat mendownload disk image versi terakhir dari Tunnelblick Downloads page. Double-click file .dmg dan ikuti prompt untuk menginstalasi.

Di akhir proses instalasi, Tunnelblick akan bertanya apakah anda memiliki file konfigurasi. Akan lebih mudah untuk menjawab "np" dan membiarkan Tunnelblick selesai. Buka Finder window dan double-click client1.ovpn. Tunnelblick akan menginstalasi client profile. Administrative privilege dibutuhkan untuk itu.

Connecting

Jalankan Tunnelblick dengan double-clicking Tunnelblick di Application folder. Setelah Tunnelblick di jalankan, akan ada icon Tunnelblick di menu bar di sebelah kanan atas layar untuk mengatur sambungan. Klik icon, dan kemudian Connect menu item untuk memulai sambungan VPN. Pilih client1.

Linux

Instalasi

Jika anda menggunakan Linux, ada banyak tools yang dapat di gunakan tergantung dari distribusi linux yang digunakan. Desktop atau windows manager mungkin menyediakan utilitas untuk connection.

Cara yang paling umum untuk connecting, adalah dengan menggunakan software OpenVPN.

Di Ubuntu atau Debian, proses instalasi tidak berbeda jauh dengan di server dengan menulis:

sudo apt-get update
sudo apt-get install openvpn

Di CentOS kita dapat mengenable EPEL repository dan menginstalasi-nya dengan menulis:

sudo yum install epel-release
sudo yum install openvpn

Configuring

Cek apakah distribusi anda memasukan script /etc/openvpn/update-resolv-conf:

ls /etc/openvpn

Output

update-resolve-conf

Selanjutnya, edit file konfigurasi client OpenVPN:

nano client1.ovpn

Uncomment tiga kalimat yang kita letakan untuk mengatur setting DNS jika anda dapat memperoleh file update-resolv-conf: client1.ovpn

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Jika anda menggunakan CentOS, ubah group dari nogroup ke nobody agar cocok dengan group yang tersedia di distribusi: client1.ovpn

group nobody

Sava dan close file tersebut.

Connection

Sekarang, anda dapat connect ke VPN (untuk client1.ovpn) melalui perintah:

sudo openvpn --config client1.ovpn


Jika tersambung akan muncul interface baru tun0

ifconfig

Output, kira-kira

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:32 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:5080 (5.0 KB)  TX bytes:5457 (5.4 KB)

Jika ada routing ke arah openvpn 10.8.0.x

netstat -nr

Output

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.0.223   0.0.0.0         UG        0 0          0 enp3s0
10.8.0.1        10.8.0.5        255.255.255.255 UGH       0 0          0 tun0
10.8.0.5        0.0.0.0         255.255.255.255 UH        0 0          0 tun0
50.235.87.130   192.168.0.223   255.255.255.255 UGH       0 0          0 enp3s0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 enp3s0
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 enp3s0
192.168.10.0    10.8.0.5        255.255.255.0   UG        0 0          0 tun0
222.124.18.79   192.168.0.223   255.255.255.255 UGH       0 0          0 enp3s0

Jika di perlukan untuk membuat routing tambahan ke LAN (misalnya 192.168.10.0/24) di balik server openvpn (gateway 10.8.0.5), dapat menggunakan perintah

sudo route add -net 192.168.10.0/24 gw 10.8.0.5

Referensi