WireGuard mencapai throughput TCP 210 Mbps versus 110 Mbps OpenVPN di lingkungan cloud yang sebanding — hampir 2x throughput dengan penggunaan CPU yang jauh lebih rendah. Lebih penting lagi, basis kode WireGuard sekitar 4.000 baris — kira-kira 1% ukuran stack OpenVPN atau IPsec — membuatnya jauh lebih mudah untuk diaudit dan dipelihara. Di Commsult Indonesia, saya mengganti setup OpenVPN antara DigitalOcean Droplet kami dengan WireGuard.
WireGuard adalah protokol VPN modern yang berjalan di kernel Linux (kernel 5.6+ menyertakannya secara native). Ia menyediakan tunnel terenkripsi antara host menggunakan Curve25519 untuk pertukaran kunci, ChaCha20-Poly1305 untuk enkripsi, dan BLAKE2s untuk hashing. Ini bukan solusi layanan VPN lengkap — tidak ada manajemen pengguna, tidak ada UI web, tidak ada otoritas sertifikat.
WireGuard unggul dalam: jaringan site-to-site antara server cloud (akses database privat tanpa mengekspos port secara publik), akses jarak jauh untuk developer ke lingkungan staging/produksi (SSH melalui WireGuard alih-alih mengekspos SSH ke internet), menghubungkan DigitalOcean Droplet di region berbeda melalui overlay privat.
Di lingkungan VMware, WireGuard menunjukkan throughput TCP 210 Mbps versus 110 Mbps OpenVPN — peningkatan 91%. Kehilangan paket adalah 12% untuk WireGuard versus 47% untuk OpenVPN dalam kondisi jaringan yang disimulasikan secara identik. Di jaringan gigabit, WireGuard mencapai kecepatan mendekati wire (7,88 Gbit/s).
┌─────────────────────────────────────────────────────┐
│ WIREGUARD HUB-AND-SPOKE TOPOLOGY │
└─────────────────────────────────────────────────────┘
Dev Laptop ──────────────────────────────┐
(10.8.0.2) │
▼
Office IP ───────────────────► WireGuard HUB VPS
(10.8.0.3) (10.8.0.1, Singapore)
UDP :51820 public
GCP DB Server ◄──────────────────────────┤
(10.8.0.10) private overlay │
│
DO App Server ◄──────────────────────────┘
(10.8.0.11)
Public internet: only Nginx 80/443 + WireGuard UDP 51820
Private: PostgreSQL 5432, Redis 6379, NestJS 3000Dari pengalaman menjalankan WireGuard antara DigitalOcean Singapura dan GCP Asia-Southeast1 untuk Commsult Indonesia, gunakan PersistentKeepalive = 25 untuk semua peer di belakang NAT. Tanpanya, tunnel WireGuard diam-diam menjadi idle setelah 3 menit tanpa traffic dan membutuhkan 1–2 detik untuk membangun kembali pada paket berikutnya, menyebabkan koneksi database yang terputus.
Topologi WireGuard yang paling berguna untuk tim kecil adalah hub-and-spoke: satu VPS bertindak sebagai hub dengan IP publik statis, dan semua klien (mesin kantor, laptop, runner CI/CD) adalah spoke. Setiap spoke memiliki antarmuka WireGuard dengan rute untuk subnet privat yang melewati hub.
Di DigitalOcean, konfigurasikan Cloud Firewall untuk mengizinkan UDP 51820 dari IP mana pun (klien WireGuard mungkin memiliki IP dinamis). Setelah peer terhubung melalui WireGuard, batasi semua port sensitif lainnya (PostgreSQL 5432, Redis 6379, NestJS 3000) ke subnet privat WireGuard saja — jangan pernah mengeksposnya ke internet.
# Install WireGuard (Ubuntu 22.04+)
apt install wireguard -y
# Generate key pair on hub
wg genkey | tee /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key
chmod 600 /etc/wireguard/private.key
# /etc/wireguard/wg0.conf (HUB)
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <HUB_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# Dev Laptop
PublicKey = <DEV_PUBLIC_KEY>
AllowedIPs = 10.8.0.2/32
PersistentKeepalive = 25
# Enable and check status
systemctl enable --now wg-quick@wg0
wg show # shows peers, last handshake, bytesWireGuard menyediakan diagnostik bawaan yang minimal. Periksa status peer dengan wg show — ia menampilkan kunci publik setiap peer, endpoint, IP yang diizinkan, waktu handshake terakhir, dan byte yang ditransfer. Waktu handshake terakhir yang lebih dari 3 menit menunjukkan peer tidak terhubung.
WireGuard tidak memiliki otoritas pusat atau pemulihan kata sandi. Jika Anda kehilangan kunci privat untuk peer, peer tersebut tidak dapat terhubung kembali — Anda harus membuat pasangan kunci baru, memperbarui konfigurasi hub dengan kunci publik baru, dan terhubung kembali. Saya menyimpan konfigurasi WireGuard di brankas 1Password terenkripsi dan di repositori GitLab privat kami.
Untuk tim yang membutuhkan UI untuk manajemen peer, wg-easy adalah antarmuka manajemen WireGuard berbasis Docker. Jalankan sebagai container Docker di VPS hub Anda: ia mengelola konfigurasi WireGuard, menghasilkan kode QR untuk klien mobile, menyediakan UI web untuk menambah/menghapus peer, dan menampilkan status koneksi.
Setup WireGuard saya saat ini: DigitalOcean Singapura Droplet (2 vCPU / 2GB) sebagai hub yang menjalankan wg-easy di Docker, dengan subnet WireGuard 10.8.0.0/24. Peer yang terhubung: 2 instance GCP Asia-Southeast1, 3 DigitalOcean Droplet, IP statis kantor Commsult Indonesia, dan laptop pengembangan saya. Semua komunikasi antar-server melewati tunnel WireGuard.