Cara Mengatur WireGuard di Ubuntu


Pendahuluan

WireGuard adalah Virtual Private Network (VPN) yang ringan dan mendukung koneksi IPv4 serta IPv6. VPN memungkinkan Anda untuk menjelajahi jaringan yang tidak terpercaya seolah-olah Anda berada pada jaringan pribadi. Ini memberi Anda kemampuan untuk mengakses internet dengan lebih aman dari perangkat seperti laptop atau ponsel saat terhubung ke jaringan yang tidak terpercaya, termasuk WiFi publik.

Enkripsi WireGuard bergantung pada kunci publik dan pribadi agar rekan dapat membangun terowongan terenkripsi di antara mereka sendiri. Setiap rilis WireGuard menggunakan seperangkat metode kriptografi modern yang tetap, yang membantu menjaga protokol tetap sederhana dan dapat diprediksi. Desain ini menghindari negosiasi saat waktu berjalan dan mengurangi risiko kesalahan konfigurasi.

Sebagai perbandingan, perangkat lunak VPN lain seperti OpenVPN dan IPsec mengandalkan Transport Layer Security dan sertifikat untuk mengautentikasi serta membangun terowongan terenkripsi. Meskipun pendekatan ini memberikan fleksibilitas dan mendukung berbagai jenis klien, hal ini juga meningkatkan kompleksitas konfigurasi dan membuat perilaku operasional lebih sulit dipahami.

Dalam tutorial ini, Anda akan mengatur WireGuard di server Ubuntu dan mengonfigurasi mesin lain untuk terhubung ke server tersebut sebagai peer menggunakan IPv4 dan IPv6, yang biasanya disebut sebagai konfigurasi dual-stack. Anda juga akan belajar bagaimana mengarahkan lalu lintas peer melalui server WireGuard dalam pengaturan gateway, serta bagaimana menggunakan VPN untuk komunikasi peer-to-peer yang terenkripsi.

Selain pengaturan inti, panduan ini mencakup topik praktis yang penting untuk penerapan di dunia nyata. Topik-topik ini termasuk memahami arsitektur peer-to-peer WireGuard, mengelola dan memutar kunci, menangani IPv6 dan routing dual-stack dengan benar, meningkatkan keandalan untuk peer di balik NAT, menyetel kinerja, dan memahami bagaimana WireGuard dibandingkan dengan OpenVPN dalam hal protokol transport dan perilaku firewall.

Untuk keperluan tutorial ini, sistem Ubuntu lain digunakan sebagai Peer WireGuard. Tutorial berikutnya dalam seri ini membahas instalasi dan penggunaan WireGuard di Windows, macOS, Android, dan iOS.

Deploy aplikasi frontend Anda dari GitHub menggunakan Platform Aplikasi Linux-Console.net. Biarkan Linux-Console.net menangani skala aplikasi Anda.

Catatan: Jika Anda berencana untuk mengatur WireGuard di Droplet Linux-Console.net, harap diketahui bahwa kami, seperti banyak penyedia hosting lainnya, mengenakan biaya untuk kelebihan bandwidth. Oleh karena itu, harap perhatikan seberapa banyak lalu lintas yang ditangani server Anda. Lihat halaman Penagihan Bandwidth kami untuk informasi lebih lanjut.

Poin Penting:

  • WireGuard adalah VPN ringan yang menggunakan kriptografi modern dengan desain sederhana berdasarkan pasangan kunci publik dan privat, yang mengurangi kompleksitas konfigurasi dan kesalahan.
  • WireGuard mengikuti arsitektur peer-to-peer di mana semua sistem menjalankan perangkat lunak yang sama, dan istilah server dan peer hanya menggambarkan topologi jaringan, bukan peran atau kemampuan yang berbeda.
  • Semua perilaku enkripsi, autentikasi, dan routing di WireGuard didefinisikan secara eksplisit dalam file konfigurasi, tanpa adanya plane kontrol, otoritas sertifikat, atau negosiasi saat runtime.
  • Pengaturan AllowedIPs memiliki dua tujuan: mengontrol lalu lintas mana yang dialihkan melalui terowongan dan berfungsi sebagai daftar kontrol akses ketat untuk lalu lintas masuk dari rekan.
  • WireGuard mendukung baik IPv4 maupun IPv6 secara setara, dan konfigurasi dual-stack memerlukan pengaturan routing, aturan firewall, dan pengaturan forwarding yang cermat untuk setiap protokol.
  • Saat menggunakan WireGuard sebagai gateway VPN, penerusan IP dan penyamaran firewall harus dikonfigurasi di server agar lalu lintas peer dapat mencapai jaringan eksternal.
  • Alat bantu wg-quick mengotomatiskan pembuatan rute, aturan firewall, dan pengaturan antarmuka, sementara modul kernel WireGuard hanya fokus pada enkripsi dan dekripsi paket.
  • Kebocoran IPv6 dapat terjadi pada pengaturan dual-stack jika rute IPv6 seperti ::/0 tidak disertakan secara eksplisit, sehingga lalu lintas IPv6 melewati VPN bahkan ketika lalu lintas IPv4 ditunnel dengan benar.
  • WireGuard tidak secara otomatis mengubah rute sistem, pengaturan DNS, atau aturan firewall, sehingga alat seperti wg-quick atau konfigurasi manual diperlukan untuk mengelola routing dan perilaku jaringan.
  • Implementasi WireGuard dual-stack memerlukan penerusan IPv4 dan IPv6, aturan firewall, serta dukungan ICMPv6 yang dikonfigurasi secara terpisah, karena sistem operasi menangani setiap protokol secara independen.

Prasyarat

Untuk mengikuti tutorial ini, Anda akan membutuhkan:

  • Satu server Ubuntu dengan pengguna non-root yang memiliki hak sudo dan firewall yang diaktifkan. Untuk menyiapkan ini, Anda dapat mengikuti tutorial Penyiapan Server Awal dengan Ubuntu kami. Kami akan menyebut ini sebagai Server WireGuard sepanjang panduan ini.

  • Anda akan memerlukan sebuah mesin klien yang akan Anda gunakan untuk terhubung ke Server WireGuard Anda. Dalam tutorial ini, mesin ini akan disebut sebagai WireGuard Peer. Untuk keperluan tutorial ini, disarankan agar Anda menggunakan mesin lokal Anda sebagai WireGuard Peer, tetapi Anda juga dapat menggunakan server jarak jauh, atau ponsel sebagai klien jika Anda mau. Jika Anda menggunakan sistem jarak jauh, pastikan untuk mengikuti semua bagian opsional nanti dalam tutorial ini atau Anda mungkin akan mengunci diri dari sistem.

  • Untuk menggunakan WireGuard dengan IPv6, Anda juga perlu memastikan bahwa server Anda dikonfigurasi untuk mendukung jenis lalu lintas tersebut. Jika Anda ingin mengaktifkan dukungan IPv6 dengan WireGuard dan menggunakan Droplet Linux-Console.net, silakan merujuk ke halaman dokumentasi ini Cara Mengaktifkan IPv6 pada Droplet. Anda dapat menambahkan dukungan IPv6 saat membuat Droplet, atau setelahnya menggunakan petunjuk di halaman tersebut.

Tinjauan Arsitektur WireGuard

Sebelum mengonfigurasi WireGuard, ada baiknya memahami bagaimana sistem, rekan (peers), dan lalu lintas jaringan berinteraksi. WireGuard menggunakan arsitektur yang sengaja sederhana yang menghindari control plane, otoritas sertifikat, dan negosiasi parameter konfigurasi saat runtime. Semua perilaku enkripsi, autentikasi, dan routing ditentukan secara eksplisit melalui file konfigurasi.

Terminologi Desain dan Topologi Peer-to-Peer

WireGuard pada dasarnya adalah protokol peer-to-peer. Perangkat lunak dan modul kernel WireGuard yang sama dijalankan di semua sistem yang berpartisipasi, dan tidak ada binary server atau klien yang berbeda.

Dalam tutorial ini, istilah WireGuard Server mengacu pada pusat hub dalam topologi hub-and-spoke. Sistem ini dapat diakses secara publik dan berfungsi sebagai titik koordinasi bagi peer lainnya. Istilah WireGuard Peer mengacu pada perangkat yang terhubung ke hub ini. Istilah-istilah ini menggambarkan topologi jaringan yang digunakan dalam panduan ini, bukan peran atau kemampuan perangkat lunak yang berbeda.

Memahami perbedaan ini penting karena WireGuard tidak memiliki opsi konfigurasi khusus server. Sistem mana pun bisa berperan sebagai hub, spoke, atau keduanya, tergantung sepenuhnya pada bagaimana kunci, alamat, dan aturan routing ditentukan.

Komponen Inti dalam Penerapan WireGuard

Penerapan WireGuard terdiri dari sejumlah kecil komponen yang jelas, masing-masing dengan tanggung jawab spesifik.

  • Central Peer (Hub): Central peer adalah sistem yang dapat dijangkau secara publik yang mendengarkan lalu lintas UDP terenkripsi pada satu port. Sistem ini memiliki antarmuka terowongan virtual, biasanya bernama wg0, dan menyimpan kunci publik dari peer lain yang diizinkan untuk berkomunikasi dengannya. Hub tidak menemukan peer secara dinamis atau menerima koneksi secara implisit. Lalu lintas hanya diterima dari peer yang kunci publik dan rentang IP yang diizinkan telah dikonfigurasi secara eksplisit.

  • Menghubungkan Rekan (Spokes): Menghubungkan rekan adalah perangkat yang membuat terowongan terenkripsi ke rekan pusat. Perangkat ini bisa berupa laptop, server, mesin virtual, atau sistem seluler. Setiap rekan memiliki pasangan kunci kriptografi unik dan satu atau lebih alamat IP pribadi yang ditetapkan ke antarmuka terowolannya. Sebuah rekan mengirim lalu lintas ke dalam terowongan hanya ketika aturan peruteannya mengarahkan untuk melakukannya.

  • Antarmuka Tunnel (wg0): Antarmuka tunnel adalah perangkat jaringan virtual yang dibuat pada setiap sistem yang berpartisipasi. Semua lalu lintas terenkripsi masuk dan keluar melalui antarmuka ini. Dari perspektif sistem operasi, wg0 berperilaku seperti antarmuka jaringan standar, yang memungkinkan tabel routing, aturan firewall, dan perilaku forwarding normal untuk diterapkan.

Enkripsi, Autentikasi, dan Jabat Tangan

WireGuard menggunakan kriptografi kunci publik untuk mengautentikasi rekan dan mengenkripsi lalu lintas. Setiap rekan menghasilkan kunci pribadi jangka panjang yang tetap berada di sistem lokal dan tidak pernah dikirim. Kunci publik yang sesuai dibagikan dengan rekan lainnya dan ditambahkan ke konfigurasi mereka.

Saat komunikasi dimulai, WireGuard melakukan jabat tangan kriptografi otomatis secara diam-diam berdasarkan kerangka protokol Noise. Jabat tangan ini menetapkan kunci sesi sementara dan menyediakan Perfect Forward Secrecy. Kunci sesi ini diganti secara berkala tanpa intervensi pengguna.

WireGuard tidak menegosiasikan paket cipher, metode otentikasi, atau versi protokol. Semua primitif kriptografi ditentukan secara tetap oleh desain. Ini menghilangkan seluruh kelas kesalahan konfigurasi sekaligus tetap memberikan jaminan keamanan modern.

Pola Aliran Lalu Lintas yang Didukung

WireGuard mendukung beberapa pola lalu lintas tergantung pada bagaimana routing dan forwarding dikonfigurasi. Tutorial ini berfokus pada dua kasus penggunaan yang paling umum.

Akses Jaringan Peer-to-Peer atau Internal

Dalam konfigurasi peer-to-peer atau akses internal, lalu lintas hanya dienkripsi antara sistem yang merupakan bagian dari VPN. Peer pusat berfungsi sebagai titik akhir atau relay yang aman, tetapi tidak meneruskan lalu lintas ke jaringan eksternal.

Konfigurasi ini biasanya digunakan untuk mengakses layanan pribadi, mengelola infrastruktur, atau menghubungkan sistem yang terisolasi. Lalu lintas hanya dialihkan ke dalam tunnel ketika alamat tujuan cocok dengan rentang IP pribadi yang ditentukan dalam konfigurasi rekan.

