Skip to content
VDS · Sieť, IP adresa a domény

nftables: zložitejšie pravidlá

Keď už ufw nestačí: štruktúra tabuliek a reťazcov nftables, hotový funkčný config, množiny adries, obmedzenie rýchlosti a presmerovanie portov.

Aktualizované 23. augusta 2026

nftables je presne ten mechanizmus jadra, na ktorom beží ufw. Použi ho priamo vtedy, keď potrebuješ pomenované množiny adries, obmedzovanie rýchlosti, rôzne politiky pre jednotlivé rozhrania alebo presmerovanie portov — teda keď sa tvoje pravidlá už nezmestia do „povoliť port“.

Nemusíš používať oba nástroje naraz: pred prepnutím vypni ufw príkazom ufw disable, inak sa pravidlá budú prekrývať a pri ladení ťa to len pomýli.

Štruktúra

Pravidlá žijú v tabuľkách, tabuľky obsahujú reťazce a reťazce obsahujú pravidlá. Reťazec je naviazaný na fázu spracovania paketov (input, forward, output) a má predvolenú politiku.

apt install -y nftables
systemctl enable --now nftables
nft list ruleset

Funkčná konfigurácia

Súbor /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;
    }
}

Aplikuj a ulož:

nft -c -f /etc/nftables.conf
nft -f /etc/nftables.conf
systemctl restart nftables

Prepínač -c iba skontroluje syntax bez aplikovania pravidiel. Používaj ho vždy: politika drop s preklepom ti odreže prístup a budeš sa musieť dostať späť cez konzolu v paneli /hosting/vds/m/<id>.

Množiny adries a obmedzovanie rýchlosti

Pomenovaná množina sa upravuje za behu, bez načítania pravidiel:

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

Dynamická množina s časovým limitom sa hodí na vlastné blokovania:

set blocked {
    type ipv4_addr
    flags timeout
    timeout 1h
}

Presmerovanie a nahradzovanie adries

Potrebné, ak vnútri beží kontajner alebo tunel:

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
    }
}

Časté chyby

ChybaNásledokRiešenie
Chýba pravidlo ct state establishedOdpovede na odchádzajúce požiadavky sa odrežúPridaj ho ako prvé pravidlo
Zabudnuté iif lo acceptLokálne služby a databázy prestanú fungovaťPovol rozhranie loopback
Pravidlá aplikované, ale neuloženéPo reštarte je všetko otvorenéZapíš ich do /etc/nftables.conf
ufw a nftables spoluNepredvídateľný výsledokPonechaj si len jeden nástroj

Vyskúšaj novú sadu pravidiel v samostatnej relácii bez zatvorenia tej pracovnej. Jednoduchá poistka: sleep 300 && nft flush ruleset na pozadí — ak sa zamkneš von, prístup sa sám vráti.

Ak tieto detaily nepotrebuješ, vráť sa k ufw: pokryje väčšinu úloh.