До основного вмісту

nftables: сучасна заміна iptables у Linux

VDS / VPS сервери · 29.09.2026

Що таке nftables і чим він кращий за iptables

nftables — фреймворк фільтрації пакетів у ядрі Linux, який з версії Linux 3.13 поступово замінює iptables, ipset і ip6tables. У Debian 10+, Ubuntu 20.04+ і більшості сучасних дистрибутивів nftables застосовується за замовчуванням, а команда iptables транслює правила в nftables через сумісний шар iptables-nft.

Головні переваги: єдиний синтаксис для IPv4 та IPv6 замість окремих iptables і ip6tables, атомарне завантаження всього набору правил без проміжних станів, вбудовані множини (sets) замість окремого ipset, і компактний, читабельний формат правил.

Встановлення nftables і перехід з iptables

Перевірка поточного бекенду:

nft --version
iptables --version

Рядок nf_tables у виводі iptables --version означає, що iptables уже працює через nftables-бекенд. Встановлення пакета там, де його бракує:

apt install -y nftables
systemctl enable --now nftables

Перед переходом варто зберегти поточні правила iptables, щоб не втратити доступ до сервера — особливо на сервері, налаштованому за інструкцією про безпечне налаштування sshd_config з нестандартним портом SSH.

Структура правил: таблиці, ланцюги, правила

nftables організовує правила у три рівні: таблиці (table) прив'язані до сімейства адрес (ip, ip6, inet), ланцюги (chain) задають точку перехоплення пакетів (input, forward, output), а правила (rule) всередині ланцюга виконуються по порядку.

ЕлементПризначення
tableконтейнер для ланцюгів одного сімейства адрес
chainточка обробки пакетів: input, output, forward
ruleумова та дія: accept, drop, reject
setіменована група значень — портів чи адрес

Сімейство inet об'єднує IPv4 та IPv6 в одній таблиці — це компактніше за ведення двох паралельних конфігурацій.

Базове налаштування файрвола на nftables

Конфігурація зазвичай зберігається у /etc/nftables.conf. Приклад базового набору правил: дозвіл локального інтерфейсу, встановлених з'єднань, SSH і HTTP/HTTPS, відхилення іншого вхідного трафіку.

#!/usr/sbin/nft -f
flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        iif "lo" accept
        ct state established,related accept
        tcp dport 22 accept
        tcp dport { 80, 443 } accept
        ip protocol icmp accept
    }
    chain forward {
        type filter hook forward priority 0; policy drop;
    }
    chain output {
        type filter hook output priority 0; policy accept;
    }
}

Застосування набору правил:

nft -f /etc/nftables.conf

Таку саму логіку застосовує UFW, що є надбудовою над nftables — базові принципи описані у статті про налаштування файрвола UFW.

Корисні команди для діагностики

Основні команди перегляду та налагодження правил:

nft list ruleset
nft list table inet filter
nft list chain inet filter input
nft delete rule inet filter input handle 5

nft list ruleset виводить усі чинні правила в усіх таблицях, а handle в останній команді — номер конкретного правила, впізнаваний прапорцем -a: nft -a list chain inet filter input.

Автозапуск і збереження правил

Файл /etc/nftables.conf підключається службою systemd під час завантаження сервера:

systemctl enable nftables
systemctl restart nftables

Правила, додані командою nft add rule напряму в терміналі, не зберігаються після перезавантаження — їх прописують у конфігураційному файлі. Fail2ban теж уміє працювати з бекендом nftables — подробиці у статті про налаштування Fail2Ban.

Підсумок: чек-лист переходу на nftables

  • Перевірте поточний бекенд: рядок nf_tables у iptables --version підтверджує перехід.
  • Основні рівні правил: table → chain → rule, сімейство inet об'єднує IPv4 та IPv6.
  • Правила зберігайте у /etc/nftables.conf і застосовуйте через nft -f.
  • Для налагодження застосовуйте nft list ruleset і nft -a list chain.
  • Перед застосуванням нових правил тримайте відкритою резервну SSH-сесію — помилка в ланцюзі input блокує доступ.
← Назад до бази знань Поставити питання підтримці