Mode Gerbang VPN

Dalam mode gateway, peer pusat meneruskan lalu lintas dari peer lain ke jaringan eksternal, termasuk Internet publik. Peer mengirimkan sebagian atau seluruh lalu lintas mereka ke dalam terowongan, dan peer pusat mengarahkan lalu lintas itu lebih lanjut menggunakan penerusan IP dan translasi alamat jaringan.

Konfigurasi ini memerlukan pengaturan sistem tambahan, termasuk penerusan kernel dan aturan firewall. Ketika mode gateway diaktifkan, lalu lintas keluar dari rekan tampak berasal dari alamat IP publik rekan pusat.

Peran Ganda dari AllowedIPs

Direktif AllowedIPs memiliki dua tujuan berbeda dalam WireGuard.

Pertama, ini menentukan perilaku routing keluar. Ketika alamat tujuan paket cocok dengan entri di AllowedIPs, paket tersebut diarahkan melalui terowongan WireGuard.

Kedua, AllowedIPs berfungsi sebagai daftar kontrol akses masuk yang ketat. Ketika sebuah paket diterima dari rekan, WireGuard memeriksa alamat IP sumber paket tersebut. Jika alamat sumber tidak terdaftar dalam AllowedIPs rekan tersebut, paket akan segera dibuang.

Peran ganda ini disengaja dan merupakan salah satu sumber kesalahan konfigurasi yang paling umum. Routing yang benar saja tidak cukup. Alamat IP sumber yang diperbolehkan digunakan oleh rekan juga harus secara eksplisit diizinkan.

Otomasi Routing dan Alat Bantu

Modul kernel WireGuard itu sendiri tidak mengubah rute sistem, pengaturan DNS, atau aturan firewall. Modul ini hanya mengenkripsi dan mendekripsi paket serta mengaitkannya dengan rekan (peers).

Otomasi routing ditangani oleh alat bantu seperti wg-quick. Utilitas ini membaca file konfigurasi WireGuard dan menerapkan entri tabel routing, pengaturan DNS, serta aturan firewall yang diperlukan ketika sebuah tunnel dinyalakan atau dimatikan.

Jika WireGuard dikonfigurasi menggunakan alat alternatif seperti perintah wg mentah, systemd-networkd, atau skrip kustom, perubahan routing ini harus dikelola secara manual.

Pemisahan ini menjaga protokol inti tetap sederhana sambil memungkinkan integrasi yang fleksibel dengan berbagai tumpukan jaringan sistem.

Langkah 1 — Menginstal WireGuard dan Membuat Pasangan Kunci

Langkah pertama dalam tutorial ini adalah menginstal WireGuard di server Anda. Untuk memulai, perbarui indeks paket Server WireGuard Anda dan instal WireGuard menggunakan perintah berikut. Anda mungkin diminta untuk memasukkan kata sandi pengguna sudo Anda jika ini adalah pertama kalinya Anda menggunakan sudo dalam sesi ini:

sudo apt update

sudo apt install wireguard

Sekarang setelah Anda menginstal WireGuard, langkah berikutnya adalah membuat pasangan kunci privat dan publik untuk server. Anda akan menggunakan perintah bawaan wg genkey dan wg pubkey untuk membuat kunci, lalu menambahkan kunci privat ke file konfigurasi WireGuard.

Anda juga perlu mengubah izin pada kunci yang baru saja Anda buat menggunakan perintah chmod, karena secara default file tersebut dapat dibaca oleh pengguna mana pun di server Anda.

Buat kunci privat untuk WireGuard dan ubah izin aksesnya menggunakan perintah berikut:

wg genkey | sudo tee /etc/wireguard/private.key

sudo chmod go= /etc/wireguard/private.key

Perintah sudo chmod go=... menghapus semua izin pada file untuk pengguna dan grup selain pengguna root untuk memastikan bahwa hanya root yang dapat mengakses kunci privat tersebut.

Anda seharusnya menerima satu baris output yang dikodekan base64, yang merupakan kunci privat. Salinan output juga disimpan di file /etc/wireguard/private.key untuk referensi di masa mendatang oleh bagian tee dari perintah tersebut. Catat dengan cermat kunci privat yang dihasilkan karena Anda akan membutuhkannya untuk ditambahkan ke file konfigurasi WireGuard nanti di bagian ini.

Langkah berikutnya adalah membuat kunci publik yang sesuai, yang diturunkan dari kunci privat. Gunakan perintah berikut untuk membuat file kunci publik:

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Perintah ini terdiri dari tiga perintah individu yang digabungkan bersama menggunakan operator | (pipe):

  • sudo cat /etc/wireguard/private.key: perintah ini membaca file kunci privat dan menampilkannya ke aliran keluaran standar.
  • wg pubkey: perintah kedua mengambil output dari perintah pertama sebagai input standar dan memprosesnya untuk menghasilkan kunci publik.
  • sudo tee /etc/wireguard/public.key: perintah terakhir ini mengambil output dari perintah pembuatan kunci publik dan mengarahkannya ke file bernama /etc/wireguard/public.key.

Saat Anda menjalankan perintah, Anda akan kembali menerima satu baris output yang dikodekan base64, yang merupakan kunci publik untuk Server WireGuard Anda. Salinlah ke suatu tempat untuk referensi, karena Anda akan perlu mendistribusikan kunci publik tersebut ke setiap peer yang terhubung ke server.

Langkah 2 — Memilih Alamat IPv4 dan IPv6

Pada bagian sebelumnya, Anda telah menginstal WireGuard dan membuat pasangan kunci yang akan digunakan untuk mengenkripsi lalu lintas ke dan dari server. Pada bagian ini, Anda akan membuat file konfigurasi untuk server, dan mengatur WireGuard agar otomatis berjalan saat server Anda melakukan reboot. Anda juga akan menentukan alamat IPv4 dan IPv6 pribadi yang akan digunakan dengan Server dan rekan WireGuard Anda.

Jika Anda berencana menggunakan alamat IPv4 dan IPv6, ikuti kedua bagian ini. Jika tidak, ikuti petunjuk di bagian yang sesuai dengan kebutuhan jaringan VPN Anda.

Langkah 2(a) — Memilih Rentang IPv4

Jika Anda menggunakan server WireGuard dengan rekan IPv4, server membutuhkan rentang alamat IPv4 privat untuk digunakan oleh klien, dan untuk antarmuka tunnelnya. Anda dapat memilih rentang alamat IP apa pun dari blok alamat yang dicadangkan berikut ini (jika Anda ingin mempelajari lebih lanjut tentang bagaimana blok-blok ini dialokasikan, kunjungi spesifikasi RFC 1918):

  • 10.0.0.0 sampai 10.255.255.255 (prefix 10/8)
  • 172.16.0.0 hingga 172.31.255.255 (prefix 172.16/12)
  • 192.168.0.0 sampai 192.168.255.255 (prefix 192.168/16)

Untuk keperluan tutorial ini, kita akan menggunakan 10.8.0.0/24 sebagai blok alamat IP dari rentang IP yang dicadangkan pertama. Rentang ini memungkinkan hingga 255 koneksi peer yang berbeda, dan umumnya seharusnya tidak memiliki alamat yang tumpang tindih atau konflik dengan rentang IP pribadi lainnya. Silakan pilih rentang alamat yang sesuai dengan konfigurasi jaringan Anda jika rentang contoh ini tidak kompatibel dengan jaringan Anda.

Server WireGuard akan menggunakan satu alamat IP dari rentang untuk alamat IPv4 tunnel pribadinya. Kita akan menggunakan 10.8.0.1/24 di sini, tetapi alamat apa pun dalam rentang 10.8.0.1 hingga 10.8.0.255 dapat digunakan. Catat alamat IP yang Anda pilih jika Anda menggunakan sesuatu yang berbeda dari 10.8.0.1/24. Anda akan menambahkan alamat IPv4 ini ke file konfigurasi yang Anda buat dalam Membuat Konfigurasi Server WireGuard.

Langkah 2(b) — Memilih Rentang IPv6

Jika Anda menggunakan WireGuard dengan IPv6, maka Anda perlu menghasilkan awalan alamat unicast IPv6 lokal yang unik berdasarkan algoritma dalam RFC 4193. Alamat yang Anda gunakan dengan WireGuard akan terkait dengan antarmuka terowongan virtual. Anda perlu menyelesaikan beberapa langkah untuk menghasilkan awalan IPv6 acak dan unik di dalam blok fd00::/8 yang disisihkan untuk alamat IPv6 pribadi.

Menurut RFC, cara yang disarankan untuk mendapatkan prefix IPv6 unik adalah menggabungkan waktu saat ini dengan nilai pengenal unik dari sistem seperti nomor seri atau ID perangkat. Nilai-nilai tersebut kemudian di-hash dan dipangkas sehingga menghasilkan sekumpulan bit yang dapat digunakan sebagai alamat unik dalam blok fd00::/8 yang disediakan untuk IP privat.

Untuk memulai pembuatan rentang IPv6 untuk Server WireGuard Anda, kumpulkan stempel waktu 64-bit menggunakan utilitas date dengan perintah berikut:

date +%s%N

Anda akan menerima sebuah angka seperti berikut, yang merupakan jumlah detik (yaitu %s dalam perintah date), dan nanodetik (yaitu %N) sejak 1970-01-01 00:00:00 UTC yang digabungkan bersama:

1628101352127592197

Catat nilainya di suatu tempat untuk digunakan nanti di bagian ini. Selanjutnya, salin nilai machine-id untuk server Anda dari file /var/lib/dbus/machine-id. Identifikasi ini unik untuk sistem Anda dan seharusnya tidak berubah selama server tersebut ada.

cat /var/lib/dbus/machine-id

Anda akan menerima output seperti berikut:

/var/lib/dbus/machine-id
20086c25853947c7aeee2ca1ea849d7d

Sekarang Anda perlu menggabungkan timestamp dengan machine-id dan melakukan hash pada nilai yang dihasilkan menggunakan algoritma SHA-1. Perintahnya akan menggunakan format berikut:

printf <timestamp><machine-id> | sha1sum

Jalankan perintah dengan mengganti nilai timestamp dan identitas mesin Anda:

printf 162810135212759219720086c25853947c7aeee2ca1ea849d7d | sha1sum

Anda akan menerima nilai hash seperti berikut:

4f267c51857d6dc93a0bca107bca2f0d86fac3bc  -

Perlu diingat bahwa keluaran dari perintah sha1sum dalam bentuk heksadesimal, sehingga keluaran tersebut menggunakan dua karakter untuk merepresentasikan satu byte data. Misalnya 4f dan 26 dalam contoh keluaran adalah dua byte pertama dari data yang telah di-hash.

Algoritme dalam RFC hanya memerlukan 40 bit paling tidak signifikan (trailing), atau 5 byte, dari output hash. Gunakan perintah cut untuk mencetak 5 byte terakhir yang dikodekan dalam heksadesimal dari hash:

printf 4f267c51857d6dc93a0bca107bca2f0d86fac3bc | cut -c 31-

Argumen -c memberi tahu perintah cut untuk memilih hanya serangkaian karakter tertentu. Argumen 31- memberi tahu cut untuk mencetak semua karakter dari posisi 31 hingga akhir baris input.

Anda seharusnya menerima keluaran seperti berikut:

0d86fac3bc

Dalam keluaran contoh ini, kumpulan byte tersebut adalah: 0d 86 fa c3 bc.

Sekarang Anda dapat membangun prefix jaringan IPv6 unik Anda dengan menambahkan 5 byte yang telah Anda buat dengan prefix fd, memisahkan setiap 2 byte dengan tanda titik dua : untuk memudahkan pembacaan. Karena setiap subnet dalam prefix unik Anda dapat menampung total 18.446.744.073.709.551.616 alamat IPv6, Anda dapat membatasi subnet ke ukuran standar /64 untuk kesederhanaan.

Menggunakan byte yang sebelumnya dihasilkan dengan ukuran subnet /64, prefix yang dihasilkan akan sebagai berikut:

Unique Local IPv6 Address Prefix
fd0d:86fa:c3bc::/64

