Episode ini membahas dua topologi multi-peer WireGuard: hub-and-spoke dengan server sebagai pusat routing, dan full mesh di mana semua node saling terhubung. Kalian juga mempelajari tantangan scaling O(n pangkat dua) dan kapan memilih masing-masing.

Setelah remote access, pertanyaannya berkembang: bagaimana jika bukan hanya client yang butuh bicara ke server, tetapi antar client juga? Jawabannya bergantung pada topologi. Ada dua pendekatan utama — hub-and-spoke dan full mesh — dan keduanya menyelesaikan masalah yang berbeda.
Episode 11 membandingkan kedua topologi secara praktis: cara menyusun konfigurasi, bagaimana trafik mengalir, dan berapa biaya scaling yang harus kalian tanggung untuk setiap pilihan.
Dalam topologi hub-and-spoke, satu node menjadi hub dan semua node lain (spoke) hanya terhubung ke hub. Trafik antar spoke berjalan dua hop: dari spoke asal ke hub, lalu dari hub ke spoke tujuan.
[Interface]
Address = 10.0.0.3/24
PrivateKey = <kunci privat spoke>
[Peer]
PublicKey = <kunci publik hub>
AllowedIPs = 10.0.0.0/24
Endpoint = 203.0.113.5:51820
PersistentKeepalive = 25Perhatikan nilai AllowedIPs = 10.0.0.0/24 — spoke menganggap seluruh subnet tunnel dimiliki hub, termasuk alamat spoke lain. Ini cara paling sederhana bagi spoke: hanya satu peer, satu endpoint, dan satu rute.
Di sisi hub, setiap spoke didaftarkan sebagai peer dengan AllowedIPs masing-masing, sehingga hub bisa merutekan trafik antar spoke:
sudo wg set wg0 peer <PUBLIK_SPOKE_A> allowed-ips 10.0.0.2/32
sudo wg set wg0 peer <PUBLIK_SPOKE_B> allowed-ips 10.0.0.3/32Hub juga harus meneruskan paket antar spoke. Kebijakan nftables yang menerima semua trafik wg0 cukup untuk ini:
table inet wg {
chain forward {
type filter hook forward priority 0; policy drop;
iifname "wg0" accept
oifname "wg0" accept
}
}Pada full mesh, setiap node memiliki peer ke semua node lain, dan trafik mengalir langsung tanpa perantara. Untuk tiga node, setiap node punya dua [Peer]; untuk lima node, empat [Peer], dan seterusnya.
[Interface]
Address = 10.0.0.1/24
PrivateKey = <kunci privat A>
[Peer]
PublicKey = <kunci publik B>
AllowedIPs = 10.0.0.2/32
Endpoint = 203.0.113.2:51820
[Peer]
PublicKey = <kunci publik C>
AllowedIPs = 10.0.0.3/32
Endpoint = 203.0.113.3:51820Keunggulan full mesh adalah latensi minimal dan tidak ada titik tunggal: jika satu node mati, node lain tetap saling terhubung.
Kelemahan full mesh muncul saat node bertambah. Jumlah koneksi yang harus dikelola adalah kombinasi pasangan node: untuk n node dibutuhkan n dikali n-1 dibagi 2 koneksi. Setiap node menyimpan n dikurangi 1 peer, dan setiap perubahan kunci menyebar ke semua node.
Dengan 10 node ada 45 koneksi; dengan 50 node ada 1.225 koneksi. Memperbarui kunci di satu node berarti memperbarui di 49 node lain. Inilah alasan mengapa full mesh tidak praktis di atas beberapa puluh node tanpa otomasi.
Kombinasi juga mungkin: beberapa spoke penting dijadikan mesh sekunder di antara mereka, sementara sisanya tetap lewat hub.
Alat seperti Netmaker, Headscale, dan Tailscale mengotomatisasi pembentukan mesh sehingga konfigurasi peer dikelola secara terpusat sementara trafik mengalir langsung antar node. Ini menghapus sebagian besar biaya manual full mesh. Episode 20 akan membahas alat-alat ini lebih dalam.
Episode 11 menuntaskan topik topologi multi-peer: hub-and-spoke menyederhanakan pengelolaan dengan satu titik pusat, sedangkan full mesh menawarkan performa dan ketahanan terbaik dengan biaya scaling yang naik secara kuadratik.
Inti yang harus dibawa pulang:
Di episode 12 selanjutnya kita membahas key rotation dan security lifecycle — mengganti kunci secara live dengan wg set, strategi rotasi yang mulus tanpa memutus koneksi, backup kunci, audit peer, dan prosedur disaster recovery.