
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

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/