Rentang fd0d:86fa:c3bc::/64 inilah yang akan Anda gunakan untuk menetapkan alamat IP individual ke antarmuka tunnel WireGuard Anda di server dan peer. Untuk mengalokasikan IP untuk server, tambahkan 1 setelah karakter :: terakhir. Alamat yang dihasilkan akan menjadi fd0d:86fa:c3bc::1/64. Peer dapat menggunakan IP apa pun dalam rentang ini, tetapi biasanya nilai akan ditingkatkan satu per satu setiap kali Anda menambahkan peer, misalnya fd0d:86fa:c3bc::2/64. Catat IP tersebut dan lanjutkan mengonfigurasi Server WireGuard pada bagian berikutnya dari tutorial ini.

Pertimbangan Konfigurasi IPv6 dan Dual-Stack

Langkah-langkah yang ada dalam tutorial ini menjelaskan cara menghasilkan alamat IPv6 dan menugaskannya ke antarmuka WireGuard. Namun, perilaku IPv6 di WireGuard berbeda dalam beberapa cara penting dari IPv4, terutama ketika WireGuard digunakan sebagai gateway VPN. Memahami perbedaan ini membantu mencegah kegagalan routing, tunneling parsial, dan kebocoran IPv6 yang umum.

Dukungan IPv6 di WireGuard

WireGuard mendukung IPv6 sebagai protokol kelas utama. Lalu lintas IPv6 dienkripsi, diautentikasi, dan dirutekan menggunakan mekanisme yang sama seperti lalu lintas IPv4. Tidak ada mode IPv6 terpisah atau flag konfigurasi tambahan. Jika alamat IPv6 diberikan pada antarmuka tunnel dan aturan routing mengizinkannya, lalu lintas IPv6 akan mengalir melalui tunnel secara otomatis.

Tidak seperti IPv4, IPv6 dirancang untuk menghindari NAT dengan menggunakan alamat yang dapat dirutekan secara global, tetapi dalam praktiknya banyak lingkungan VPN dan cloud masih menggunakan NAT untuk kesederhanaan operasional. Namun, perilaku ini tergantung pada lingkungan jaringan. Dalam banyak pengaturan gateway VPN, seperti instance VPS cloud atau router rumah, server tidak menerima prefiks IPv6 yang didelegasikan yang dapat dirutekan ke rekan VPN.

Dalam skenario umum ini, rekan biasa diberikan alamat IPv6 pribadi, biasanya dari rentang Unique Local Address (ULA). Ketika alamat IPv6 pribadi digunakan dan server tidak memiliki prefix yang dapat dirutekan untuk mereka, penyamaran IPv6 masih diperlukan. Ini biasanya diimplementasikan dengan aturan ip6tables -t nat, mirip dengan penyamaran IPv4, untuk memungkinkan rekan VPN mengakses Internet publik.

IPv6 dapat sepenuhnya menghindari NAT ketika delegasi awalan yang tepat tersedia. Namun, sebagian besar penerapan gateway VPN sederhana masih mengandalkan penyamaran IPv6 untuk menjaga agar routing tetap dapat dikelola.

Penjelasan Perilaku Dual-Stack

Konfigurasi dual-stack memungkinkan kedua IPv4 dan IPv6 pada antarmuka WireGuard yang sama. Dalam pengaturan ini, antarmuka wg0 diberi satu alamat IPv4 dan satu alamat IPv6, dan masing-masing protokol diarahkan secara independen.

Sistem operasi mengevaluasi rute IPv4 dan IPv6 secara terpisah. Satu perangkat bisa berhasil mengarahkan lalu lintas IPv4 melalui terowongan sementara lalu lintas IPv6 melewatinya, atau sebaliknya. Perilaku ini diharapkan dan hampir selalu menunjukkan masalah konfigurasi daripada masalah dengan WireGuard itu sendiri.

Agar routing dual-stack berfungsi dengan benar, beberapa kondisi harus dipenuhi. Baik server maupun peer harus memiliki alamat IPv4 dan IPv6 yang ditugaskan pada antarmuka WireGuard mereka. Direktif AllowedIPs harus mencakup rentang IPv4 dan IPv6. Penerusan IP harus diaktifkan secara terpisah untuk IPv4 dan IPv6. Aturan firewall harus mengizinkan penerusan dan lalu lintas kembali untuk kedua protokol.

Penetapan Alamat dan Panjang Prefiks

Untuk IPv4, penerapan WireGuard biasanya menggunakan rentang alamat pribadi seperti 10.0.0.0/8 atau 192.168.0.0/16. Setiap peer biasanya diberikan satu alamat IPv4.

Untuk IPv6, umum untuk mendefinisikan jaringan VPN sebagai prefix /64, seperti fd00::/64. Sementara jaringan Ethernet memerlukan /64 untuk penemuan tetangga dan konfigurasi alamat otomatis, WireGuard beroperasi sebagai antarmuka point-to-point Layer 3 dan tidak menggunakan mekanisme ini.

Karena hal ini, aman dan sering disarankan untuk memberikan setiap peer alamat IPv6 /128, seperti fd00::2/128. Menggunakan alamat /128 memastikan perilaku routing yang ketat dan mencegah peer mencoba berkomunikasi langsung dengan alamat lain dalam subnet tanpa aturan routing yang tepat.

Menetapkan jaringan sebagai /64 sambil memberikan alamat /128 kepada peer memberikan kejelasan dan menghindari routing yang ambigu.

Mengarahkan Semua Lalu Lintas dengan IPv6

Ketika WireGuard dikonfigurasi sebagai gateway VPN, lalu lintas IPv6 harus diarahkan secara eksplisit dengan cara yang sama seperti lalu lintas IPv4.

Untuk IPv4, pengiriman semua lalu lintas menggunakan prefiks 0.0.0.0/0. Untuk IPv6, prefiks yang setara adalah ::/0. Kedua prefiks harus disertakan jika tujuannya adalah untuk mengarahkan semua lalu lintas melalui VPN.

Jika hanya 0.0.0.0/0 yang dikonfigurasi, lalu lintas IPv4 dikirim melalui VPN sementara lalu lintas IPv6 tetap menggunakan antarmuka jaringan lokal. Situasi ini dikenal sebagai kebocoran IPv6. Hal ini biasanya mengakibatkan permintaan DNS, lalu lintas web, atau koneksi aplikasi melewati VPN melalui IPv6 sementara lalu lintas IPv4 tetap terlindungi.

Kebocoran IPv6 sering menjadi sumber kebingungan dan harus selalu diuji ketika jaringan dual-stack diaktifkan.

Firewall, Penerusan, dan ICMPv6

Penerusan IPv6 harus diaktifkan secara terpisah dari penerusan IPv4. Mengaktifkan salah satunya tidak secara otomatis mengaktifkan yang lain. Kedua pengaturan diperlukan saat mengarahkan lalu lintas antar antarmuka.

Aturan firewall juga harus ditentukan secara eksplisit untuk IPv6. Alat seperti ufw, iptables, dan nftables memperlakukan IPv4 dan IPv6 sebagai set aturan yang terpisah. Aturan IPv6 yang hilang dapat diam-diam memblokir lalu lintas meskipun konektivitas IPv4 tampak berfungsi.

Sangat penting untuk mengizinkan lalu lintas ICMPv6. Berbeda dengan IPv4, IPv6 bergantung pada ICMPv6 untuk fungsi penting seperti Penemuan Path MTU. Jika ICMPv6 diblokir, koneksi bisa macet atau gagal ketika paket yang lebih besar dikirim, meskipun paket kecil tampak bekerja.

Kesalahan Umum pada Dual-Stack

Beberapa masalah biasa terjadi pada penerapan WireGuard dual-stack. Rute IPv6 mungkin hilang dari direktif AllowedIPs, menyebabkan lalu lintas IPv6 melewati tunnel. Penerusan IPv6 mungkin tidak diaktifkan di server, sehingga mencegah lalu lintas keluar dari antarmuka tunnel. Aturan firewall mungkin mengizinkan lalu lintas IPv4 tetapi memblokir lalu lintas IPv6 atau ICMPv6. Resolver DNS mungkin mengembalikan alamat IPv6 meskipun routing IPv6 tidak dikonfigurasi dengan benar.

Masalah ini sering muncul sebagai kegagalan yang bersifat sementara dan sering salah didiagnosis sebagai masalah aplikasi atau protokol.

Memilih Antara IPv4-Saja, IPv6-Saja, dan Dual-Stack

Di beberapa lingkungan, menggunakan satu protokol mempermudah operasi.

Penerapan IPv4 saja lebih mudah diintegrasikan dengan sistem dan alat lama. Penerapan IPv6 saja menghapus kebutuhan akan NAT IPv4 dan menghindari kehabisan alamat, tetapi membutuhkan dukungan IPv6 yang konsisten dari penyedia dan jaringan klien.

Penerapan dual-stack memberikan fleksibilitas terbesar tetapi juga memerlukan perencanaan, konfigurasi, dan validasi yang paling cermat.

Langkah 3 — Membuat Konfigurasi Server WireGuard

Sebelum membuat konfigurasi Server WireGuard Anda, Anda akan memerlukan informasi berikut:

  • Pastikan bahwa Anda memiliki kunci privat yang tersedia dari Instalasi WireGuard dan Pembuatan Pasangan Kunci.
  • Jika Anda menggunakan WireGuard dengan IPv4, Anda akan memerlukan alamat IP yang Anda pilih untuk server di Memilih Rentang IPv4, yang dalam contoh ini adalah 10.8.0.1/24.
  • Jika Anda menggunakan WireGuard dengan IPv6, Anda akan memerlukan alamat IP untuk server yang Anda buat di Memilih Rentang IPv6. Dalam contoh ini, IP-nya adalah fd0d:86fa:c3bc::1/64.

Setelah Anda memiliki kunci pribadi yang diperlukan dan alamat IP, buat file konfigurasi baru menggunakan nano atau editor pilihan Anda dengan menjalankan perintah berikut:

sudo nano /etc/wireguard/wg0.conf

Tambahkan baris berikut ke file, menggantikan kunci pribadi Anda di tempat nilai base64_encoded_private_key_goes_here yang disorot, dan alamat IP pada baris Address. Anda juga dapat mengubah baris ListenPort jika ingin WireGuard tersedia di port yang berbeda:

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_private_key_goes_here Address = 10.8.0.1/24, fd0d:86fa:c3bc::1/64 ListenPort = 51820 SaveConfig = true

Baris SaveConfig memastikan bahwa ketika antarmuka WireGuard dimatikan, setiap perubahan akan disimpan ke file konfigurasi.

Simpan dan tutup file /etc/wireguard/wg0.conf. Jika Anda menggunakan nano, Anda bisa melakukannya dengan CTRL+X, kemudian Y dan ENTER untuk mengonfirmasi. Sekarang Anda memiliki konfigurasi server awal yang dapat Anda kembangkan tergantung bagaimana Anda berencana menggunakan server VPN WireGuard Anda.

Langkah 4 — Menyesuaikan Konfigurasi Jaringan Server WireGuard

Jika Anda menggunakan WireGuard untuk menghubungkan peer ke Server WireGuard untuk mengakses layanan di server saja, maka Anda tidak perlu menyelesaikan bagian ini. Jika Anda ingin mengarahkan lalu lintas Internet Peer WireGuard Anda melalui Server WireGuard, maka Anda perlu mengonfigurasi penerusan IP dengan mengikuti bagian tutorial ini.

Untuk mengonfigurasi penerusan, buka file /etc/sysctl.conf menggunakan nano atau editor pilihan Anda:

sudo nano /etc/sysctl.conf

Jika Anda menggunakan IPv4 dengan WireGuard, tambahkan baris berikut di bagian bawah file:

net.ipv4.ip_forward=1

Jika Anda menggunakan IPv6 dengan WireGuard, tambahkan baris ini di bagian bawah file:

net.ipv6.conf.all.forwarding=1

Jika Anda menggunakan IPv4 dan IPv6, pastikan Anda menyertakan kedua baris tersebut. Simpan dan tutup file setelah selesai.

Untuk membaca file dan memuat nilai baru untuk sesi terminal Anda saat ini, jalankan:

sudo sysctl -p
net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1

Sekarang Server WireGuard Anda akan dapat meneruskan lalu lintas yang masuk dari perangkat ethernet VPN virtual ke perangkat lain di server, dan dari sana ke Internet publik. Menggunakan konfigurasi ini akan memungkinkan Anda untuk merutekan semua lalu lintas web dari Peer WireGuard Anda melalui alamat IP server Anda, dan alamat IP publik klien Anda akan secara efektif tersembunyi.

