PENDAHULUAN:
OpenVPN adalah perangkat lunak komersial open-source yang mengimplementasikan teknik Virtual Private Network (VPN) untuk membuat koneksi point-to-point atau site-to-site yang aman menggunakan konfigurasi routed atau bridged termasuk fasilitas remote access..
OpenVPN menggunakan protokol keamanan khusus yang menggunakan SSL / TLS untuk pertukaran kunci dan mampu melintasi Network Address Translator (NAT) Serta firewall. OpenVPN dibuat oleh James Yonan dan bebas di gunakan dengan lisensi GNU General Public License (GPL).

OpenVPN memungkinkan peers client untuk saling mengotentikasi menggunakan kunci rahasia, sertifikat atau nama pengguna / password yang telah dibuat dan dibagikan sebelumnya.
Ketika digunakan dalam konfigurasi multiclient-server, ini memungkinkan server untuk membuat sertifikat otentikasi untuk setiap user, menggunakan tanda tangan dan otoritas sertifikat. dengan cara menggunakan library enkripsi OpenSSL secara luas, serta protokol TLS, dan memiliki banyak fitur keamanan dan kontrol.
OpenVPN telah porting dan disematkan ke beberapa sistem seperti Mikrotik, DD-WRT dan lain sebagainya.

Berikut langkah-langkah yang diperlukan untuk menginstall openvpn server:

  • Cari dan tentukan ip publik server.
  • Instalasi openvpn melalui paket manager distro masing-masing.
  • Pembuatan CA, Server dan Client sertifikat.
  • Konfigurasi openvpn server secara umum.
  • Koneksi openvpn client menggunakan OS Linux, Windows, Android atau IOS.

CHECK IP PUBLIK SERVER
Masuk ke terminal lalu ketika baris perintah seperti dibawah ini
$ curl https://ipecho.net/plain ; echo
atau
$ host myip.opendns.com resolver1.opendns.com
Catat hasil perintah diatas yang akan kita gunakan nanti sebagai contoh ip publiknya adalah 1.1.1.1 dengn network interface ip publik nya enp3s0.

INSTALASI OPENVPN
Ubuntu 18
$ sudo apt install openvpn
Centos 7
$ yum install openvpn

PEMBUATAN SERTIFIKAT VPN
Untuk memudahkan pembuatan sertifikat baik CA sertifikat, Server sertifikat, Client sertifikat silahkan merujuk ke tulisan saya sebelumnya di SINI.
Unduh terlebih dahulu skrip easy-rsa terbaru di SINI.
Lokasi hasil extract easy-rsa adalah /home/aghe/Portable/EasyRSA-v3.0.6
Sebelumnya sesuaikan variable sertifikat dengan cara mengedit vars.example seperti contoh dibawah:

set_var EASYRSA_REQ_COUNTRY    "ID"
set_var EASYRSA_REQ_PROVINCE    "DKI JAKARTA"
set_var EASYRSA_REQ_CITY    "JAKARTA PUSAT"
set_var EASYRSA_REQ_ORG    "Milano Corporation"
set_var EASYRSA_REQ_EMAIL    "[email protected]"
set_var EASYRSA_REQ_OU        "IT Support"

Jalankan skrip sesuai link tulisan saya dan sebagai contoh pembuatan sertifikat gunakan Common Name sebagai berikut:
– CA sertifikat = ovpn-server-ca
– Server sertifikat = server
– Client sertifikat = client1

Untuk Server yang kita butuhkan adalah file
– ca.crt
– server.key
– server.crt
– dh.pem
– ta.key
Copykan ke 5 berkas tersebut ke dalam directory /etc/openvpn.

KONFIGURASI SERVER
Selanjutnya buat berkas konfigurasi untuk server dengan nama ovpnserver.conf seperti dibawah ini

# Masukan ip publik
local 1.1.1.1

# protokol yang di pilih udp atau tcp di client harus disamakan
proto udp

# Listen port
port 1194

# Gunakan device tun untuk
dev tun

# Lokasi sertifikat ca
ca /etc/openvpn/ca.crt

# Lokasi server sertifikat
cert /etc/openvpn/server.crt

# Path to the private key file
key /etc/openvpn/server.key

# Path to the file containing the Diffe-Hellman parameters
dh /etc/openvpn/dh.pem

# The server and each client must have
# a copy of this key.
# The second parameter should be '0'
# on the server and '1' on the clients.
tls-auth /etc/openvpn/ta.key 0

# Private address untuk vpn server dan client untuk server menjadi 10.0.1.1
server 10.0.1.0 255.255.255.0

# Tambah baris ini agar antar client bisa saling ping
client-to-client

