Install OpenVPN Multi Port

OpenVPN adalah salah satu aplikasi Virtual Private Network (VPN) open source yang menggunakan protokol khusus, dan mudah untuk dikonfigurasi atau kustomisasi. Ngga seperti protokol VPN lain seperti L2TP/IPSEC, PPTP, dll yang konfigurasinya cukup rigid, dengan OpenVPN kita bisa bebas mengatur protokol TCP/UDP, port, termasuk jenis enkripsi yang digunakan.

Saya pribadi menggunakan OpenVPN hanya untuk keperluan bypass restriksi oleh ISP, routing/bandwidth internasional yang lebih baik, serta untuk menghapus iklan karena VPN tersebut saya kombinasikan dengan Pi-Hole DNS server (artikel menginstall Pi-Hole DNS server mungkin akan saya tulis terpisah). Oleh karena itu, enkripsi/cipher dan kompresi yang secara default aktif di OpenVPN akan saya disable. Gunanya supaya ngga ada overhead/CPU usage yang tinggi.

Tutorial kali ini dilakukan pada Linux Ubuntu 18.04 menggunakan script yang sudah dibuat oleh Nyr, dengan sedikit modifikasi sesuai kebutuhan:

  • UDP pada port 8888
  • TCP pada port 9999
  • Cipher disabled
  • Compression disabled
  • DNS menggunakan Cloudflare 1.1.1.1

Cekidot ghaes..

Download Nyr script yang nantinya akan digunakan untuk install OpenVPN:

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

Lalu kita edit script tersebut, mulai baris ke-305 edit menjadi seperti ini:

echo "keepalive 1 10
cipher none
comp-lzo no
ncp-disable

Dan pada baris ke-396:

cipher none
comp-lzo
ncp-disable

Setelah disimpan, lanjut jalankan script:

bash openvpn-install.sh
Isi IP address OpenVPN server.
Ketik 1 untuk UDP. Untuk Protocol TCP nanti akan kita buat secara manual.
Seperti yang kita rencanakan di atas, Protocol UDP kita set menggunakan port 8888. Tentunya ini bebas sesuai kebutuhan.
Ketik 2 untuk menggunakan DNS dari Cloudflare. Saya ngga pakai Google, karena Google is evil.
Terakhir, masukkan nama client pertama kita. Klik enter kalau diminta ya ghaes.

Cek apakah OpenVPN server udah running:

netstat -tulpen
Sip. OpenVPN udah listen di port 8888 UDP.

Sekarang kita buat konfigurasi supaya OpenVPN juga listen di port 9999 TCP. Pertama-tama copy dulu konfigurasi server.conf menjadi server-tcp.conf:

cp /etc/openvpn/server.conf /etc/openvpn/server-tcp.conf

Langsung edit file server-tcp.conf, dan ubah menjadi contoh seperti di gambar (saya tandai pada bagian yang harus diubah):

vi /etc/openvpn/server-tcp.conf

Kita enable-kan OpenVPN port 9999 TCP pada setiap server reboot:

systemctl enable openvpn@server-tcp

Start OpenVPN port 9999 TCP, dan lihat apakah sudah listen:

systemctl start openvpn@server-tcp
netstat -tulpen
Sip. OpenVPN port 9999 TCP sudah running.

Untuk OpenVPN port 8888 UDP sih tinggal konfigurasi di sisi client dan siap dipakai, tapi untuk port 9999 TCP kita harus tambahkan iptables rules terlebih dahulu di server. Pertama-tama edit file /etc/rc.local dan tambahkan satu baris iptables rules jadi seperti ini:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to 107.172.100.142
iptables -t nat -A POSTROUTING -s 10.9.0.0/24 ! -d 10.9.0.0/24 -j SNAT --to 107.172.100.142

Setelah itu restart server dengan perintah reboot. Login kembali ke server dan lihat file kolil.ovpn di home directory untuk mendapatkan konfigurasi di sisi client. Ini contohnya:

root@scylla:~# cat kolil.ovpn 
client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote 107.172.100.142 8888
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher none
comp-lzo none
ncp-disable
setenv opt block-outside-dns
key-direction 1
verb 3
<ca>
-----BEGIN CERTIFICATE-----
-stripped-
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
-stripped-
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
-stripped-
-----END PRIVATE KEY-----
</key>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
-stripped-
-----END OpenVPN Static key V1-----
</tls-auth>

Kalau ingin pakai port 9999 TCP cukup edit proto UDP menjadi proto TCP, dan remote 107.172.100.142 8888 menjadi remote 107.172.100.142 9999.

Kalau ada kesulitan atau error silakan tulis di komentar ya! Enjoy.

Leave a Reply

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