0

Membuat VPN sendiri di VPS

Banyak yang menyediakan VPN gratis di internet, salah satunya browsec extension yang bisa kita install pada browser chrome.

Tapi sebenarnya kalau kita punya server VPS, kita bisa buat sendiri VPNnya. Jadi kita tinggal install VPNnya di server VPS. Dengan memanfaatkan koneksi network/jaringan yang ada di VPS untuk bisa connect ke website yang dibl0ck oleh ISP.

Cara kerja VPN di VPS

Membuat VPN sendiri di VPS

Sesuai gambar diatas, misal kita ingin mengakses suatu website menggunakan VPN, koneksinya akan diarahkan ke server VPS dulu (yang didalamnya terdapat VPN), setelah itu koneksinya diteruskan menggunakan jaringan VPS untuk mengakses website yang dituju. Kemudian jika sudah dapat response dari website tersebut, responsenya akan dikembalikan ke server VPS dan diteruskan ke user. Dan finally, user bisa melihat halaman websitenya.

Jadi jika menggunakan VPN, koneksi dari ISP akan diarahkan ke server VPS dulu, baru disambungkan ke website tujuan.

Jika tidak menggunakan VPN, dari ISP langsung connect ke website tujuan. Jika websitenya masuk ke dalam daftar website yang dibl0ck oleh ISP, maka kita tidak bisa mengaksesnya. Maka dari itu kita memerlukan VPN.

Cara Setup VPN di server VPS

Environment yang saya gunakan adalah:

  • OS Ubuntu 22.04
  • Server VPS di EC2 AWS


Cara setup VPN di server VPS, yaitu:

  • install openvpn di server & buat user openvpn (akan tergenerate file berektensi .ovpn)
  • pastikan port openvpn (UDP 1194) sudah dibuka pada firewall / inbound rule
  • jalankan file .ovpn di lokal komputer menggunakan software openvpn client jika menggunakan windows, jika menggunakan ubuntu bisa langsung browse file .ovpnnya
  • Test koneksi VPN

– Install Openvpn di server & Buat User Openvpn

Disini saya menggunakan server VPS: EC2 AWS yang dihosting di region singapore. Artinya nanti kita akan connect VPN menggunakan IP singapore. Berikut detail speknya:

Instance type: t2.micro (vCPU 1, RAM 1GB)
IP Public: 3.1.116.195 (Singapore)

Kita akan menginstall openvpn menggunakan angristan/openvpn-install. Masuk ke terminal, pertama kita download dulu script installer openvpnnya:

sudo su
apt-get update
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh

Kemudian kita install openvpnnya:

./openvpn-install.sh

Setelah itu cukup enter-enter saja, kita akan menggunakan konfigurasi default saja:

Welcome to the OpenVPN installer!
The git repository is available at: https://github.com/angristan/openvpn-install

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

I need to know the IPv4 address of the network interface you want OpenVPN listening to.
Unless your server is behind NAT, it should be your public IPv4 address.
IP address: 172.31.24.125

It seems this server is behind NAT. What is its public IPv4 address or hostname?
We need it for the clients to connect to the server.
Public IPv4 address or hostname: 3.1.116.195

Checking for IPv6 connectivity...

Your host does not appear to have IPv6 connectivity.

Do you want to enable IPv6 support (NAT)? [y/n]: n

What port do you want OpenVPN to listen to?
   1) Default: 1194
   2) Custom
   3) Random [49152-65535]
Port choice [1-3]: 1

What protocol do you want OpenVPN to use?
UDP is faster. Unless it is not available, you shouldn't use TCP.
   1) UDP
   2) TCP
Protocol [1-2]: 1

What DNS resolvers do you want to use with the VPN?
   1) Current system resolvers (from /etc/resolv.conf)
   2) Self-hosted DNS Resolver (Unbound)
   3) Cloudflare (Anycast: worldwide)
   4) Quad9 (Anycast: worldwide)
   5) Quad9 uncensored (Anycast: worldwide)
   6) FDN (France)
   7) DNS.WATCH (Germany)
   8) OpenDNS (Anycast: worldwide)
   9) Google (Anycast: worldwide)
   10) Yandex Basic (Russia)
   11) AdGuard DNS (Anycast: worldwide)
   12) NextDNS (Anycast: worldwide)
   13) Custom
DNS [1-12]: 11