# Uncomment to allow clients to dynamically change address (useful for # road-warriors)
#float

# Kirim keep alive paket agar koneksi tetap tersambung
keepalive 10 120

# Gunakan paket kompresi tetapi untuk server spek rendah lebih baik disable
comp-lzo

# Downgrade privileges untuk meningkatkan keamanan server
user nobody

# Group untuk openvpn server daemons
group nobody

# Maintain a record of client <-> virtual IP address
# associations in this file.  If OpenVPN goes down or
# is restarted, reconnecting clients can be assigned
# the same virtual IP address from the pool that was
# previously assigned.
ifconfig-pool-persist /etc/openvpn/ipp.txt

# Don't re-read key files upon receiving a SIGUSR1 signal
persist-key

# Don't close and reopen the tun(4) device upon receiving a SIGUSR1 signal
persist-tun

# Directory for client-specific configuration files
#client-config-dir /usr/local/etc/openvpn/chroot/ccd client-config-dir ccd  Uncomment to periodically write status information to the specified file

# Uncomment to raise verbosity level for debugging
#verb 11

# LOGGING
log /var/log/openvpn-server.log
status /var/log/openvpn-status.log

# Management Interface CLI
management 127.0.0.1 7505

# Pilihan auth untuk HMAC message digest algorithma
auth SHA256

# Pilihan Cipher yang cukup strong
cipher AES-256-CBC

# Username and Password Auth
;verify-client-cert none
;plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so login

Aktifkan ip forwarding dengan menambahkan/mengedit baris ini di berkas /etc/sysctl.conf.

net.ipv4.ip_forward=1

Kemudian aktifkan ip forwarding dengan perintah
# sudo sysctl -p

AKTIFKAN OPENVPN SERVER
Persiapkan direktory dan file yang di perlukan
$ sudo touch /etc/openvpn/ipp.txt
$ sudo mkdir -p /etc/openvpn/ccd

Enable service
$ sudo systemctl enable [email protected]
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /lib/systemd/system/[email protected]

Start service.
$ sudo systemctl start [email protected]

Check apakah port 1194/udp sudah listen di server.
$ netstat -ntulp |grep 1194
udp 0 0 0.0.0.0:1194 0.0.0.0:* 10417/openvpn

Check status server melalui file log.

$ sudo cat /var/log/openvpn-server.log
Sun Mar 17 11:41:39 2019 OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Sep  5 2018
Sun Mar 17 11:41:39 2019 library versions: OpenSSL 1.1.0g  2 Nov 2017, LZO 2.08
Sun Mar 17 11:41:39 2019 TUN/TAP device tun0 opened Sun Mar 17 11:41:39 2019 do_ifconfig, tt->did_ifconfig_ipv6_setup=0
Sun Mar 17 11:41:39 2019 /sbin/ip link set dev tun0 up mtu 1500 Sun Mar 17 11:41:39 2019 /sbin/ip addr add dev tun0 local 10.0.1.1 peer 10.0.1.2 Sun Mar 17 11:41:39 2019 Could not determine IPv4/IPv6 protocol. Using AF_INET
Sun Mar 17 11:41:39 2019 UDPv4 link local (bound): [AF_INET][undef]:1194 Sun Mar 17 11:41:39 2019 UDPv4 link remote: [AF_UNSPEC] Sun Mar 17 11:41:39 2019 GID set to nogroup
Sun Mar 17 11:41:39 2019 UID set to nobody Sun Mar 17 11:41:39 2019 Initialization Sequence Completed

Sampai disini server sudah bisa dikoneksikan oleh client dan antar client sudah bisa saling berkomunikasi.

Konfigurasi tambahan
Routing traffic agar semua aktifitas client seperti browsing internet, chatting, download file maupun streaming video melewati vpn tunnel, Tambahkan/edit di ovpnserver.conf konfigurasi extra seperti ini
push “redirect-gateway def1 bypass-dhcp”

DNS juga dilewatkan melalui tunnel
push “dhcp-option DNS 8.8.8.8”
push “dhcp-option DNS 8.8.4.4”

Mengalihkan traffic dari subnet 10.0.1.0/24 yang menuju 0.0.0.0/0 agar melewati interface ip publik.
/sbin/iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o enp3s0 -j MASQUERADE

Meminimalisir MIT attack
tls-auth /etc/openvpn/ta.key 0 #Untuk client masukan nilai 1

Sampai disini server OpenVPN sudah siap untuk di koneksikan oleh openvpn client.
Dikarenakan banyak nya client platfom yang di support oleh OpenVPN akan di jabarkan lebih lanjut di tulisan-tulisan saya berikutnya, harap bersabar yah..

Salam

