Belajar WireGuard - Routing & Allowed IPs
Episode 6 of 23

Belajar WireGuard - Routing & Allowed IPs

Episode ini membedah AllowedIPs sebagai inti cryptokey routing: kenapa ia bukan firewall, bagaimana memilih antara full tunnel dengan 0.0.0.0/0 dan split tunnel dengan subnet spesifik, serta cara wg-quick menambahkan rute ke ip route secara otomatis.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Dari semua konsep WireGuard, AllowedIPs adalah yang paling sering disalahpahami. Banyak yang mengiranya aturan firewall. Padahal, AllowedIPs adalah inti dari cryptokey routing: dia menentukan alamat mana yang dianggap "milik" peer tertentu, baik untuk trafik keluar maupun untuk memvalidasi trafik masuk.

Episode 6 menjelaskan cara kerja AllowedIPs, bagaimana memilih antara full tunnel dan split tunnel, serta bagaimana wg-quick menerjemahkan baris ini menjadi rute di routing table. Setelah episode ini, kalian akan bisa merancang kebijakan routing tunnel yang presisi.

Untuk benar-benar menguasai bagian ini, kalian perlu menggeser cara berpikir: dari "daftar izin di firewall" menjadi "peta kepemilikan alamat". Perubahan perspektif kecil ini akan mencegah banyak kebingungan saat kalian merancang topologi dengan banyak peer dan subnet.

AllowedIPs: Bukan Firewall

Dua Arah dalam Satu Field

Setiap AllowedIPs bekerja untuk dua arah sekaligus. Untuk trafik keluar, ia berkata "kirim paket ke alamat ini lewat peer itu". Untuk trafik masuk, ia berkata "hanya terima paket dari alamat ini jika berasal dari peer itu". Kedua arah itu diikat oleh kriptografi, bukan oleh pemfilteran berbasis daftar.

Konsekuensinya, AllowedIPs bukan daftar izin yang menolak yang lain secara eksplisit. Paket masuk yang alamatnya tidak cocok dengan AllowedIPs peer mana pun akan dibuang oleh kernel, bukan diferuskan ke routing table. Inilah mengapa menambah subnet di AllowedIPs selalu diimbangi dengan menambahkan rute di sisi jaringan.

Perbedaan dengan firewall juga terlihat dari cara WireGuard memperlakukan paket yang tidak cocok: tidak ada log, tidak ada penolakan eksplisit, hanya paket yang dibuang diam-diam. Karena itu, ketika trafik tunnel terasa hilang, langkah pertama adalah memeriksa apakah alamat tujuan tercakup AllowedIPs peer yang tepat.

Contoh Dua Arah

AllowedIPs untuk satu peer di server
[Peer]
PublicKey = <kunci publik client>
AllowedIPs = 10.0.0.2/32

Dengan baris ini, server mengirim trafik menuju 10.0.0.2 lewat tunnel client, dan hanya menerima paket dari 10.0.0.2 jika paket itu datang dari kunci publik tersebut.

Full Tunnel dengan 0.0.0.0/0

Meneruskan Semua Trafik

Untuk remote access yang ingin membawa seluruh trafik perangkat lewat tunnel, pakai AllowedIPs = 0.0.0.0/0. Ini dikenal sebagai full tunnel: semua trafik IPv4 perangkat masuk tunnel, keluar dari sisi server, lalu diteruskan ke internet.

Full tunnel di sisi client
[Interface]
Address = 10.0.0.2/24
PrivateKey = <kunci privat client>
 
[Peer]
PublicKey = <kunci publik server>
AllowedIPs = 0.0.0.0/0
Endpoint = 203.0.113.5:51820

Dengan AllowedIPs = 0.0.0.0/0, wg-quick menjadikan default route lewat wg0. Efeknya: alamat IP publik kalian yang terlihat dunia luar adalah alamat server, bukan alamat lokal. Ini pola yang dipakai untuk melewati filter geografis atau jaringan yang tidak tepercaya.

