Membuat OpenVPN Server dalam Hitungan Detik
Tags: openvpn, vpn
Published: 2021-01-18 15:29:08

Saat ini membuat VPN server sendiri tidak sesulit yang dibayangkan. Tersedia beberapa repositori Github yang akan mengurangi kesulitan dalam menyiapkan VPN khususnya OpenVPN server. Sebelum mulai membangun VPN server, sedikit bahasan tentang apa itu VPN dan bagaimana cara kerja dari VPN.

## Apa itu VPN?

[VPN](https://en.wikipedia.org/wiki/Virtual_private_network) atau Virtual Private Network adalah layanan koneksi secara aman (secure) dan pribadi (private) dengan mengenkripsi seluruh lalu lintas jaringan dan mengubah jalur koneksi melalui server VPN dan menyembunyikan pertukaran data yang terjadi.

Sebagai contoh, klien VPN tidak pernah mengakses server (web) lain secara langsung, semuanya akan diminta dari server VPN dan server VPN akan meneruskan permintaan tersebut.

Terdapat artikel yang bisa menjelaskan secara lengkap apa itu vpn dan fungsinya serta hal-hal lainnya mengenai VPN dengan kalimat yang mudah dipahami, kalian bisa membaca artikel tersebut [disini](https://www.niagahoster.co.id/blog/apa-itu-vpn).

## Mengapa perlu server VPN sendiri?

Memiliki VPN sendiri berarti memiliki kendali penuh dan hanya kita yang dapat membaca log server. Tanpa disadari ISP (Internet Service Provider) yang kita gunakan bisa memata-matai lalu lintas kita, sehingga perlu jalur khusus agar lalu lintas kita tidak terlihat.

Ada banyak layanan VPN dari yang gratis hingga berbayar. Kita bisa menggunakannya, namun tidak menutup kemungkinan data atau trafik kita yang ada pada layanan VPN tersebut bocor. Bisa lihat selengkapnya [disini](https://youtu.be/gxpX_mubz2A).

Berikut beberapa kasus penggunaan, di mana VPN dapat membantu:

* Menyembunyikan alamat IP asli
* Berselancar aman di Wi-Fi publik
* Mengakses layanan di dalam jaringan server VPN

## Hosting server VPN

Saya menggunakan server Ubuntu 20.04 LTS yang dihosting di AWS EC2. Sebelum menggunakan server baru sebagai VPN Server, saya melakukan konfigurasi awal dalam mengamankan server, langkah-langkahnya bisa dibaca [disini](https://dev.to/adityacprtm/cara-membangun-serverless-website-dengan-recaptcha-di-aws-339k). Khusus dalam kasus ini, tidak melakukan konfigurasi firewall dalam server melainkan menggunakan Security Group yang disediakan AWS.

Untuk firewall, pastikan UDP port `1194` terbuka karena port tersebut akan digunakan oleh OpenVPN. Atau bisa gunakan port lain dan sesuaikan dengan port ketika tahap instalasi nanti.

Tutorial ini juga bisa digunakan di Debian, Ubuntu dan CentOS.

Untuk menginstal server VPN dalam hitungan detik, saya menggunakan script shell yang dibuat oleh [Nyr](https://github.com/Nyr) bernama [openvpn-install](https://github.com/Nyr/openvpn-install).

## Instalasi OpenVPN Server

Download script shell.

```
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
```

Setelah downlaod selesai, perlu membuat `openvpn-install.sh` dapat dieksekusi.

```
chmod +x openvpn-install.sh
```

Script tersebut akan menanyakan beberapa pertanyaan tentang bagaimana kita ingin mengatur server VPN. Tekan Enter untuk menggunakan opsi default (direkomendasikan).

Dalam percobaan ini, saya hanya mengubah DNS default menggunakan `1.1.1.1`.

```
Welcome to this OpenVPN road warrior installer!

I need to ask you a few questions before starting setup.
You can use the default options and just press enter if you are ok with them.

Which protocol do you want for OpenVPN connections?
   1) UDP (recommended)
   2) TCP
Protocol [1]:

What port do you want OpenVPN listening to?
Port [1194]:

Which DNS do you want to use with the VPN?
   1) Current system resolvers
   2) 1.1.1.1
   3) Google
   4) OpenDNS
   5) Verisign
DNS [1]: 2

Finally, tell me a name for the client certificate.
Client name [client]:

Okay, that was all I needed. We are ready to set up your OpenVPN server now.
Press any key to continue...
```

Selanjutnya script akan menginstal OpenVPN di server.

### Mengambil file .ovpn dari server

Untuk dapat terhubung dengan VPN server, diperlukan file `.ovpn` yang dihasilkan. Pada Windows, direkomendasikan menggunakan [Filezilla](https://filezilla-project.org/) atau [WinSCP](https://winscp.net/eng/download.php) dan masuk ke server menggunakan SFTP. Di macOS dan Linux, dapat menyalin file dari server ke mesin menggunakan `scp`.

Untuk menyalin file dengan `scp` jalankan perintah berikut:

```
scp <USERNAME>@<SERVER_IP>:/root/<CLIENT>.ovpn .
```

Jika sertifikat atau file `.ovpn` digunakan untuk smartphone, gunakanlah media pengiriman yang aman. Untuk Mac atau iPhone, disarankan untuk menyalin file menggunakan AirDrop.

Jika harus menggunakan Email, silakan zip file `.ovpn` dan berikan password yang kuat untuk file zip sebelum mengirimkannya.

### Menggunakan file .ovpn

Untuk OS Windows bias downlaod apliaksi resmi dari [OpenVPN](https://openvpn.net/community-downloads/), di iOS dan Android ada aplikasi resmi OpenVPN Connect di [App Store](https://apps.apple.com/app/openvpn-connect/id590379981) dan [Google Play](https://play.google.com/store/apps/details?id=net.openvpn.openvpn), sedangkan untuk macOS bisa menggunakan aplikasi [Tunnelblick](https://tunnelblick.net/).

Cara penggunaannya biasanya sama untuk tiap OS. Pertama harus mengimpor file `.ovpn` dan kemudian melakukan koneksi ke server. Jika koneksi berhasil, cek alamat IP saat ini dengan mengetik kata [what is my ip address](https://www.google.com/search?q=what+is+my+ip+address) di google dan Google akan menunjukkan alamat IP.

Jika alamat IP sama dengan server, artinya klien dan server VPN berhasil terhubung.

### Menambahkan user klien baru

Untuk menambahkan pengguna baru cukup jalankan script tersebut dan pilih 1 kemudian nama untuk perangkat yang akan menggunakan sertifikat klien. Dalam kasus ini, saya membuat pengguna untuk iPhone saya.

```
./openvpn-install.sh

Looks like OpenVPN is already installed.

What do you want to do?
   1) Add a new user
   2) Revoke an existing user
   3) Remove OpenVPN
   4) Exit
Select an option: 1

Tell me a name for the client certificate.
Client name: iphone

Using SSL: openssl OpenSSL 1.1.1 11

...............

Write out database with 1 new entries
Data Base Updated

Client iphone added, configuration is available at: /root/iphone.ovpn
```

That’s it! Kita sudah membuat privasi kita terlindungi selama di dunia maya dan kita bisa memberi selamat kepada diri sendiri karena baru saja menyiapkan server VPN yang dihosting sendiri 🎉.

---

Credits:
* icon: designed by [monkik](https://www.flaticon.com/authors/monkik) from Flaticon