Skip to content
VDS · Jaringan, alamat IP, dan domain

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

KesalahanAkibatSolusi
Tidak ada aturan ct state establishedBalasan untuk permintaan keluar terpotongTambahkan sebagai aturan pertama
Lupa iif lo acceptLayanan lokal dan database rusakIzinkan antarmuka loopback
Aturan diterapkan tetapi tidak disimpanSemuanya terbuka setelah rebootTulis ke /etc/nftables.conf
ufw dan nftables dipakai bersamaanHasilnya tidak dapat diprediksiPertahankan hanya satu alat

Uji ruleset baru di sesi terpisah tanpa menutup sesi kerja Anda. Pengaman sederhana: sleep 300 && nft flush ruleset di 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.