WireGuard logo

WireGuard® adalah VPN yang sederhana namun cepat dan modern yang menggunakan kriptografi terkini.
Wireguard dikembangkan bertujuan membuat protokol vpn yang lebih cepat, lebih sederhana, lebih ramping, dan lebih bermanfaat daripada IPsec yang biasanya membuat pusing kepala.
Selain itu protokol baru vpn ini jauh lebih berkinerja dibanding OpenVPN.
WireGuard dirancang sebagai VPN penggunaan secara umum dan dijalankan pada perangkat embedded sampai dengan komputer super, yang sangat cocok untuk berbagai macam keperluan.
Awalnya dirilis untuk bisa berjalan di kernel Linux, tapi sekarang sudah bisa dijlankan secara cross-platform seperti Windows, macOS, BSD, iOS, Android dan lain sebagainya.
Saat ini memang masih sedang dalam pengembangan, tetapi sudah dapat dianggap sebagai solusi VPN yang paling aman, termudah untuk digunakan, dan paling sederhana di industri saat ini.

WireGuard sudah menggunakan kriptografi canggih terkini, seperti Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, dan secure trusted constructions.
Hal ini menjadikannya sebuah pilihan konservatif dan masuk akal dan juga telah diteliti oleh para pakar cryptography.

Dengan mengkombinasikan kriptografi yang berberkecepatan sangat tinggi dan faktanya adalah WireGuard berjalan di dalam kernel Linux berarti bahwa vpn dapat berjalan dengan kecepatan yang luar biasa.
Ini sangat cocok sekali digunakan pada perangkat-perangkat embedded kecil seperti smartphone dan router backbone yang sangat kompleks.

Kabar gembiranya adalah mulai Linux kernel versi 5.6 wireguard sudah secara resmi masuk ke dalam kernel tree https://github.com/torvalds/linux/commit/bd2463ac7d7ec51d432f23bf0e893fb371a908cd

Linux kernel 5.6

WireGuard vpn server spesification.

Server Operating System  : Centos 8 x64
Server Public Interface  : ens160
Server Public Ip Address : 202.119.229.29
Wireguard private interface : wg0
Wireguard Ip Subnet      : 10.10.100.0/24


Mengaktifkan kernel module WireGuard

CentOS 8 [module – v0.0.20200215 & tools – v1.0.20200206]
$ sudo yum install epel-release
$ sudo yum config-manager --set-enabled PowerTools
$ sudo yum copr enable jdoss/wireguard
$ sudo yum install wireguard-dkms wireguard-tools
$ sudo yum update

Interface baru bisa di tambahkan ke dalam system mengunakan ip-link(8), yang akan otomatis mengatur pemuatan modul:

$ sudo ip link add dev wg0 type wireguard

Bila muncul ERROR : RTNETLINK answers: Operation not supported
Coba lakukan langkah berikut.

Check DKMS status

$ dkms status

Check kernel version & Headers version pastikan keduanya memiliki versi yang sama.

$ sudo yum list | grep kernel-headers
$ sudo uname -a

Compile ulang wiredguard dkms kernel module dan muat ulang modul nya.

$ sudo dkms autoinstall
$ sudo modprobe wireguard

Mempersiapkan private key dan public key untuk WireGuard server.

Masuk ke dalam folder /etc/wireguard.
Kemudian jalankan perintah berikut di dalam terminal.

$ sudo sh -c 'umask 077; wg genkey | tee privatekey | wg pubkey > publickey'

Kita bisa melihat isi dari privatekey dan publickey menggunakan text editor.

$ sudo nano privatekey
$ sudo nano publickey

Mengkonfigurasikan WireGuard server .

Edit the /etc/wireguard/wg0.conf file:

$ sudo nano /etc/wireguard/wg0.conf

[Interface]
Address = 10.10.100.1/24
SaveConfig = true
ListenPort = 31194
PrivateKey = oDsPUrU+DEfikkXBMraUXMZTF9UqRS1Oo7XcJd3V5Xw=

Simpan dan keluar dari file editor.

Firewall konfigurasi dengan firewalld.

Wireguard secara default akan membuka port UDP/31194 yang akan digunakan untuk otentikasi dan membuat secure tunneling.
Pastikan port ini bisa diakses dari internet dengan cara membuat service wireguard untuk firewalld.
Buat file xml di dalam folder /etc/firewalld/services/wireguard.xml.

$ sudo nano /etc/firewalld/services/wireguard.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>wireguard UDP</short>
  <description>WireGuard UDP port 31194</description>
  <port protocol="udp" port="31194"/>
</service>

Aktifkan service wireguard secara permanent di dalam rule firewalld.

$ sudo firewall-cmd --permanent --add-service=wireguard --zone=public
$ sudo firewall-cmd --reload

Periksa status service wireguard.

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources:
  services: cockpit dhcpv6-client http https mysql ssh wireguard
  ports:
  protocols:
  masquerade: yes
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Mengaktifkan Kernel IPv4 forwarding

Edit file /etc/sysctl.d/99-custom.conf menjadi

## Turn on bbr ##
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

## for IPv4 ##
net.ipv4.ip_forward = 1

## Turn on basic protection/security ##
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1

## for IPv6 - uncomment the following line ##
#net.ipv6.conf.all.forwarding = 1

Muat ulang sysctl supaya kernel mengenali konfigrasi yang baru.

$ sudo sysctl -p /etc/sysctl.d/99-custom.conf

Buat Rules firewalld agar zone public (ens160) bisa berkomunikasi dengan zone private (wg0) dan private network bisa mengakses internet.

$ sudo firewall-cmd --add-interface=wg0 --zone=internal
$ sudo firewall-cmd --permanent --zone=internal --add-masquerade

Enable and start WireGuard service

Sampai disini artinya kita sudah berhasil menginstall wireguard dengan benar.
Saatnya untuk mulai mengaktifkan dan menjalankan service wireguard di server.

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]
$ sudo systemctl status [email protected]

Periksa untuk memastikan wireguard sudah berjalan di server.

$ sudo wg
interface: wg0
  public key: ie+8hTuyZjdEepmF+eNKNqv5tRAzbbsT4fyD2pnI2lY=
  private key: (hidden)
  listening port: 31194

$ sudo ip a show wg0
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.10.100.1/24 scope global wg0
       valid_lft forever preferred_lft forever

Periksa UDP port 31194 apakah sudah dalam status listen.

$ sudo netstat -ntulp |grep 31194
udp        0      0 0.0.0.0:31194           0.0.0.0:*                           -
udp6       0      0 :::31194                :::*                                -

Langkah selanjutnya adalah melakukan koneksi dari wireguard client, materi tersebut akan saya buatkan dalam artikel terpisah.

Related Artikel:
https://agusprasetia.com/wireguard-vpn-client-on-linux-ubuntu-mint/
https://agusprasetia.com/wireguard-vpn-android-client-setup/

Leave a Reply

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