Do you want to use compression? It is not recommended since the VORACLE attack makes use of it.
Enable compression? [y/n]: n

Do you want to customize encryption settings?
Unless you know what you're doing, you should stick with the default parameters provided by the script.
Note that whatever you choose, all the choices presented in the script are safe. (Unlike OpenVPN's defaults)
See https://github.com/angristan/openvpn-install#security-and-encryption to learn more.

Customize encryption settings? [y/n]: n

Okay, that was all I needed. We are ready to setup your OpenVPN server now.
You will be able to generate a client at the end of the installation.
Press any key to continue...

Setelah itu akan mendownload openvpn sesuai konfigurasi yang sudah kita buat, tunggu beberapa saat sampai muncul service mana yang mau direstart, cukup tekan tab dan enter:

Kemudian akan lanjut mendownload & mengkonfigurasi Certificate, tunggu beberapa saat lagi sampai ditanya Client Name. Client name merupakan user openvpn. Isi client name dengan nama bebas, misal saya isi ‘user-openvpn’:

Tell me a name for the client.
The name must consist of alphanumeric character. It may also include an underscore or a dash.
Client name: user-openvpn

Do you want to protect the configuration file with a password?
(e.g. encrypt the private key with a password)
   1) Add a passwordless client
   2) Use a password for the client
Select an option [1-2]: 1

* Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)

* Using Easy-RSA configuration: /etc/openvpn/easy-rsa/vars

* The preferred location for 'vars' is within the PKI folder.
  To silence this message move your 'vars' file to your PKI
  or declare your 'vars' file with option: --vars=<FILE>
-----

Notice
------
Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/user-openvpn.req
key: /etc/openvpn/easy-rsa/pki/private/user-openvpn.key
Using configuration from /etc/openvpn/easy-rsa/pki/41ad1633/temp.bba11603
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'user-openvpn'
Certificate is to be certified until Nov 14 07:00:39 2025 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Notice
------
Certificate created at:
* /etc/openvpn/easy-rsa/pki/issued/user-openvpn.crt

Notice
------
Inline file created:
* /etc/openvpn/easy-rsa/pki/inline/user-openvpn.inline
Client user-openvpn added.

The configuration file has been written to /home/ubuntu/user-openvpn.ovpn.
Download the .ovpn file and import it in your OpenVPN client.

File .ovpn disimpan di path /home/ubuntu/user-openvpn.ovpn. Copykan file tersebut ke lokal computer. Nantinya kita akan connect ke VPN menggunakan file user-openvpn.ovpn ini.

– Pastikan port openvpn (UDP 1194) sudah dibuka pada firewall / inbound rule

Sebelumnya kita menginstall openvpn dengan port default (UDP 1194). Maka pada firewall / inbound rule harus kita allow juga port tersebut.

– Jalankan .ovpn di lokal komputer

Selanjutnya kita tinggal test koneksi VPNnya menggunakan file user-openvpn.ovpn yang sudah kita download tadi.

#Windows
Jika diwindows kita memerlukan software tambahan yaitu openvpn client, silahkan download dan install dulu softwarenya https://openvpn.net/client/client-connect-vpn-for-windows/

Setelah terinstall, import file -> browse -> pilih file user-openvpn.ovpn dan klik Connect.

Jika tampilannya seperti gambar dibawah, maka VPN berhasil terconnect.

Membuat VPN sendiri di VPS


#Ubuntu
Jika di Ubuntu, Masuk ke Settings -> Network -> VPN -> klik icon plus -> Import From File -> pilih file user-openvpn.ovpn -> klik add -> lalu ON kan koneksinya


Test Koneksi VPN

Sekarang kita tinggal cek apakah sekarang sudah menggunakan IP Public si VPS (singapore).

Kita bisa mengeceknya di https://www.iplocation.net/, jika tampilannya seperti dibawah berarti VPN berfungsi dengan baik. IP yang digunakan sudah IP Public VPS. Good.

Membuat VPN sendiri di VPS

Tambah dan Hapus User Openvpn

Untuk menambahkan user openvpn, jalankan kembali file .sh nya, dan pilih nomor 1..

Untuk menghapus user, pilih nomor 3.

./openvpn-install.sh
Welcome to OpenVPN-install!
The git repository is available at: https://github.com/angristan/openvpn-install

It looks like OpenVPN is already installed.

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

Ambar Hasbiyatmoko

Hello, I'm web developer. Passionate about programming, web server, and networking.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.