ARTIKEL YANG BERHUBUNGAN :
https://agusprasetia.com/instalasi-openvpn-client-di-linux-desktop/
https://agusprasetia.com/instalasi-openvpn-client-di-windows-desktop/
https://agusprasetia.com/instalasi-openvpn-client-di-mikrotik/
https://agusprasetia.com/instalasi-openvpn-client-di-smartphone-android/

16 thoughts on “Membangun OpenVPN Server Ubuntu 18 / Centos 7”
  1. […] Jika anda menggunakan linux desktop bukan linux versi server hampir dipastikan utility network-manager sudah terinstall secara default, hanya perlu sedikit konfigurasi tambahan untuk bisa melakukan koneksi ke vpn server.Sebelumnya untuk bisa menggunakan OpenVPN client anda harus memiliki OpenVPN server atau sewa Openvpn Host di provider yang menyediakan jasa tunneling atau anonymity jasa seperti ini banyak bertebaran di internet, atau jika anda ingin membuat server OpenVPN sendiri bisa merujuk ke tulisan saya sebelumnnya tentang cara2 menginstall dan mengkonfigurasikan OpenVPN server di linux silahkan klik link berikut OpenVPN SERVER. […]

  2. Mohon petunjuknya untuk setting openvpn agar akses internet client tidak lewat VPN namun lewat gateway local saja. Sudah saya seting spt di bawah masih gagal ( client tidak bisa akses internet). Thanks.

    Setting server.conf:
    port 1194
    proto tcp
    dev tun
    sndbuf 0
    rcvbuf 0
    ca ca.crt
    cert server.crt
    key server.key
    dh dh.pem
    auth SHA512
    tls-auth ta.key 0
    topology subnet
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    keepalive 10 120
    cipher AES-256-CBC
    user nobody
    group nobody
    persist-key
    persist-tun

    Seting di client :
    client
    dev tun
    proto tcp
    sndbuf 0
    rcvbuf 0
    remote xxx.xxx.x.x 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    remote-cert-tls server
    auth SHA512
    cipher AES-256-CBC
    setenv opt block-outside-dns
    key-direction 1
    verb 3

    1. Lakukan step2 di bawah ini

      – Modifikasi client.conf Tambahkan baris ini:
      # LOGGING
      log /var/log/openvpn-client.log

      – modifikasi client.conf Hapus Baris ini:
      setenv opt block-outside-dns
      key-direction 1

      – Disable sementara firewall
      systemctl stop firewalld.service

      – Restart openvpn

      – Ping ke server dan ke yahoo
      ping -c 4 10.0.1.1
      ping -c 4 yahoo.com

      – Cek log LOG
      cat /var/log/openvpn-client.log

      – Cek routing
      route -v4

      contoh https://ibb.co/zN07m6p

  3. […] Windows tidak dapat dipungkiri masih menjadi system operasi yang paling banyak di gunakan, terutama di perkantoran, instansi pemerintah, maupun di instansi pendidikan dan perguruan tinggi.Untuk itu sangat lah tidak fair saya rasa jika tidak berbagi untuk rekan-rekan saya yang masih menggunakan windows sebagai system operasi utama di dektop personal komputer maupun laptop mereka.Sebelumnya Openvpn server harus sudah up and running silahkan di cek terlebih dahulu kondisi server masing-masing, Untuk Ip publik juga harus di pastikan sudah bisa di akses dari internet dan port 1194 sudah open.Kalau pembaca ada yg belum mengerti apa itu openvpn server silahkan di baca terlebih dahulu tulisan saya sebelum nya tentang OpenVPN Server. […]

  4. error ini mas
    Process: 6364 ExecStart=/usr/sbin/openvpn –cd /etc/openvpn/ –config %i.conf (code=exited, status=203/EXEC)

    Failed at step EXEC spawning /usr/sbin/openvpn: No such file or directory

    1. Pastikan systemctl start [email protected]
      dan config file nya harus ovpnserver.conf di /etc/openvpn/ovpnserver.conf.

      Failed at step EXEC spawning /usr/sbin/openvpn: No such file or directory
      coba jalankan which openvpn takutnya binari openvpn nya blm terinstall

      1. sudah mas, tapi tetap seperti itu.
        saya ada 2 pertanyaan setelah saya coba centos

        setelah install yum install openvpn itu kan ada 2 folder client dan server di ./etc/openvpn/
        apakah memang kosong?
        soalnya ketika saya di ubuntu, setelah jalankan install openvpn itu di dalam 2 folder tersebut ada file kalo gasalah

        yang di copy-kan 5 file itu yang dalam folder easyrsa-vxxxxx/keys/ kan ya?
        bukan yang di dalam issued?

        saya udah run which openvpn resultnya /usr/sbin/openvpn/

        maklum saya baru di linux ehehe

        1. setelah install yum install openvpn itu kan ada 2 folder client dan server di ./etc/openvpn/
          apakah memang kosong?

          Ya memang kosong

          yang di copy-kan 5 file itu yang dalam folder easyrsa-vxxxxx/keys/ kan ya?

          Iya betul tapi hanya 4 file untuk client ca.crt, client1.crt, client1.key, ta.key
          Untuk server 5 file ca.crt, dh.pem, ta.key, server.crt, server.key

          Pastekan status server isi file /var/log/openvpn-server.log saya mau lihat
          kalau bisa sih jalankan openvpn di client di linux nya pakai terminal biar bisa cek log juga

  5. untuk start [email protected] ny aja begini mas

    [email protected] – OpenVPN Robust And Highly Flexible Tunneling Application On ovpn
    Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since Fri 2019-04-12 14:17:38 WIB; 19s ago
    Process: 5099 ExecStart=/usr/sbin/openvpn –cd /etc/openvpn/ –config %i.conf (code=exited, status=1/FAILURE)
    Main PID: 5099 (code=exited, status=1/FAILURE)

    Apr 12 14:17:38 exabytes-59026326 systemd[1]: Starting OpenVPN Robust And Highly Flexible Tunneling Application On ovpn…
    Apr 12 14:17:38 exabytes-59026326 openvpn[5099]: Options error: In [CMD-LINE]:1: Error opening configuration file: ovpn.conf
    Apr 12 14:17:38 exabytes-59026326 openvpn[5099]: Use –help for more information.
    Apr 12 14:17:38 exabytes-59026326 systemd[1]: [email protected]: main process exited, code=exited, status=1/FAILURE
    Apr 12 14:17:38 exabytes-59026326 systemd[1]: Failed to start OpenVPN Robust And Highly Flexible Tunneling Application On ovpn.
    Apr 12 14:17:38 exabytes-59026326 systemd[1]: Unit [email protected] entered failed state.
    Apr 12 14:17:38 exabytes-59026326 systemd[1]: [email protected] failed.

    saya udah coba ganti yang ovpnserver.conf jadi ovpn.conf tetep gagal mas.

    log filenya isinya belom ada cuman default.

    1. Process: 5099 ExecStart=/usr/sbin/openvpn –cd /etc/openvpn/ –config %i.conf (code=exited, status=1/FAILURE)
      konfigurasi harus di letakan di /etc/openvpn/ovpn.conf

      Apr 12 14:17:38 exabytes-59026326 openvpn[5099]: Options error: In [CMD-LINE]:1: Error opening configuration file: ovpn.conf
      aplikasi openvpn tidak bisa menemukan file /etc/openvpn/ovpn.conf , bisa karena lokasinya tidak sesuai tidak di /etc/openvpn/ atau salah penamaannya filenya.

  6. Fri Apr 12 12:34:49 2019 WARNING: Using –management on a TCP port WITHOUT passwords is STRONGLY discouraged and considered insecure
    Fri Apr 12 12:34:49 2019 OpenVPN 2.4.7 x86_64-redhat-linux-gnu [Fedora EPEL patched] [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Feb 20 2019
    Fri Apr 12 12:34:49 2019 library versions: OpenSSL 1.0.2k-fips 26 Jan 2017, LZO 2.06
    Fri Apr 12 12:34:49 2019 TUN/TAP device tun0 opened
    Fri Apr 12 12:34:49 2019 /sbin/ip link set dev tun0 up mtu 1500
    Fri Apr 12 12:34:49 2019 /sbin/ip addr add dev tun0 local 10.0.1.1 peer 10.0.1.2
    Fri Apr 12 12:34:49 2019 Could not determine IPv4/IPv6 protocol. Using AF_INET
    Fri Apr 12 12:34:49 2019 UDPv4 link local (bound): [AF_INET]212.24.101.86:1194
    Fri Apr 12 12:34:49 2019 UDPv4 link remote: [AF_UNSPEC]
    Fri Apr 12 12:34:49 2019 GID set to nobody
    Fri Apr 12 12:34:49 2019 UID set to nobody
    Fri Apr 12 12:34:49 2019 Initialization Sequence Completed

    ini untuk lognya mas

    1. Ok server sudah UP, tinggal koneksikan client nya
      Jangan lupa tambahkan baris
      log /var/log/openvpn-client.log
      di client.conf supaya lebih mudah troubleshoot jika ada masalah

  7. Hi, yeah this post is genuinely nice and I have learned lot of things from it regarding blogging. thanks.|

Leave a Reply

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