Namun, sebelum lalu lintas dapat dialihkan melalui server Anda dengan benar, Anda perlu mengonfigurasi beberapa aturan firewall. Aturan-aturan ini akan memastikan bahwa lalu lintas ke dan dari Server serta Peers WireGuard Anda mengalir dengan semestinya.

Langkah 5 — Mengonfigurasi Firewall Server WireGuard

Dalam bagian ini Anda akan mengedit konfigurasi Server WireGuard untuk menambahkan aturan firewall yang akan memastikan lalu lintas ke dan dari server serta klien dialihkan dengan benar. Seperti pada bagian sebelumnya, lewati langkah ini jika Anda hanya menggunakan VPN WireGuard untuk koneksi mesin ke mesin untuk mengakses sumber daya yang dibatasi pada VPN Anda.

Untuk memungkinkan lalu lintas WireGuard VPN melewati firewall Server, Anda perlu mengaktifkan masquerading, yang merupakan konsep iptables yang menyediakan terjemahan alamat jaringan dinamis (NAT) secara langsung untuk mengarahkan koneksi klien dengan benar.

Pertama, temukan antarmuka jaringan publik dari Server WireGuard Anda menggunakan sub-perintah ip route:

ip route list default

Antarmuka publik adalah string yang ditemukan dalam keluaran perintah ini yang mengikuti kata "dev ". Misalnya, hasil ini menunjukkan antarmuka bernama eth0, yang disorot di bawah ini:

default via 203.0.113.1 dev eth0 proto static

Catat nama perangkat Anda karena Anda akan menambahkannya ke aturan iptables pada langkah berikutnya.

Untuk menambahkan aturan firewall ke Server WireGuard Anda, buka file /etc/wireguard/wg0.conf dengan nano atau editor pilihan Anda kembali.

sudo nano /etc/wireguard/wg0.conf

Di bagian bawah file setelah baris SaveConfig=true, tempelkan baris berikut:

/etc/wireguard/wg0.conf
. . . PostUp = ufw route allow in on wg0 out on eth0 PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PreDown = ufw route delete allow in on wg0 out on eth0 PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Baris PostUp akan dijalankan saat Server WireGuard memulai terowongan VPN virtual. Dalam contoh di sini, ini akan menambahkan tiga aturan ufw dan iptables:

  • ufw route allow in on wg0 out on eth0: Aturan ini akan memungkinkan penerusan lalu lintas IPv4 dan IPv6 yang masuk melalui antarmuka VPN wg0 ke antarmuka jaringan eth0 pada server. Ini bekerja bersamaan dengan nilai sysctl net.ipv4.ip_forward dan net.ipv6.conf.all.forwarding yang telah Anda konfigurasikan di bagian sebelumnya.
  • iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE: Aturan ini mengonfigurasi masquerading, dan menulis ulang lalu lintas IPv4 yang masuk melalui antarmuka VPN wg0 agar terlihat seolah-olah berasal langsung dari alamat IPv4 publik Server WireGuard.
  • ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE: Aturan ini mengonfigurasi masquerading, dan menulis ulang lalu lintas IPv6 yang masuk melalui antarmuka VPN wg0 agar terlihat seolah berasal langsung dari alamat IPv6 publik Server WireGuard.

Catatan: Masquerading IPv6 membutuhkan dukungan kernel untuk ip6table_nat. Pada beberapa distribusi atau citra cloud, modul ini tidak tersedia atau tidak diaktifkan secara default. Dalam kasus tersebut, Anda harus menggunakan routing IPv6 yang tepat dengan prefix yang didelegasikan sebagai pengganti NAT, dan mengumumkan prefix IPv6 yang dapat dirutekan ke rekan alih-alih menggunakan alamat ULA.

Aturan PreDown dijalankan ketika Server WireGuard menghentikan tunnel VPN virtual. Aturan ini merupakan kebalikan dari aturan PostUp, dan berfungsi untuk membatalkan aturan penerusan dan penyamaran untuk antarmuka VPN ketika VPN dihentikan.

Dalam kedua kasus, sunting konfigurasi untuk menyertakan atau mengecualikan aturan IPv4 dan IPv6 yang sesuai untuk VPN Anda. Misalnya, jika Anda hanya menggunakan IPv4, maka Anda dapat mengecualikan baris dengan perintah ip6tables.

Sebaliknya, jika Anda hanya menggunakan IPv6, maka edit konfigurasi untuk hanya menyertakan perintah ip6tables. Baris ufw harus ada untuk kombinasi jaringan IPv4 dan IPv6. Simpan dan tutup file ketika Anda selesai.

Bagian terakhir dari mengonfigurasi firewall di Server WireGuard Anda adalah mengizinkan lalu lintas ke dan dari port UDP WireGuard itu sendiri. Jika Anda tidak mengubah port di file /etc/wireguard/wg0.conf server, port yang akan Anda buka adalah 51820. Jika Anda memilih port yang berbeda saat mengedit konfigurasi, pastikan untuk menggantinya dalam perintah UFW berikut.

Jika Anda lupa membuka port SSH saat mengikuti tutorial prasyarat, tambahkan di sini juga:

sudo ufw allow 51820/udp

sudo ufw allow OpenSSH

Catatan: Jika Anda menggunakan firewall yang berbeda atau telah menyesuaikan konfigurasi UFW Anda, mungkin Anda perlu menambahkan aturan firewall tambahan. Misalnya, jika Anda memutuskan untuk menyalurkan semua lalu lintas jaringan melalui koneksi VPN, Anda perlu memastikan bahwa lalu lintas port 53 diizinkan untuk permintaan DNS, dan port seperti 80 dan 443 untuk lalu lintas HTTP dan HTTPS masing-masing. Jika ada protokol lain yang Anda gunakan melalui VPN, maka Anda juga perlu menambahkan aturan untuk itu.

Setelah menambahkan aturan-aturan tersebut, nonaktifkan dan aktifkan kembali UFW untuk me-restart dan memuat perubahan dari semua file yang telah Anda ubah:

sudo ufw disable

sudo ufw enable

Anda dapat memastikan aturan sudah diterapkan dengan menjalankan perintah ufw status. Jalankan perintah tersebut, dan Anda seharusnya menerima output seperti berikut:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
51820/udp                  ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
51820/udp (v6)             ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)

Server WireGuard Anda sekarang telah dikonfigurasi untuk menangani lalu lintas VPN dengan benar, termasuk penerusan dan penyamaran untuk peer. Dengan aturan firewall yang sudah diterapkan, Anda dapat memulai layanan WireGuard itu sendiri untuk mendengarkan koneksi dari peer.

Langkah 6 — Memulai Server WireGuard

WireGuard dapat dikonfigurasi untuk dijalankan sebagai layanan systemd menggunakan skrip bawaan wg-quick. Meskipun Anda bisa secara manual menggunakan perintah wg untuk membuat tunel setiap kali ingin menggunakan VPN, cara ini merupakan proses manual yang menjadi berulang dan rentan terhadap kesalahan. Sebagai gantinya, Anda dapat menggunakan systemctl untuk mengelola tunel dengan bantuan skrip wg-quick.

Menggunakan layanan systemd berarti Anda dapat mengonfigurasi WireGuard agar mulai saat boot sehingga Anda bisa terhubung ke VPN kapan saja selama server berjalan. Untuk melakukan ini, aktifkan layanan wg-quick untuk tunnel wg0 yang telah Anda definisikan dengan menambahkannya ke systemctl:

sudo systemctl enable wg-quick@wg0.service

Perhatikan bahwa perintah tersebut menentukan nama perangkat terowongan wg0 sebagai bagian dari nama layanan. Nama ini dipetakan ke file konfigurasi /etc/wireguard/wg0.conf. Pendekatan penamaan ini berarti Anda dapat membuat sebanyak mungkin terowongan VPN terpisah sesuai keinginan menggunakan server Anda.

Sebagai contoh, Anda bisa memiliki perangkat terowongan dengan nama prod dan file konfigurasi-nya adalah /etc/wireguard/prod.conf. Setiap konfigurasi terowongan dapat berisi pengaturan IPv4, IPv6, dan firewall klien yang berbeda. Dengan cara ini, Anda dapat mendukung beberapa koneksi peer yang berbeda, masing-masing dengan alamat IP dan aturan routing uniknya sendiri.

Sekarang mulai layanan:

sudo systemctl start wg-quick@wg0.service

Periksa kembali bahwa layanan WireGuard aktif dengan perintah berikut. Anda seharusnya melihat layanan tercantum sebagai aktif. Perlu dicatat bahwa wg-quick keluar setelah mengonfigurasi antarmuka, jadi active (exited) adalah normal.

sudo systemctl status wg-quick@wg0.service
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2021-08-25 15:24:14 UTC; 5s ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 3245 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 3245 (code=exited, status=0/SUCCESS)