Perlu diingat, full tunnel juga mengalihkan trafik lokal kalian. Akses ke perangkat di jaringan yang sama lewat alamat lokal harus ditangani lewat rute yang lebih spesifik, jika tidak trafik tersebut ikut terbawa ke server.

Persyaratan di Sisi Server

Full tunnel hanya berguna jika server bersedia meneruskan trafik kalian. Server perlu mengaktifkan forwarding dan masquerade:

Aktifkan forwarding dan NAT di server
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Tanpa MASQUERADE, paket yang keluar dari server tetap membawa alamat tunnel 10.0.0.2 yang tidak bisa di-rute balik di internet.

Split Tunnel dengan Subnet Spesifik

Mengirim Hanya Trafik Tertentu

Tidak semua koneksi harus lewat tunnel. Dengan split tunnel, kalian hanya me-rute subnet tertentu lewat WireGuard dan membiarkan sisanya lewat internet biasa:

Split tunnel menuju subnet kantor
[Peer]
PublicKey = <kunci publik server>
AllowedIPs = 10.0.0.0/24, 192.168.50.0/24
Endpoint = 203.0.113.5:51820

AllowedIPs bisa menampung banyak subnet yang dipisahkan koma. Trafik menuju 10.0.0.0/24 dan 192.168.50.0/24 masuk tunnel, sedangkan browsing biasa tetap lewat koneksi asli kalian. Split tunnel lebih hemat bandwidth dan lebih cepat untuk akses internet sehari-hari.

Cara Kerja dengan ip route

Ketika wg-quick menerapkan AllowedIPs, ia menambahkan rute spesifik untuk setiap subnet tersebut di routing table. Periksa hasilnya:

Lihat rute yang ditambahkan wg-quick
ip route show

Output dari ip route show menampilkan rute menuju 10.0.0.0/24 dan 192.168.50.0/24 dengan dev wg0. Rute spesifik ini menang karena lebih panjang prefix-nya dibanding default route. Jika kalian tidak ingin wg-quick menyentuh routing table, set Table = off di [Interface] — episode 9 akan memakai trik ini untuk site-to-site.

Memilih Default Route dengan Aturan Prioritas

Kadang kalian ingin semua trafik lewat tunnel kecuali beberapa subnet. Solusinya: gabungkan AllowedIPs = 0.0.0.0/0 dengan menambahkan rute eksplisit yang mengembalikan subnet tertentu ke gateway lokal, atau pakai fitur Table dan policy routing ip rule untuk kontrol granular.

Aturan prioritas ini penting dipahami karena mudah membuat salah konfigurasi: rute yang paling spesifik selalu menang, dan wg-quick menambahkan rute spesifik untuk setiap AllowedIPs. Sebelum menambah aturan ip rule, pastikan kalian sudah paham urutan prioritas tabel routing di Linux.

Mulailah dari kebutuhan yang paling sederhana: tuliskan subnet mana yang harus masuk tunnel dan mana yang tidak, baru terjemahkan ke AllowedIPs. Disiplin ini mencegah aturan yang saling bertabrakan di kemudian hari.

Penutup

Episode 6 menuntaskan pemahaman routing: AllowedIPs adalah keputusan cryptokey routing dua arah, full tunnel dipicu 0.0.0.0/0, split tunnel memakai subnet spesifik, dan wg-quick menerjemahkan semuanya menjadi rute di ip route.

Inti yang harus dibawa pulang:

  • AllowedIPs menentukan kepemilikan alamat, bukan sekadar izin firewall.
  • 0.0.0.0/0 membuat full tunnel lewat server.
  • Subnet spesifik membuat split tunnel yang hemat bandwidth.
  • wg-quick menambahkan rute otomatis; Table = off untuk menonaktifkannya.
  • Full tunnel butuh ip_forward dan MASQUERADE di server.

Di episode 7 selanjutnya kita membahas NAT traversal dan endpoint discovery — cara WireGuard tetap berkomunikasi dengan peer di belakang NAT, peran PersistentKeepalive, teknik UDP hole punching, dan bagaimana endpoint dipelajari secara dinamis.

Belajar WireGuard - Routing & Allowed IPs | Belajar WireGuard