К основному содержимому

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-цепочке блокирует доступ.
← Назад в базу знаний Задать вопрос поддержке