Panduan Install WireGuard di LXC
Panduan Install WireGuard di LXC
WireGuard adalah salah satu VPN modern yang menawarkan kecepatan tinggi, konfigurasi sederhana, dan keamanan yang kuat. Namun, ketika menggunakan LXC (Linux Container), terdapat kendala: modul kernel WireGuard tidak dapat langsung dijalankan karena keterbatasan akses ke host. Solusi untuk hal ini adalah menggunakan WireGuard Go, sebuah implementasi WireGuard berbasis user space yang berjalan tanpa perlu modul kernel.
Dengan menggunakan WireGuard Go, kita tetap bisa membuat server VPN di dalam LXC tanpa harus mengutak-atik kernel host.
Mengapa Menggunakan WireGuard Go di LXC
-
Tidak membutuhkan akses root penuh ke host LXC biasanya dibatasi dari host utama. Modul kernel tidak dapat ditambahkan secara bebas, sehingga instalasi WireGuard biasa sering gagal.
-
Portabilitas tinggi WireGuard Go berjalan di user space. Artinya, ia bisa dipasang di berbagai lingkungan container tanpa khawatir dukungan kernel.
-
Lebih sederhana untuk deployment Karena tidak tergantung pada modul kernel, WireGuard Go bisa dijalankan langsung setelah binary terinstal.
Instalasi Go 1.23
Kita tidak akan menggunakan paket bawaan dari repositori, karena biasanya versinya lebih lama. Berikut langkah untuk menginstal Go versi 1.23 secara manual:
cd /tmp
wget https://go.dev/dl/go1.23.0.linux-amd64.tar.gz
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
echo "export PATH=\$PATH:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc
go version
Jika berhasil, akan muncul output versi Go 1.23.
Instalasi WireGuard Go
Setelah Go terinstal, saatnya mengambil source dan membangunnya:
git clone https://git.zx2c4.com/wireguard-go
cd wireguard-go
make
cp wireguard-go /usr/local/bin/
Sekarang binary wireguard-go
tersedia dan bisa dipakai.
Membuat Konfigurasi Server
Buat file konfigurasi untuk server, misalnya /etc/wireguard/wg0.conf
:
[Interface]
PrivateKey = SERVER_PRIVATE_KEY
Address = 10.0.0.1/24
ListenPort = 51820
# Peer 1
[Peer]
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32
# Peer 2
[Peer]
PublicKey = CLIENT2_PUBLIC_KEY
AllowedIPs = 10.0.0.3/32
Kunci private dan public dapat dibuat dengan:
wg genkey | tee privatekey | wg pubkey > publickey
Membuat Konfigurasi Client
Misalnya untuk Client 1, buat file client1.conf
:
[Interface]
PrivateKey = CLIENT1_PRIVATE_KEY
Address = 10.0.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Untuk client 2, cukup ganti dengan alamat 10.0.0.3/24
dan gunakan kunci milik client 2.
Menjalankan WireGuard di Server
Karena ini berjalan di LXC, kita perlu menjalankan WireGuard Go untuk membuat interface:
wireguard-go wg0
wg-quick up wg0
Perintah pertama membuat interface wg0
, sementara wg-quick
akan mengonfigurasi sesuai file wg0.conf
.
Memastikan Koneksi Berjalan
Cek status WireGuard dengan:
wg show
Pastikan server menampilkan peer yang sudah ditambahkan. Lalu lakukan ping dari client ke server:
ping 10.0.0.1
Jika ping berhasil, berarti konfigurasi sudah benar. Untuk memastikan client bisa mengakses internet melalui server, gunakan perintah:
curl ifconfig.me
Alamat IP yang tampil seharusnya adalah IP server, bukan IP asli client.