Aug 25 15:24:14 wg0 wg-quick[3245]: [#] wg setconf wg0 /dev/fd/63
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -4 address add 10.8.0.1/24 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -6 address add fd0d:86fa:c3bc::1/64 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip link set mtu 1420 up dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ufw route allow in on wg0 out on eth0
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added (v6)
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

Output menampilkan perintah ip yang digunakan untuk membuat perangkat virtual wg0 dan menetapkan alamat IPv4 serta IPv6 yang Anda tambahkan ke file konfigurasi. Anda dapat menggunakan aturan ini untuk memecahkan masalah tunnel, atau menggunakan perintah wg itu sendiri jika Anda ingin mencoba mengonfigurasi antarmuka VPN secara manual.

Dengan server yang telah dikonfigurasi dan berjalan, langkah berikutnya adalah mengonfigurasi mesin klien Anda sebagai Peer WireGuard dan terhubung ke Server WireGuard.

Langkah 7 — Mengonfigurasi Peer WireGuard

Mengonfigurasi Peer WireGuard mirip dengan menyiapkan Server WireGuard. Setelah Anda menginstal perangkat lunak klien, Anda akan menghasilkan sepasang kunci publik dan privat, menentukan alamat IP untuk peer, membuat file konfigurasi untuk peer, dan kemudian memulai tunnel menggunakan skrip wg-quick.

Anda dapat menambahkan sebanyak mungkin rekan ke VPN Anda dengan membuat pasangan kunci dan konfigurasi menggunakan langkah-langkah berikut. Jika Anda menambahkan beberapa rekan ke VPN, pastikan untuk mencatat alamat IP pribadi mereka untuk menghindari bentrokan.

Untuk mengonfigurasi Peer WireGuard, pastikan bahwa Anda telah menginstal paket WireGuard menggunakan perintah apt berikut. Jalankan di Peer WireGuard:

sudo apt update

sudo apt install wireguard

Membuat Pasangan Kunci Peer WireGuard

Selanjutnya, Anda perlu menghasilkan pasangan kunci di peer menggunakan langkah-langkah yang sama seperti yang Anda gunakan di server. Dari mesin lokal Anda atau server jarak jauh yang akan berperan sebagai peer, lanjutkan dan buat kunci privat untuk peer menggunakan perintah berikut:

wg genkey | sudo tee /etc/wireguard/private.key

sudo chmod go= /etc/wireguard/private.key

Sekali lagi Anda akan menerima satu baris output yang dikodekan base64, yang merupakan kunci privat. Salinan dari output ini juga disimpan di /etc/wireguard/private.key. Perhatikan dengan seksama kunci privat yang ditampilkan karena Anda akan membutuhkannya untuk ditambahkan ke file konfigurasi WireGuard nanti di bagian ini.

Selanjutnya gunakan perintah berikut untuk membuat file kunci publik:

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Anda akan menerima kembali satu baris output yang dikodekan dengan base64, yang merupakan kunci publik untuk Peer WireGuard Anda. Salin ke suatu tempat sebagai referensi, karena Anda perlu mendistribusikan kunci publik tersebut ke Server WireGuard untuk membangun koneksi yang terenkripsi.

Membuat File Konfigurasi Peer WireGuard

Sekarang setelah Anda memiliki sepasang kunci, Anda dapat membuat file konfigurasi untuk peer yang berisi semua informasi yang dibutuhkan untuk membuat koneksi ke Server WireGuard.

Anda akan memerlukan beberapa informasi untuk file konfigurasi:

  • Kunci pribadi yang dikodekan base64 yang Anda hasilkan pada peer.
  • Rentang alamat IPv4 dan IPv6 yang Anda tentukan di Server WireGuard.
  • Kunci publik yang dikodekan base64 dari Server WireGuard.
  • Alamat IP publik dan nomor port dari Server WireGuard. Biasanya ini akan menjadi alamat IPv4, tetapi jika server Anda memiliki alamat IPv6 dan mesin klien Anda memiliki koneksi IPv6 ke internet, Anda dapat menggunakan ini sebagai pengganti IPv4.

Dengan semua informasi ini di tangan, buka file /etc/wireguard/wg0.conf baru di mesin Peer WireGuard menggunakan nano atau editor favorit Anda:

sudo nano /etc/wireguard/wg0.conf

Tambahkan baris berikut ke file, mengganti data yang sesuai di bagian yang disorot sesuai kebutuhan:

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_peer_private_key_goes_here Address = 10.8.0.2/24 Address = fd0d:86fa:c3bc::2/64 [Peer] PublicKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= AllowedIPs = 10.8.0.0/24, fd0d:86fa:c3bc::/64 Endpoint = 203.0.113.1:51820

Perhatikan bagaimana baris Address pertama menggunakan alamat IPv4 dari subnet 10.8.0.0/24 yang Anda pilih sebelumnya. Alamat IP ini bisa apa saja dalam subnet selama berbeda dari IP server. Menambahkan alamat dengan menaikkan 1 setiap kali Anda menambahkan peer umumnya adalah cara termudah untuk mengalokasikan IP.

Demikian juga, perhatikan bagaimana baris Address kedua menggunakan alamat IPv6 dari subnet yang Anda buat sebelumnya, dan menambah alamat server sebesar satu. Sekali lagi, setiap IP dalam jangkauan tersebut valid jika Anda memutuskan untuk menggunakan alamat yang berbeda.

Bagian penting lain dari file ini adalah baris AllowedIPs terakhir. Dua rentang IPv4 dan IPv6 ini memberi instruksi kepada peer untuk hanya mengirim lalu lintas melalui VPN jika sistem tujuan memiliki alamat IP dalam salah satu rentang tersebut. Dengan menggunakan direktif AllowedIPs, Anda dapat membatasi VPN pada peer untuk hanya terhubung ke peer dan layanan lain di VPN, atau Anda dapat mengatur pengaturan ini untuk menyalurkan semua lalu lintas melalui VPN dan menggunakan Server WireGuard sebagai gateway.

Jika Anda hanya menggunakan IPv4, maka hilangkan rentang fd0d:86fa:c3bc::/64 yang diakhiri (termasuk , koma). Sebaliknya, jika Anda hanya menggunakan IPv6, maka sertakan hanya prefiks fd0d:86fa:c3bc::/64 dan jangan sertakan rentang IPv4 10.8.0.0/24.

Dalam kedua kasus, jika Anda ingin mengirim semua trafik rekan Anda melalui VPN dan menggunakan Server WireGuard sebagai gateway untuk semua trafik, maka Anda dapat menggunakan 0.0.0.0/0, yang mewakili seluruh ruang alamat IPv4, dan ::/0 untuk seluruh ruang alamat IPv6.

(Opsional) Mengonfigurasi Rekan untuk Mengarahkan Semua Lalu Lintas Melalui Terowongan

Jika Anda memilih untuk mengarahkan semua lalu lintas rekan melalui terowongan menggunakan rute 0.0.0.0/0 atau ::/0 dan rekan tersebut adalah sistem jarak jauh, maka Anda perlu menyelesaikan langkah-langkah di bagian ini. Jika rekan Anda adalah sistem lokal, maka sebaiknya lewati bagian ini.

Untuk rekan jarak jauh yang Anda akses melalui SSH atau protokol lain menggunakan alamat IP publik, Anda perlu menambahkan beberapa aturan tambahan ke file wg0.conf rekan tersebut. Aturan ini akan memastikan bahwa Anda masih dapat terhubung ke sistem dari luar terowongan ketika terhubung. Jika tidak, saat terowongan dibuat, semua lalu lintas yang biasanya ditangani di antarmuka jaringan publik tidak akan dialihkan dengan benar untuk melewati antarmuka terowongan wg0, sehingga sistem jarak jauh menjadi tidak dapat diakses.

Pertama, Anda perlu menentukan alamat IP yang digunakan sistem sebagai gateway default-nya. Jalankan perintah ip route berikut:

ip route list table main default

Anda akan menerima output seperti berikut:

default via 203.0.113.1 dev eth0 proto static

Catat alamat IP gateway yang disorot 203.0.113.1 untuk digunakan nanti, dan perangkat eth0. Nama perangkat Anda mungkin berbeda. Jika demikian, gantilah dengan nama perangkat Anda di tempat eth0 dalam perintah berikut.

Selanjutnya temukan IP publik untuk sistem dengan memeriksa perangkat menggunakan perintah ip address show:

ip -brief address show eth0

Anda akan menerima output seperti berikut:

eth0             UP             203.0.113.5/20 10.20.30.40/16 2604:a880:400:d1::3d3:6001/64 fe80::68d5:beff:feff:974c/64

Dalam contoh output ini, alamat IP 203.0.113.5 yang disorot (tanpa /20 di belakangnya) adalah alamat publik yang ditetapkan ke perangkat eth0 yang perlu Anda tambahkan ke konfigurasi WireGuard.

Sekarang buka file /etc/wireguard/wg0.conf dari WireGuard Peer dengan nano atau editor favorit Anda.

sudo nano /etc/wireguard/wg0.conf

Sebelum baris [Peer], tambahkan 4 baris berikut:

PostUp = ip rule add table 200 from 203.0.113.5
PostUp = ip route add table 200 default via 203.0.113.1
PreDown = ip rule delete table 200 from 203.0.113.5
PreDown = ip route delete table 200 default via 203.0.113.1

[Peer]
. . .

Baris-baris ini akan membuat aturan routing kustom, dan menambahkan rute kustom untuk memastikan bahwa lalu lintas publik ke sistem menggunakan gateway default.

  • PostUp=ip rule add table 200 from 203.0.113.5 - Perintah ini membuat aturan yang memeriksa setiap entri routing di tabel bernomor 200 ketika IP cocok dengan alamat publik sistem 203.0.113.5.
  • PostUp=ip route add table 200 default via 203.0.113.1 - Perintah ini memastikan bahwa setiap lalu lintas yang diproses oleh tabel 200 akan menggunakan gateway 203.0.113.1 untuk routing, alih-alih menggunakan antarmuka WireGuard.

Baris PreDown menghapus aturan dan rute kustom saat terowongan dimatikan.

Catatan: Nomor tabel 200 bersifat sewenang-wenang saat menyusun aturan ini. Anda dapat menggunakan nilai antara 2 hingga 252, atau Anda dapat menggunakan nama khusus dengan menambahkan label ke file /etc/iproute2/rt_tables dan kemudian merujuk pada nama tersebut daripada menggunakan nilai numerik.

Untuk informasi lebih lanjut tentang cara kerja tabel routing di Linux, kunjungi Bagian Tabel Routing dari Panduan Administrasi Jaringan Lapisan IP dengan Linux.

Jika Anda mengarahkan semua lalu lintas peer melalui VPN, pastikan Anda telah mengonfigurasi sysctl dan aturan iptables yang benar pada Server WireGuard di Menyesuaikan Konfigurasi Jaringan Server WireGuard dan Mengonfigurasi Firewall Server WireGuard.

(Opsional) Mengonfigurasi Resolver DNS Peer WireGuard

Jika Anda menggunakan Server WireGuard sebagai gateway VPN untuk semua lalu lintas peer Anda, Anda perlu menambahkan baris ke bagian [Interface] yang menentukan resolver DNS. Jika Anda tidak menambahkan pengaturan ini, maka permintaan DNS Anda mungkin tidak terlindungi oleh VPN, atau bisa saja terungkap ke Penyedia Layanan Internet Anda atau pihak ketiga lainnya.

Jika Anda hanya menggunakan WireGuard untuk mengakses sumber daya di jaringan VPN atau dalam konfigurasi peer-to-peer, maka Anda dapat melewati bagian ini.

Untuk menambahkan resolver DNS ke konfigurasi rekan Anda, pertama tentukan server DNS mana yang digunakan oleh Server WireGuard Anda. Jalankan perintah berikut di Server WireGuard, menggantikan nama perangkat ethernet Anda dengan eth0 jika berbeda dari contoh ini:

resolvectl dns eth0

Anda seharusnya menerima keluaran seperti berikut:

Link 2 (eth0): 67.207.67.2 67.207.67.3 2001:4860:4860::8844 2001:4860:4860::8888

Alamat IP yang ditampilkan adalah resolver DNS yang digunakan oleh server. Anda dapat memilih untuk menggunakan salah satu atau semuanya, atau hanya IPv4 atau IPv6 tergantung kebutuhan Anda. Catat resolver yang akan Anda gunakan.

Selanjutnya, Anda perlu menambahkan resolver pilihan Anda ke file konfigurasi Peer WireGuard. Kembali ke WireGuard Peer, buka file /etc/wireguard/wg0.conf menggunakan nano atau editor favorit Anda:

sudo nano /etc/wireguard/wg0.conf

Sebelum baris [Peer], tambahkan yang berikut ini:

DNS = 67.207.67.2 2001:4860:4860::8844

[Peer]
. . .

Sekali lagi, tergantung pada preferensi atau kebutuhan Anda untuk IPv4 dan IPv6, Anda dapat mengedit daftar sesuai dengan kebutuhan Anda.

Setelah Anda terhubung ke VPN pada langkah berikutnya, Anda dapat memeriksa apakah Anda mengirimkan kueri DNS melalui VPN dengan menggunakan situs seperti DNS leak test.

Anda juga dapat memeriksa bahwa rekan Anda menggunakan resolver yang dikonfigurasi dengan perintah resolvectl dns seperti yang Anda jalankan di server. Anda seharusnya menerima output seperti berikut, yang menunjukkan resolver DNS yang telah Anda konfigurasikan untuk terowongan VPN:

Global: 67.207.67.2 67.207.67.3
. . .

Dengan semua pengaturan resolver DNS ini sudah diterapkan, Anda sekarang siap untuk menambahkan kunci publik peer ke server, dan kemudian memulai tunnel WireGuard pada peer.

Langkah 8 — Menambahkan Kunci Publik Rekan ke Server WireGuard

Sebelum menghubungkan peer ke server, penting untuk menambahkan kunci publik peer ke Server WireGuard. Langkah ini memastikan bahwa Anda akan dapat terhubung dan mengalirkan lalu lintas melalui VPN. Tanpa menyelesaikan langkah ini, server WireGuard tidak akan mengizinkan peer untuk mengirim atau menerima lalu lintas apa pun melalui tunnel.

Pastikan Anda memiliki salinan kunci publik yang dienkode base64 untuk WireGuard Peer dengan menjalankan:

sudo cat /etc/wireguard/public.key
PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=

Sekarang masuk ke server WireGuard, dan jalankan perintah berikut:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,fd0d:86fa:c3bc::2

Perlu diperhatikan bahwa bagian allowed-ips dari perintah mengambil daftar alamat IPv4 dan IPv6 yang dipisahkan koma. Anda dapat menentukan IP individu jika ingin membatasi alamat IP yang dapat ditetapkan sendiri oleh peer, atau sebuah rentang seperti pada contoh jika peer Anda dapat menggunakan alamat IP mana pun dalam rentang VPN. Juga perlu dicatat bahwa tidak ada dua peer yang dapat memiliki pengaturan allowed-ips yang sama.

Jika Anda ingin memperbarui allowed-ips untuk peer yang sudah ada, Anda dapat menjalankan perintah yang sama lagi, tetapi ubah alamat IP-nya. Beberapa alamat IP didukung. Misalnya, untuk mengubah WireGuard Peer yang baru saja Anda tambahkan untuk menambahkan IP seperti 10.8.0.100 ke IP 10.8.0.2 dan fd0d:86fa:c3bc::2 yang sudah ada, Anda dapat menjalankan perintah berikut:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd0d:86fa:c3bc::2

Setelah Anda menjalankan perintah untuk menambahkan peer, periksa status tunnel di server menggunakan perintah wg:

sudo wg
interface: wg0
 public key: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 private key: (hidden)
 listening port: 51820

peer: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 allowed ips: 10.8.0.2/32, fd0d:86fa:c3bc::/128

Perhatikan bagaimana baris peer menampilkan kunci publik Peer WireGuard, serta alamat IP, atau rentang alamat yang diperbolehkan untuk digunakan saat menetapkan IP untuk dirinya sendiri.

Sekarang setelah Anda menentukan parameter koneksi peer di server, langkah berikutnya adalah memulai tunnel pada peer.

Langkah 9 — Menghubungkan Rekan WireGuard ke Terowongan

Sekarang setelah server dan peer Anda dikonfigurasi untuk mendukung pilihan IPv4, IPv6, penerusan paket, dan resolusi DNS, saatnya untuk menghubungkan peer ke terowongan VPN.

Karena Anda mungkin hanya ingin VPN aktif untuk penggunaan tertentu, kita akan menggunakan perintah wg-quick untuk membangun koneksi secara manual. Jika Anda ingin mengotomatiskan memulai tunnel seperti yang Anda lakukan di server, ikuti langkah-langkah di bagian Memulai Server WireGuard alih-alih menggunakan perintah wg-quick.

Jika Anda mengarahkan semua lalu lintas melalui VPN dan telah mengatur penerusan DNS, Anda perlu menginstal utilitas resolvconf di WireGuard Peer sebelum memulai tunnel. Jalankan perintah berikut untuk mengatur ini:

sudo apt install resolvconf

Untuk memulai terowongan, jalankan perintah berikut di Peer WireGuard:

sudo wg-quick up wg0

Anda akan menerima output seperti berikut:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x

Perhatikan alamat IPv4 dan IPv6 yang disorot yang telah Anda tetapkan ke peer.

Jika Anda mengatur AllowedIPs pada peer ke 0.0.0.0/0 dan ::/0 (atau menggunakan rentang lain selain yang Anda pilih untuk VPN), maka keluaran Anda akan menyerupai berikut:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x
[#] wg set wg0 fwmark 51820
[#] ip -6 route add ::/0 dev wg0 table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip6tables-restore -n
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

Dalam contoh ini, perhatikan rute yang disorot yang ditambahkan oleh perintah, yang sesuai dengan AllowedIPs dalam konfigurasi peer.

Anda dapat memeriksa status terowongan di peer menggunakan perintah wg:

sudo wg
interface: wg0
 public key: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 private key: (hidden)
 listening port: 49338
 fwmark: 0xca6c

peer: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 endpoint: 203.0.113.1:51820
 allowed ips: 10.8.0.0/24, fd0d:86fa:c3bc::/64
 latest handshake: 1 second ago
 transfer: 6.50 KiB received, 15.41 KiB sent

Anda juga dapat memeriksa status di server lagi, dan Anda akan menerima output yang serupa.

Verifikasi bahwa rekan Anda menggunakan VPN dengan menggunakan perintah ip route dan ip -6 route. Jika Anda menggunakan VPN sebagai gateway untuk semua lalu lintas Internet Anda, periksa antarmuka mana yang akan digunakan untuk lalu lintas yang ditujukan ke resolver DNS 1.1.1.1 dan 2606:4700:4700::1111 milik CloudFlare.

Jika Anda hanya menggunakan WireGuard untuk mengakses sumber daya di VPN, gantikan dengan alamat IPv4 atau IPv6 yang valid seperti gateway itu sendiri dalam perintah-perintah ini. Misalnya 10.8.0.1 atau fd0d:86fa:c3bc::1.

ip route get 1.1.1.1
1.1.1.1 dev wg0 table 51820 src 10.8.0.2 uid 1000
   cache

Perhatikan perangkat wg0 yang digunakan dan alamat IPv4 10.8.0.2 yang Anda tetapkan ke peer. Demikian pula, jika Anda menggunakan IPv6, jalankan perintah berikut:

ip -6 route get 2606:4700:4700::1111
2606:4700:4700::1111 from :: dev wg0 table 51820 src fd0d:86fa:c3bc::2 metric 1024 pref medium

Perhatikan lagi antarmuka wg0, dan alamat IPv6 fd0d:86fa:c3bc::2 yang Anda tetapkan untuk rekan.

Jika rekan Anda memiliki browser terpasang, Anda juga dapat mengunjungi ipleak.net dan ipv6-test.com untuk memastikan bahwa rekan Anda mengarahkan lalu lintasnya melalui VPN.

Setelah Anda siap untuk memutus koneksi dari VPN di peer, gunakan perintah wg-quick:

sudo wg-quick down wg0

Anda akan menerima output seperti berikut yang menunjukkan bahwa terowongan VPN telah ditutup:

[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f

Jika Anda mengatur AllowedIPs pada peer ke 0.0.0.0/0 dan ::/0 (atau menggunakan rentang lain selain yang Anda pilih untuk VPN), maka keluaran Anda akan menyerupai berikut:

[#] ip rule delete table 200 from 203.0.113.5
[#] ip route delete table 200 default via 203.0.113.1
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip -6 rule delete table 51820
[#] ip -6 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f
[#] iptables-restore -n
[#] ip6tables-restore -n

Untuk menyambung kembali ke VPN, jalankan perintah wg-quick up wg0 lagi pada peer. Jika Anda ingin sepenuhnya menghapus konfigurasi peer dari Server WireGuard, Anda dapat menjalankan perintah berikut, pastikan untuk mengganti kunci publik yang benar untuk peer yang ingin Anda hapus:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= remove

Biasanya Anda hanya perlu menghapus konfigurasi peer jika peer tersebut tidak lagi ada, atau jika kunci enkripsinya telah dikompromikan atau diubah. Jika tidak, sebaiknya biarkan konfigurasi tetap ada agar peer bisa terhubung kembali ke VPN tanpa harus menambahkan kunci dan allowed-ips setiap kali.

Mengelola dan Memutar Kunci WireGuard

WireGuard mengandalkan pasangan kunci publik dan privat statis untuk autentikasi dan enkripsi. Desain ini secara signifikan mengurangi kompleksitas konfigurasi, tetapi juga menempatkan tanggung jawab manajemen kunci sepenuhnya pada administrator. Untuk penyebaran VPN jangka panjang, infrastruktur bersama, atau lingkungan dengan banyak pihak, manajemen kunci yang hati-hati sangat penting untuk menjaga keamanan dan stabilitas operasional.

Memahami Jenis Kunci WireGuard

Setiap Peer WireGuard menggunakan dua kategori kunci kriptografi.

  • Kunci pribadi jangka panjang: Kunci pribadi secara unik mengidentifikasi seorang peserta dan harus tetap rahasia setiap saat. Kunci ini digunakan selama proses handshake terenkripsi untuk mengautentikasi peserta dan menghasilkan kunci sesi yang bersifat sementara. Jika kunci pribadi terekspos, sistem manapun yang memegang kunci tersebut dapat menyamar sebagai peserta.

  • Kunci publik jangka panjang: Kunci publik diturunkan dari kunci privat dan dibagikan dengan rekan lainnya. Di hub pusat, kunci publik menentukan rekan mana yang diperbolehkan untuk berkomunikasi dan alamat IP mana yang diizinkan untuk digunakan.

Selain kunci jangka panjang ini, WireGuard secara otomatis menghasilkan kunci sesi sementara selama proses handshake yang dienkripsi. Kunci sesi ini diganti secara berkala dan memberikan Perfect Forward Secrecy tanpa keterlibatan administrator.

Praktik Manajemen Kunci yang Direkomendasikan

Praktik-praktik berikut membantu mengurangi risiko dan menyederhanakan operasi yang sedang berjalan:

  • Tetapkan pasangan kunci unik untuk setiap rekan: Setiap perangkat harus memiliki pasangan kunci pribadi dan publiknya sendiri. Menggunakan kunci unik memungkinkan akses dicabut untuk satu perangkat tanpa memengaruhi perangkat lain. Menggunakan kembali kunci di beberapa sistem meningkatkan dampak dari kompromi dan mempersulit audit.

  • Batasi akses ke materi kunci privat: File kunci privat sebaiknya hanya dapat dibaca oleh pengguna root. Pada sistem Linux, ini biasanya berarti mengatur izin ke 600 menggunakan perintah seperti chmod 600 /etc/wireguard/private.key. Membatasi akses file membantu mencegah pengungkapan yang tidak disengaja melalui cadangan, log, atau pengguna yang tidak memiliki hak istimewa.

  • Pertahankan inventaris rekan yang jelas: Simpan catatan yang memetakan setiap kunci publik rekan ke nama perangkatnya, alamat IPv4 dan IPv6 yang diberikan, serta tujuan yang dimaksudkan. Dokumentasi ini menjadi semakin penting seiring bertambahnya jumlah rekan dan mempermudah pemecahan masalah, audit, dan pemeliharaan rutin.

  • Hapus peer yang tidak digunakan atau tidak aktif segera: Ketika sebuah perangkat dinonaktifkan atau tidak lagi memerlukan akses VPN, hapus kunci publiknya dari konfigurasi peer pusat. Membiarkan kunci yang tidak digunakan tetap ada meningkatkan permukaan serangan dan membuat tinjauan di masa depan menjadi lebih sulit.

Situasi yang Memerlukan Rotasi Kunci

Rotasi kunci sebaiknya dilakukan dalam beberapa skenario umum:

  • Kecurigaan atau konfirmasi paparan kunci: Jika sebuah kunci privat mungkin telah disalin, bocor, atau diakses oleh pihak yang tidak berwenang, kunci tersebut harus segera diganti untuk mencegah peniruan identitas.

  • Perangkat hilang atau dicuri: Ketika perangkat hilang atau dicuri, memutar kuncinya memastikan bahwa perangkat tersebut tidak dapat lagi terhubung ke VPN, bahkan jika konfigurasi aslinya dipulihkan.

  • Persyaratan keamanan organisasi: Beberapa lingkungan mengharuskan rotasi kunci secara berkala untuk memenuhi kebijakan internal atau standar kepatuhan, bahkan jika tidak ada dugaan pelanggaran.

  • Perubahan kepemilikan atau peran perangkat: Saat sebuah peer dialihkan ke pengguna atau tujuan yang berbeda, memutar kunci perangkat tersebut mencegah akses berkelanjutan yang tidak diinginkan.

Memutar Kunci Rekan dengan Aman

WireGuard memetakan alamat IP internal ke kunci publik tertentu menggunakan tabel routing kunci kripto. Karena desain ini, alamat IP internal yang sama tidak dapat ditugaskan ke dua kunci publik secara bersamaan dengan aman. Rotasi kunci biasanya melibatkan gangguan singkat pada konektivitas saat konfigurasi diperbarui.

Untuk memutar kunci rekan, ikuti proses ini:

  1. Hasilkan sepasang kunci privat dan publik baru di peer.
  2. Perbarui konfigurasi peer pusat untuk mengganti kunci publik lama dengan yang baru sambil mempertahankan nilai AllowedIPs yang sama. Jangan restart antarmuka dulu.
  3. Perbarui file konfigurasi rekan untuk menggunakan kunci pribadi yang baru.
  4. Terapkan konfigurasi yang diperbarui pada peer pusat, misalnya dengan me-reload layanan WireGuard atau menggunakan wg syncconf. Pada titik ini, peer akan sementara kehilangan konektivitas.
  5. Mulai ulang antarmuka WireGuard di peer agar mulai menggunakan kunci pribadi yang baru.
  6. Verifikasi bahwa jabat tangan baru selesai dan lalu lintas mengalir dengan benar.
  7. Hapus semua referensi yang tersisa ke kunci lama jika masih ada.

Pendekatan berbasis penggantian ini mencerminkan bagaimana WireGuard menegakkan routing kriptografi dan menghindari konfigurasi yang ambigu atau bertentangan.

Memutar Kunci pada Peer Pusat

Memutar kunci pribadi dari peer pusat mempengaruhi semua peer yang terhubung. Setiap konfigurasi peer harus diperbarui dengan kunci publik yang baru sebelum konektivitas dapat dipulihkan.

Karena perubahan ini memengaruhi setiap rekan secara bersamaan, rotasi kunci rekan pusat harus direncanakan dengan cermat dan dilakukan selama jendela pemeliharaan. Dalam praktiknya, kunci pusat diputar lebih jarang dibandingkan kunci rekan.

Mengelola Kunci yang Dibagikan Sebelumnya (Opsional)

Selain pasangan kunci publik dan privat, WireGuard mendukung Kunci Pra-Bagi (Pre-Shared Key/PSK) opsional untuk setiap rekan. PSK menambahkan lapisan tambahan enkripsi simetris di atas kriptografi yang sudah ada pada WireGuard.

Kunci yang Dibagi Sebelumnya (Pre-Shared Keys) biasanya digunakan di lingkungan dengan keamanan tinggi sebagai pertahanan terhadap kemajuan kriptografi di masa depan. Jika lalu lintas terenkripsi direkam hari ini dan algoritme kunci publik yang mendasarinya dikompromikan di masa depan, PSK tetap akan mencegah dekripsi sesi yang telah lalu.

Jika PSK digunakan, mereka harus diperlakukan sebagai rahasia yang sensitif dan diganti secara berkala. Mengganti PSK mengikuti pola operasi yang sama dengan mengganti kunci rekan dan harus dikoordinasikan di kedua sisi koneksi.

Memilih Frekuensi Rotasi

WireGuard tidak mewajibkan jadwal rotasi kunci yang tetap. Interval rotasi yang tepat tergantung pada lingkungan.

  • Penugasan pribadi atau jangka pendek mungkin tidak memerlukan rotasi yang dijadwalkan.
  • Lingkungan bersama atau produksi biasanya mengganti kunci setiap 6 hingga 12 bulan.
  • Lingkungan dengan keamanan tinggi mungkin memerlukan rotasi yang lebih sering berdasarkan kebijakan.

Rotasi rutin mengurangi risiko yang terkait dengan kredensial jangka panjang dan menyesuaikan penerapan WireGuard dengan praktik keamanan yang umum.

WireGuard vs OpenVPN: Perbedaan Praktis

WireGuard dan OpenVPN keduanya adalah teknologi VPN yang banyak digunakan, tetapi mereka mengambil pendekatan yang sangat berbeda dalam hal enkripsi, konfigurasi, dan perilaku jaringan. Memahami perbedaan ini membantu pengembang memilih solusi yang paling sesuai dengan batasan operasional mereka.

Konfigurasi dan Model Operasional

WireGuard menggunakan model konfigurasi statis berdasarkan pasangan kunci publik dan privat. Semua rekan ditentukan secara eksplisit, dan perilaku routing dikontrol melalui nilai konfigurasi tetap. Tidak ada saluran kontrol, otoritas sertifikat, atau negosiasi parameter secara dinamis.

OpenVPN bergantung pada TLS dan sertifikat X.509. Ia menggunakan saluran kontrol untuk mengautentikasi klien, merundingkan pengaturan enkripsi, dan mengelola sesi. Model ini memberikan fleksibilitas tetapi meningkatkan kompleksitas konfigurasi dan operasional.

Dalam praktiknya, konfigurasi WireGuard lebih singkat, lebih mudah diaudit, dan kurang rentan terhadap kesalahan konfigurasi yang halus. Konfigurasi OpenVPN menawarkan kontrol lebih, tetapi memerlukan pengelolaan yang hati-hati agar tetap aman dan konsisten.

Kriptografi dan Desain Keamanan

WireGuard menggunakan seperangkat metode kriptografi modern yang tetap. Pilihan ini tidak dapat dikonfigurasi. Desain ini menghilangkan serangan penurunan kriptografi dan menghapus kebutuhan untuk memilih paket sandi.

OpenVPN mendukung berbagai macam algoritma enkripsi dan metode autentikasi. Meskipun fleksibilitas ini memungkinkan kompatibilitas dengan sistem lama, hal ini juga meningkatkan risiko konfigurasi yang lemah atau tidak konsisten.

Kedua solusi mendukung Perfect Forward Secrecy. WireGuard melakukan rotasi kunci secara otomatis melalui mekanisme jabat tangan, sementara OpenVPN bergantung pada perilaku sesi TLS.

Karakteristik Kinerja

WireGuard dirancang untuk kinerja tinggi dan latensi rendah. Ini berjalan di kernel Linux dan memiliki basis kode yang kecil, yang mengurangi overhead dan pergantian konteks. Di sebagian besar lingkungan, WireGuard memberikan throughput lebih tinggi dan latensi yang lebih konsisten dengan penyesuaian minimal.

Secara historis, OpenVPN berjalan di ruang pengguna dan menimbulkan overhead tambahan dari pergantian konteks dan penanganan protokol. Versi modern OpenVPN mendukung Kernel Data Channel Offload (DCO), yang secara signifikan meningkatkan kinerja, tetapi fitur ini tidak selalu diaktifkan atau tersedia dalam penyebaran default.

Bahkan dengan DCO, WireGuard biasanya mencapai kinerja yang kuat dengan lebih sedikit variabel konfigurasi.

Perpindahan Jaringan dan Perlintasan Firewall

WireGuard menangani perubahan jaringan dengan mulus. Jika alamat IP peer berubah, misalnya saat berpindah antara WiFi dan jaringan seluler, terowongan tetap berfungsi tanpa perlu negosiasi ulang.

Namun, WireGuard hanya beroperasi melalui UDP. Meskipun UDP efisien, kadang-kadang ia diblokir pada jaringan WiFi publik yang terbatas, firewall perusahaan, atau jaringan institusional. WireGuard tidak memiliki metode cadangan bawaan ketika lalu lintas UDP diblokir.

OpenVPN mendukung baik UDP maupun TCP. Ketika UDP tidak tersedia, OpenVPN dapat dikonfigurasi untuk berjalan melalui port TCP 443, sehingga lalu lintas VPN terlihat mirip dengan lalu lintas HTTPS standar. Kemampuan ini membuat OpenVPN lebih dapat diandalkan di lingkungan dengan aturan firewall yang ketat atau sensor.

Bagi pengguna yang beroperasi di balik jaringan yang membatasi, dukungan TCP sering menjadi faktor penentu dalam memilih OpenVPN dibandingkan WireGuard.

Cakupan Fitur dan Keterluasan

OpenVPN mencakup fitur-fitur yang dengan sengaja tidak disediakan oleh WireGuard. Ini termasuk autentikasi berbasis pengguna, penetapan alamat dinamis, dan integrasi dengan sistem identitas eksternal.

WireGuard fokus secara eksklusif pada tunneling yang aman. Alur kerja otentikasi, kontrol akses, dan konfigurasi dinamis harus ditangani di luar protokol.

Ini membuat OpenVPN lebih cocok untuk lingkungan yang membutuhkan otentikasi kompleks atau manajemen pengguna terpusat, sementara WireGuard lebih cocok untuk VPN tingkat infrastruktur dan akses berbasis rekan.

Ringkasan Perbandingan

AspekWireGuardOpenVPN
Protokol transportasiHanya UDPUDP dan TCP
Gaya konfigurasiStatis, berbasis kunciDinamis, berbasis sertifikat
Ukuran basis kodeKecilBesar
Pilihan enkripsiDiperbaikiDapat dikonfigurasi
KinerjaTinggiSedang hingga tinggi
Dukungan roamingBawaanTerbatas
Ketahanan firewallTerbatas pada jaringan yang dibatasiKuat melalui TCP 443
KompleksitasRendahTinggi

Memilih Antara WireGuard dan OpenVPN

WireGuard sangat cocok untuk VPN infrastruktur, terowongan site-to-site, klien mobile, dan lingkungan di mana kesederhanaan, kinerja, dan prediktabilitas menjadi prioritas.

OpenVPN tetap menjadi pilihan yang kuat untuk lingkungan perusahaan yang memerlukan tunneling berbasis TCP, autentikasi lanjutan, atau operasi yang andal di balik firewall yang ketat.

Dalam banyak penerapan modern, WireGuard menggantikan OpenVPN bukan karena menawarkan lebih banyak fitur, tetapi karena menawarkan lebih sedikit fitur dengan perilaku yang lebih jelas.

Penyetelan Performa dan Optimisasi

WireGuard bekerja dengan baik dengan pengaturan default-nya, tetapi kondisi jaringan dunia nyata dapat memengaruhi keandalan dan throughput. Faktor-faktor seperti ukuran paket, cakupan routing, perilaku NAT, dan resolusi DNS semuanya memengaruhi bagaimana terowongan berperilaku selama penggunaan terus-menerus atau berselang-seling.

Mari kita lihat area penyetelan yang paling umum dan kapan penyesuaian sesuai dilakukan.

Pemilihan MTU dan Fragmen Paket

Unit Transmisi Maksimum (MTU) menentukan ukuran paket terbesar yang dapat dikirim tanpa fragmentasi. WireGuard mengenkripsi dan mengenkapsulasi paket, yang mengurangi MTU efektif dibandingkan dengan antarmuka jaringan fisik.

Secara default, WireGuard menggunakan MTU sebesar 1420. Nilai ini memperhitungkan overhead gabungan dari header IPv6, UDP, dan enkapsulasi WireGuard, dan berfungsi dengan baik untuk sebagian besar jaringan berbasis Ethernet. Beberapa lingkungan membutuhkan MTU yang lebih kecil. Hal ini umum terjadi pada jaringan seluler, koneksi PPPoE, dan platform cloud dengan lapisan enkapsulasi tambahan. Ketika MTU terlalu besar, paket mungkin terbuang atau terfragmentasi. Ini sering mengakibatkan koneksi yang bekerja untuk permintaan kecil tetapi macet atau gagal untuk transfer yang lebih besar. Jika gejala ini terjadi, disarankan untuk menurunkan MTU secara bertahap. Nilai seperti 1360, atau dalam lingkungan yang lebih terbatas 1280 yang merupakan MTU minimum IPv6, seringkali menyelesaikan masalah ini dengan dampak minimal pada throughput.

MTU sebaiknya diatur secara eksplisit di bagian [Interface] dari file konfigurasi untuk memastikan perilaku yang konsisten setelah restart.

Ruang Lingkup dan Dampak AllowedIPs

Directive AllowedIPs memengaruhi perilaku routing sekaligus kinerja. Rentang alamat yang luas menyebabkan lebih banyak lalu lintas melewati tunnel, yang meningkatkan beban enkripsi dan beban pada server. Menggunakan nilai AllowedIPs yang sempit membatasi tunnel hanya untuk lalu lintas yang memerlukan perlindungan. Hal ini mengurangi penggunaan CPU dan menghindari enkapsulasi yang tidak perlu.

Ketika 0.0.0.0/0 atau ::/0 dikonfigurasi, semua lalu lintas dialihkan melalui VPN. Konfigurasi ini sesuai ketika privasi, kontrol keluar terpusat, atau jaringan yang tidak tepercaya menjadi perhatian, tetapi hal ini meningkatkan latensi dan penggunaan sumber daya untuk lalu lintas Internet umum.

Penyetelan kinerja sering melibatkan penyempitan AllowedIPs jika memungkinkan dan menghindari routing jalur penuh kecuali jika diperlukan.

Traversal NAT dan Stabilitas Koneksi (PersistentKeepalive)

WireGuard sengaja diam saat tidak ada data yang dikirimkan. Secara default, ia tidak mengirim paket keepalive secara berkala. Di lingkungan yang menggunakan NAT, seperti router rumah, jaringan seluler, atau banyak jaringan cloud, keheningan ini dapat menyebabkan perangkat NAT menutup pemetaan koneksi. Ketika hal ini terjadi, lalu lintas masuk dari server akan diblokir sampai peer mengirimkan lalu lintas lagi. Perilaku ini sering dianggap sebagai lag, koneksi tertunda, atau kegagalan yang berselang-seling.

Untuk mencegah hal ini, WireGuard menyediakan pengaturan PersistentKeepalive. Opsi ini dapat ditambahkan ke bagian [Peer] dari konfigurasi peer. Ini menyebabkan peer mengirim paket keepalive kecil pada interval tetap untuk menjaga pemetaan NAT tetap terbuka. Nilai 25 detik biasanya digunakan dan bekerja dengan baik pada sebagian besar perangkat NAT. Jika sebuah koneksi berhasil pada awalnya tetapi gagal setelah tidak digunakan, mengaktifkan PersistentKeepalive=25 adalah perbaikan utama dan yang direkomendasikan.

Resolusi DNS dan Perilaku Terowongan

Konfigurasi DNS memiliki dampak signifikan pada kinerja VPN yang dirasakan. Ketika resolver DNS tidak diarahkan dengan benar melalui tunnel, aplikasi mungkin tampak lambat atau tidak dapat diandalkan meskipun tunnel itu sendiri berfungsi dengan baik.

Dalam konfigurasi gateway, permintaan DNS harus dikirim melalui VPN untuk memastikan routing yang konsisten dan mencegah kebocoran. Ini membutuhkan penentuan resolver DNS secara eksplisit dalam konfigurasi peer. Ketika DNS dikonfigurasi dengan salah, gejala umum yang muncul termasuk halaman yang lambat dimuat, konektivitas yang tidak konsisten, atau lalu lintas yang diarahkan di luar VPN meskipun tunnel aktif.

Memilih resolver yang dapat dijangkau melalui terowongan dan merespons dengan cepat meningkatkan baik keandalan maupun pengalaman pengguna.

Perbedaan Kinerja IPv4 dan IPv6

Dalam lingkungan dual-stack, IPv4 dan IPv6 dapat berperilaku berbeda. Jalur IPv6 dapat memiliki batas MTU, kebijakan routing, atau perilaku firewall yang berbeda.

Menguji kedua protokol secara independen membantu mengidentifikasi masalah spesifik protokol. Alat seperti ping, tracepath, dan ip route get berguna untuk memvalidasi perilaku routing dan MTU untuk setiap keluarga alamat.

Jika kinerja IPv6 tampak tidak konsisten, pastikan bahwa lalu lintas ICMPv6 diizinkan. ICMPv6 diperlukan untuk Penemuan Path MTU, dan memblokirnya dapat menyebabkan koneksi terhenti pada paket yang lebih besar.

CPU dan Beban Enkripsi

WireGuard menggunakan kriptografi modern yang efisien pada sebagian besar sistem. Namun, enkripsi tetap mengonsumsi sumber daya CPU.

Pada mesin virtual kecil, router tertanam, atau sistem tanpa akselerasi perangkat keras, konfigurasi full-tunnel dapat membebani CPU di bawah beban yang terus-menerus.

Memantau penggunaan CPU saat lalu lintas tinggi membantu menentukan apakah masalah kinerja disebabkan oleh beban enkripsi daripada konfigurasi jaringan. Dalam kasus seperti itu, mengurangi lalu lintas melalui terowongan atau meningkatkan instance server mungkin diperlukan.

Memvalidasi Perubahan Performa

Penyetelan kinerja sebaiknya dilakukan secara bertahap. Setelah setiap perubahan, konektivitas dan stabilitas harus diverifikasi sebelum melakukan penyesuaian tambahan.

Langkah validasi yang berguna termasuk memeriksa kestabilan handshake dengan wg, mengukur latensi dan throughput sebelum dan sesudah perubahan, serta memastikan perilaku routing dengan ip route dan ip -6 route. Pendekatan ini meminimalkan risiko dan mempermudah pemecahan masalah.

Pertanyaan yang Sering Diajukan

1. Apa itu WireGuard dan bagaimana cara kerjanya di Ubuntu?

WireGuard adalah teknologi VPN modern yang dirancang agar jauh lebih cepat dan mudah dipasang dibandingkan opsi lama seperti OpenVPN atau IPsec. Anda bisa menganggapnya sebagai terowongan aman yang menghubungkan perangkat Anda secara langsung. Berbeda dengan VPN lama yang berat dan kompleks, WireGuard sangat ringan. Di Ubuntu, ia bekerja dengan menjalankan langsung di dalam kernel Linux; inti dari sistem operasi. Karena berjalan di dalam sistem dan bukan sebagai aplikasi terpisah di atasnya, ia menggunakan daya baterai sangat sedikit dan memproses data dengan sangat cepat.

Untuk membangun koneksi, WireGuard menggunakan metode yang sangat mirip dengan SSH. Ia menghasilkan sepasang "kunci" untuk setiap perangkat: kunci pribadi (yang tetap rahasia di perangkat) dan kunci publik (yang Anda bagikan dengan perangkat lain yang ingin Anda hubungkan). Koneksi hanya terjadi jika kunci-kunci tersebut cocok secara sempurna, membuat proses handshake cepat dan aman.

2. Apakah WireGuard lebih aman daripada OpenVPN?

Bagi sebagian besar pengguna, WireGuard dianggap lebih aman karena kesederhanaan dan desain modernnya. Alasan utamanya adalah ukuran kodenya. WireGuard dibangun hanya dengan sekitar 4.000 baris kode, sementara OpenVPN memiliki lebih dari 100.000. Perbedaan besar ini berarti lebih mudah bagi ahli keamanan untuk membaca kode WireGuard dan menemukan kerentanan (bug) sebelum pihak jahat melakukannya.

WireGuard juga memaksa Anda untuk menggunakan standar enkripsi terbaru dan terkuat yang tersedia saat ini. VPN yang lebih lama memungkinkan fleksibilitas kriptografi, yang berarti mereka bisa menurunkan enkripsi ke metode yang lebih lemah untuk mendukung perangkat lama. WireGuard menghapus pilihan ini, mencegah penyerang menipu VPN Anda agar menggunakan kunci yang lebih lemah. Selain itu, WireGuard bersifat tersembunyi secara default; jika perangkat yang tidak berwenang mengirim paket ke server Anda, WireGuard tidak akan membalas. Ini membuat server Anda tidak terlihat oleh peretas yang memindai port terbuka.

3. Apakah saya bisa mengatur WireGuard di Ubuntu tanpa Docker?

Ya, Anda bisa dengan mudah mengaturnya langsung di sistem tanpa menggunakan kontainer Docker. Bahkan, menjalankannya langsung sering menjadi metode yang disukai di Ubuntu karena perangkat lunak ini sudah termasuk dalam repositori perangkat lunak standar Ubuntu. Anda umumnya hanya perlu menjalankan perintah instalasi standar di bawah ini, yang akan mengambil perangkat lunak yang diperlukan langsung dari sumber resmi Ubuntu.

sudo apt update
sudo apt install wireguard

4. Bagaimana cara menambahkan beberapa klien WireGuard (rekan)?

WireGuard menggunakan konsep peer-to-peer, yang berarti setiap perangkat yang Anda hubungkan diperlakukan sebagai 'peer.' Untuk menambahkan beberapa perangkat, seperti laptop, smartphone, dan tablet, Anda cukup mengedit file konfigurasi server (biasanya terletak di /etc/wireguard/wg0.conf).

Untuk setiap perangkat baru, Anda menambahkan blok teks baru yang diberi label [Peer]. Di dalam blok ini, Anda harus menempelkan Public Key dari perangkat tersebut dan menetapkan alamat IP internal yang unik (seperti 10.0.0.2 untuk perangkat pertama, 10.0.0.3 untuk perangkat kedua, dan seterusnya). Sangat penting bahwa alamat IP internal ini tidak tumpang tindih.

Berikut adalah contoh blok konfigurasi sederhana:

[Interface]
# Server settings...
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <Server_Private_Key>

[Peer]
# Client 1 (Laptop)
PublicKey = <Laptop_Public_Key>
AllowedIPs = 10.0.0.2/32

[Peer]
# Client 2 (Phone)
PublicKey = <Phone_Public_Key>
AllowedIPs = 10.0.0.3/32

5. Port mana yang digunakan WireGuard?

WireGuard menggunakan port UDP 51820 secara default. Ia bergantung sepenuhnya pada protokol UDP karena lebih cepat untuk menyalurkan data dibandingkan TCP. TCP membutuhkan konfirmasi untuk setiap paket data yang dikirim, yang dapat memperlambat koneksi VPN secara signifikan. UDP hanya mengirimkan data tanpa menunggu penerimaan, yang sangat cocok untuk kecepatan tinggi WireGuard. Saat mengatur firewall Ubuntu Anda (UFW), Anda harus secara khusus mengizinkan lalu lintas pada port UDP ini, atau permintaan koneksi akan diblokir sebelum mencapai perangkat lunak VPN.

6. Bagaimana cara menyelesaikan masalah koneksi WireGuard?

Pemecahan masalah WireGuard biasanya cukup sederhana karena ada lebih sedikit bagian yang bergerak. Jika Anda tidak dapat terhubung, Anda sebaiknya mengikuti urutan pemeriksaan khusus ini:

Pertama, periksa status handshake dengan menjalankan sudo wg show di server Anda. Jika koneksi sehat, Anda akan melihat baris yang bertuliskan latest handshake diikuti oleh waktu (misalnya, “1 menit yang lalu”). Jika baris ini tidak ada, berarti perangkat sama sekali tidak saling terhubung. Hal ini hampir selalu disebabkan oleh firewall yang memblokir port UDP atau ketidakcocokan pada kunci Publik/Privat.

Kedua, jika handshake berhasil tetapi Anda tidak dapat menjelajah internet, masalahnya kemungkinan besar adalah IP forwarding. Anda perlu memastikan server Ubuntu Anda diizinkan untuk merutekan lalu lintas dari VPN ke internet. Anda dapat memverifikasi ini dengan melihat file /etc/sysctl.conf dan memastikan baris net.ipv4.ip_forward=1 aktif (tidak dikomentari).

7. Apakah WireGuard mendukung IPv6 di Ubuntu?

Ya, WireGuard memiliki dukungan yang sangat baik untuk IPv6. Ini sangat fleksibel dan dapat mengenkapsulasi (membungkus) berbagai jenis lalu lintas. Misalnya, Anda dapat mengakses situs web yang hanya mendukung IPv4 melalui koneksi IPv6, atau sebaliknya. Untuk mengaktifkannya, Anda cukup memasukkan alamat IPv6 yang dipisahkan dengan koma dalam file konfigurasi Anda bersama dengan alamat IPv4 standar. Anda akan menambahkan ini ke kedua bidang Address (untuk IP server itu sendiri) dan bidang AllowedIPs (untuk IP klien).

8. Bagaimana cara mengaktifkan WireGuard agar berjalan saat boot?

Untuk memastikan VPN Anda menyala secara otomatis setiap kali Anda me-restart server Ubuntu, Anda perlu menggunakan systemd, yang merupakan pengelola sistem untuk Linux. Anda menggunakan perintah enable untuk memberi tahu sistem agar mencari file konfigurasi spesifik Anda (misalnya, wg0) dan memuatnya selama urutan startup. Ini memastikan bahwa jika server Anda melakukan reboot untuk pembaruan, koneksi VPN Anda akan kembali online tanpa perlu Anda mengaktifkannya secara manual.

sudo systemctl enable wg-quick@wg0

Kesimpulan

Dalam tutorial ini, Anda menyiapkan VPN WireGuard di server Ubuntu dan menghubungkan peer menggunakan IPv4 dan IPv6. Sepanjang proses, Anda mengonfigurasi kunci, menetapkan alamat tunnel, dan mengaktifkan server untuk merutekan lalu lintas secara aman, memberikan Anda VPN yang berfungsi dan mudah dipahami serta dioperasikan.

Panduan tersebut juga mencakup beberapa detail praktis yang penting saat VPN digunakan secara reguler, seperti mengelola kunci seiring waktu, menangani jaringan IPv6 dan dual-stack, serta meningkatkan keandalan dan kinerja dengan penyetelan MTU, keepalive, dan pengaturan DNS. Dengan hal-hal ini, Anda seharusnya siap menjalankan WireGuard di lingkungan dunia nyata atau menyesuaikannya sesuai kebutuhan yang berubah.

Jika Anda ingin mempelajari lebih lanjut tentang WireGuard, termasuk cara mengonfigurasi tunnel yang lebih canggih, atau menggunakan WireGuard dengan kontainer, kunjungi dokumentasi resmi WireGuard. Untuk tutorial lebih lanjut terkait mengamankan sistem Ubuntu Anda, lihat artikel-artikel berikut:

  • Cara Mengatur Firewall dengan UFW di Ubuntu
  • UFW Essentials: Aturan dan Perintah Firewall Umum untuk Keamanan Linux
  • VPC vs VPN: Mana yang Sesuai dengan Kebutuhan Jaringan Aman Anda?
  • Cara Mengatur dan Mengonfigurasi Server OpenVPN di Ubuntu

Terima kasih telah belajar bersama Komunitas Linux-Console.net.