Episode ini membahas integrasi WireGuard dengan firewall: aturan nftables dan iptables untuk membuka port UDP, menyusun kebijakan lewat PostUp dan PostDown, serta access control berbasis kunci yang memungkinkan pencabutan akses secara instan.

WireGuard mengamankan tunnel, tetapi bukan pengganti firewall. Firewall menentukan siapa yang bisa mencapai port 51820, trafik apa yang boleh lewat interface wg0, dan apa yang terjadi pada paket yang masuk dari tunnel. Keduanya bekerja bersama: WireGuard menangani kriptografi, firewall menangani kebijakan jaringan.
Episode 14 membahas integrasi WireGuard dengan nftables dan iptables, kebijakan lewat PostUp dan PostDown, serta access control berbasis kunci yang membuat pencabutan akses menjadi instan.
Agar peer bisa handshake, port UDP ListenPort harus bisa dijangkau dari luar. Di nftables:
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
udp dport 51820 accept
}
}Di iptables, baris yang setara:
sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPTAturan di atas mengizinkan handshake dari siapa pun di internet. Untuk membatasi, tambahkan -s <alamat publik peer> pada aturan iptables.
PostUp dan PostDown menjalankan perintah saat interface naik dan turun. Ini tempat yang tepat untuk aturan yang hidup dan mati bersama wg0 — tidak perlu skrip terpisah:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <kunci privat server>
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 MASQUERADEDua hal yang perlu diperhatikan:
&&.PostUp wajib punya pasangan penghapusnya di PostDown, agar tidak ada aturan menggantung ketika interface turun.Untuk kontrol yang lebih halus, pisahkan kebijakan berdasarkan arah trafik. Misalnya client remote access boleh menjangkau subnet aplikasi, tetapi tidak boleh menjangkau subnet admin:
table inet filter {
chain forward {
type filter hook forward priority 0; policy drop;
iifname "wg0" oifname "eth0" ip saddr 10.0.0.0/24 accept
iifname "eth0" oifname "wg0" ct state related,established accept
}
}Aturan ini membangun model zona: wg0 adalah zona client, eth0 adalah zona jaringan internal. Client hanya boleh keluar ke eth0, dan paket balasan hanya diterima bila masih bagian dari koneksi yang sudah diizinkan. Model zona seperti ini dipakai firewalld secara internal.
Jika kalian memakai firewalld, register interface tunnel ke zona khusus dan izinkan trafik antar zona yang dibutuhkan. Pendekatannya konsisten dengan konsep yang sama — membedakan interface tepercaya, tunnel, dan internet.
Karena identitas WireGuard adalah kunci publik, mengendalikan akses sama dengan mengendalikan daftar peer. Menambah akses berarti menambah peer, mencabut akses berarti menghapus peer. Tidak ada daftar user yang perlu disinkronkan.
sudo wg set wg0 peer <PUBLIK_CLIENT> removePerintah wg set wg0 peer ... remove membuat peer tersebut langsung tidak bisa handshake. Dalam kombinasi dengan aturan firewall zona, hasilnya: peer yang tidak dikenal tidak akan pernah mengirim paket valid, dan peer yang dikenal tetap dibatasi oleh kebijakan zona.
Kebijakan terbaik memakai kedua lapisan sekaligus: cryptokey routing menentukan siapa yang bisa masuk tunnel, firewall zona menentukan ke mana trafik boleh pergi setelah berada di dalam. Lapisan pertama menjawab "apakah kalian sah", lapisan kedua menjawab "apa yang boleh kalian lakukan".
Sebelum menganggap konfigurasi aman, periksa apa yang benar-benar aktif:
sudo nft list ruleset
sudo iptables -S
sudo iptables -t nat -SBandingkan output dengan yang direncanakan. Aturan FORWARD dan NAT yang tidak dikenal adalah tanda pertama ada konfigurasi menyimpang. Tambahkan audit ini ke kebiasaan pemeliharaan kalian bersama audit peer di episode 12.
Episode 14 menuntaskan integrasi firewall dan access control: membuka port UDP, menyusun kebijakan lewat PostUp dan PostDown, menerapkan model zona dengan nftables, dan mengendalikan akses berbasis kunci.
Inti yang harus dibawa pulang:
ListenPort agar handshake bisa terjadi.PostUp dan PostDown memakai titik koma untuk banyak perintah.PostUp punya pasangan hapus di PostDown.nft list ruleset dan iptables -S menjaga kebersihan kebijakan.Di episode 15 selanjutnya kita membahas performance dan kernel optimizations — multiqueue TUN, offloading GRO dan GSO, benchmark throughput dengan iperf3, serta perbandingan performa WireGuard dengan OpenVPN dan IPsec.