Apa itu OpenVPN ?
OpenVPN adalah software opensource yang mengimplementasikan teknik jaringan pribadi virtual (VPN) untuk menciptakan koneksi yang aman antara titik ke titik atau antar situs dalam konfigurasi yang dihubungkan dan dapat diakses secara jarak jauh. Menggunakan protokol keamanan khusus yang menggunakan SSL/TLS untuk pertukaran data. Mampu melintasi network address translators (NATs) dan firewall. Ditulis oleh James Yonan dan dipublikasikan di bawah Lisensi Publik Umum GNU (GPL).
OpenVPN sering digunakan untuk menghubungkan secara aman jarak jauh ke jaringan perusahaan, menghubungkan secara aman ke internet saat menggunakan WiFi, atau mengakses situs web dan konten yang dibatasi. Dapat dijalankan di berbagai sistem operasi, termasuk Linux, Windows, MacOS, iOS, dan Android.
Instalasi
Login ke server dan ketik perintah berikut untuk melihat IP Address server, kemudian simpan IP Address tersebut untuk digunakan pada instalasi OpenVPN
1 2 | [root@gateway ~]# curl ifconfig.me xxx.ip.public.xxx |
Langkah berikut yang akan saya lakukan diantaranya adalah:
- Install OpenVPN
- Konfigurasi: IP, Protocol, Port, dan DNS
- Membuat klien VPN pertama bernama iaasweb-tunnel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | [root@gateway ~]# wget https://git.io/vpn -O openvpn-install.sh [root@gateway ~]# chmod +x openvpn-install.sh [root@gateway ~]# ./openvpn-install.sh Welcome to this OpenVPN road warrior installer! Which IPv4 address should be used? 1) xxx.ip.public.xxx 2) 10.177.10.1 IPv4 address [1]: 1 Which protocol should OpenVPN use? 1) UDP (recommended) 2) TCP Protocol [1]: 1 What port should OpenVPN listen to? Port [1194]: 1194 Select a DNS server for the clients: 1) Current system resolvers 2) Google 3) 1.1.1.1 4) OpenDNS 5) Quad9 6) AdGuard DNS server [1]: 1 Enter a name for the first client: Name [client]: iaasweb-tunnel Finished! The client configuration is available in: /root/iaasweb-tunnel.ovpn New clients can be added by running this script again. |
Show Status
Perintah berikutnya untuk melihat service OpenVPN
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [root@gateway ~]# systemctl start openvpn-server@server.service [root@gateway ~]# systemctl status openvpn-server@server.service ● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/usr/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2022-12-26 14:19:10 WIB; 2min 58s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 10648 (openvpn) Status: "Initialization Sequence Completed" CGroup: /system.slice/system-openvpn\x2dserver.slice/openvpn-server@server.service └─10648 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2... Dec 26 14:19:10 gateway openvpn[10648]: Socket Buffers: R=[212992->212992] S=[212992->212992] Dec 26 14:19:10 gateway openvpn[10648]: UDPv4 link local (bound): [AF_INET]xxx.ip.public.xxx:1194 Dec 26 14:19:10 gateway openvpn[10648]: UDPv4 link remote: [AF_UNSPEC] Dec 26 14:19:10 gateway openvpn[10648]: GID set to nobody Dec 26 14:19:10 gateway openvpn[10648]: UID set to nobody Dec 26 14:19:10 gateway openvpn[10648]: MULTI: multi_init called, r=256 v=256 Dec 26 14:19:10 gateway openvpn[10648]: IFCONFIG POOL: base=10.8.0.2 size=252, ipv6=0 Dec 26 14:19:10 gateway openvpn[10648]: IFCONFIG POOL LIST Dec 26 14:19:10 gateway openvpn[10648]: Initialization Sequence Completed Dec 26 14:19:10 gateway systemd[1]: Started OpenVPN service for server. |
OpenVPN Client
Untuk menggunakan OpenVPN Client pada Linux CLI dapat menginstall melalui perintah berikut ini, namun pastikan file klien VPN iaasweb-tunnel.ovpn sudah di download dan berada di direktori yang sudah ditentukan. Berikut ini konfigurasi yang akan saya lakukan pada sisi klien linux:
- Install servis openvpn
- Mengkoneksikan openvpn cli sesuai dengan direktorinya
- opsi & saya gunakan agar openvpn dapat berjalan di background
- Untuk mengakhiri openvpn yang sedang berjalan menggunakan pgrep dan kill -9 pada PID yang muncul seketika akan mematikan proses OpenVPN Client
1 2 3 4 5 | [root@client ~]# yum -y install openvpn [root@client ~]# openvpn --client --config /home/iaas/iaasweb-tunnel.ovpn & [root@client ~]# pgrep openvpn* 991 [root@client ~]# kill -9 991 |
OpenVPN Client Windows, MAC, & Android bisa download versi GUI di openvpn.net
Firewall
Apabila yang dijadikan server adalah CentOS 7 dan menggunakan Firewalld maka sesuikan firewall berikut ini:
- eth0: interface IP public server
- tun0: interface OpenVPN
- 10.0.8.0/24: subnet OpenVPN
1 2 3 4 5 6 7 8 9 10 | [root@gateway ~]# firewall-cmd --zone=trusted --add-interface=tun0 [root@gateway ~]# firewall-cmd --permanent --zone=trusted --add-interface=tun0 [root@gateway ~]# firewall-cmd --permanent --add-service openvpn [root@gateway ~]# firewall-cmd --permanent --zone=trusted --add-service openvpn [root@gateway ~]# firewall-cmd --reload [root@gateway ~]# firewall-cmd --list-services --zone=trusted [root@gateway ~]# firewall-cmd --add-masquerade [root@gateway ~]# firewall-cmd --add-masquerade --permanent [root@gateway ~]# firewall-cmd --query-masquerade [root@gateway ~]# firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE |
Untuk kasus ini merupakan tambahan saja yang bersifat opsional yang saya temukan waktu menginstall DHCP Server NAT ternyata membutuhkan tambahan routing lagi (jangan ditambahkan rule ini jika tidak menginstall DHCP Server NAT)
1 2 | [root@gateway ~]# firewall-cmd --permanent --zone=internal --add-interface=eth0 [root@gateway ~]# firewall-cmd --reload |