nftables: aturan yang lebih kompleks
Ketika ufw sudah tidak cukup: struktur tabel dan chain nftables, config siap pakai, set alamat, rate limiting, dan port forwarding.
Diperbarui 23 Agustus 2026
nftables adalah mekanisme kernel yang menjadi dasar kerja ufw. Anda sebaiknya menggunakannya secara langsung saat membutuhkan set alamat bernama, pembatasan laju, kebijakan berbeda per antarmuka, atau port forwarding — yaitu saat aturan Anda tidak lagi cukup dengan sekadar "izinkan sebuah port".
Anda tidak perlu memakai kedua alat sekaligus: sebelum beralih, nonaktifkan ufw dengan ufw disable, jika tidak aturannya akan tumpang tindih dan membingungkan Anda saat debugging.
Struktur
Aturan berada di dalam tabel, tabel berisi chain, dan chain berisi aturan. Sebuah chain terikat pada tahap pemrosesan paket (input, forward, output) dan memiliki kebijakan default.
apt install -y nftables
systemctl enable --now nftables
nft list ruleset
Konfigurasi yang berfungsi
File /etc/nftables.conf:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
set admins {
type ipv4_addr
elements = { 203.0.113.5, 198.51.100.7 }
}
chain input {
type filter hook input priority 0; policy drop;
iif lo accept
ct state established,related accept
ct state invalid drop
ip protocol icmp icmp type echo-request limit rate 5/second accept
tcp dport 22 ip saddr @admins accept
tcp dport 22 ct state new limit rate 6/minute accept
tcp dport { 80, 443 } accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
Terapkan dan simpan:
nft -c -f /etc/nftables.conf
nft -f /etc/nftables.conf
systemctl restart nftables
Flag -c hanya memeriksa sintaks tanpa menerapkan aturan. Selalu gunakan ini: kebijakan drop dengan salah ketik akan memutus akses, dan Anda harus masuk kembali melalui konsol di panel /hosting/vds/m/<id>.
Set alamat dan pembatasan laju
Set bernama dapat diubah secara langsung, tanpa memuat ulang aturan:
nft add element inet filter admins { 192.0.2.10 }
nft delete element inet filter admins { 198.51.100.7 }
nft list set inet filter admins
Set dinamis dengan timeout berguna untuk blok kustom:
set blocked {
type ipv4_addr
flags timeout
timeout 1h
}
Forwarding dan substitusi alamat
Diperlukan jika ada container atau tunnel yang berjalan di dalam:
table ip nat {
chain prerouting {
type nat hook prerouting priority -100;
tcp dport 8443 dnat to 10.10.0.2:443
}
chain postrouting {
type nat hook postrouting priority 100;
oifname "eth0" masquerade
}
}
Kesalahan umum
| Kesalahan | Akibat | Solusi |
|---|---|---|
Tidak ada aturan ct state established | Balasan untuk permintaan keluar terpotong | Tambahkan sebagai aturan pertama |
Lupa iif lo accept | Layanan lokal dan database rusak | Izinkan antarmuka loopback |
| Aturan diterapkan tetapi tidak disimpan | Semuanya terbuka setelah reboot | Tulis ke /etc/nftables.conf |
| ufw dan nftables dipakai bersamaan | Hasilnya tidak dapat diprediksi | Pertahankan hanya satu alat |
Uji ruleset baru di sesi terpisah tanpa menutup sesi kerja Anda. Pengaman sederhana:
sleep 300 && nft flush rulesetdi latar belakang — jika Anda terkunci di luar, akses kembali sendiri.
Jika Anda tidak membutuhkan detail ini, kembali ke ufw: alat itu mencakup sebagian besar tugas.