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
Cek apakah OpenVPN server udah running:
netstat -tulpen
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
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.
Pingback: Setting Pi-Hole sebagai recursive DNS server | ariw.net