Категория: Сеть и firewallОбновлено 2026-10-27

nftables

nftables это современная замена iptables в Linux, часть того же netfilter, но с более чистым синтаксисом и лучшей производительностью на больших объёмах правил.

Терминал с минимальной цепочкой input в nftables: policy drop и разрешены только порты 22, 80 и 443
Небольшой набор правил nftables для входящего трафика: всё блокируется, кроме нужных портов.

Что на самом деле изменилось по сравнению с iptables

nftables заменяет старый, менее читаемый синтаксис правил единым унифицированным фреймворком, убирает отдельные инструменты, которые раньше существовали для IPv4 и IPv6, и обрабатывает наборы правил более эффективно на серверах с большим объёмом трафика.

Где команды до сих пор застревают

Множество существующих руководств, внутренних скриптов и модулей систем управления конфигурацией написаны для синтаксиса iptables. Перенос сервера с уже настроенным набором правил iptables на nftables обычно означает переписывание правил, а не простое переключение в одну строку.

Как nftables соотносится с iptables и ufw, с примерами правил, см. здесь: руководство по файрволу в Linux.

Минимальный набор правил для сервера и безопасная загрузка

В Debian правила хранятся в /etc/nftables.conf и загружаются при старте после команды systemctl enable nftables.service, как сказано на вики Debian. Небольшой набор правил только для входящего трафика, адаптированный из примера для сервера на вики nftables, выглядит так:

flush ruleset
table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        ct state vmap { established : accept, related : accept, invalid : drop }
        iifname lo accept
        icmpv6 type { nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept
        tcp dport { 22, 80, 443 } accept
    }
}

Строка с neighbour discovery важна: вики отмечает, что без неё связь по IPv6 пропадает. Семейство inet обрабатывает IPv4 и IPv6 в одной таблице. Будьте внимательны с первой строкой: flush ruleset удаляет все таблицы, а не только ваши, поэтому правила, созданные другим программным обеспечением, тоже пропадут.

Проверьте файл перед применением, затем загрузите его. Загрузка через -f заменяет правила атомарно, поэтому нет момента, когда набор правил загружен наполовину:

sudo nft -c -f /etc/nftables.conf
sudo nft -f /etc/nftables.conf
sudo nft list ruleset

Переход с iptables и читаемость набора правил

Переписывать набор правил iptables вручную не обязательно. Проект nftables описывает путь трансляции в руководстве по миграции:

iptables-save > save.txt
iptables-restore-translate -f save.txt > ruleset.nft
nft -f ruleset.nft
nft list ruleset

Прочитайте результат, прежде чем ему доверять. В руководстве отмечено, что синтаксис после трансляции отличается от исходного, а там, где прямого перевода нет, в результате остаётся закомментированное правило, и по каждому такому случаю нужно принять решение вручную. Там же рекомендуется после успешной миграции переходить на нативные возможности, например наборы (sets) и карты вердиктов. Для отдельных правил iptables-translate показывает эквивалент в nft для одной команды.

Две привычки сохраняют набор правил поддерживаемым. Команда nft -a list ruleset показывает дескрипторы (handles) правил, которые нужны для delete rule, а всю конфигурацию лучше держать в одном файле, загружаемом целиком, а не добавлять правила вручную и забывать о них. Без сброса в начале повторная загрузка того же файла может оставить дубликаты правил, о чём вики предупреждает для загрузки на уровне таблиц. Наконец, не запускайте рядом инструменты nft и legacy iptables: проект предупреждает, что такое сочетание может привести к неожиданным результатам. Одну из частых причин обратиться к наборам nft показывает статья про ограничение частоты запросов.

Связанные термины: iptables, ufw, Firewall, Rate limiting.

Часто задаваемые вопросы

Является ли nftables полностью отдельным firewall от iptables?

Нет. Оба работают на базе одного и того же фреймворка Linux netfilter; nftables является просто новым интерфейсом к нему.

Какие дистрибутивы сейчас используют nftables по умолчанию?

Большинство современных версий Debian, Ubuntu и RHEL по умолчанию используют nftables как базовый механизм, даже когда старые команды остаются доступны для совместимости.

Нужно ли срочно переносить существующую настройку iptables?

Не срочно, так как команды iptables всё ещё работают через слой совместимости на большинстве систем, но новую настройку firewall в целом стоит писать сразу на nftables.

Как проверить файл nftables перед загрузкой?

Выполните nft -c -f и укажите имя файла. Параметр проверки валидирует команды, не применяя их, поэтому синтаксическая ошибка не оставит удалённый сервер со сломанным или пустым firewall.

Сохранятся ли после перезагрузки правила, добавленные вручную через nft?

Нет. Команды, введённые в консоли, меняют только работающий набор правил. Чтобы правила сохранились, поместите их в файл, который дистрибутив загружает при старте, например /etc/nftables.conf в Debian, и включите службу nftables.

Хотите увидеть, в каком состоянии ваш сервер?

Запустите бесплатную read-only проверку сервера или откройте Security Lab и посмотрите цикл обнаружение, сдерживание, восстановление, проверка в действии.

Получить бесплатную проверку сервераОткрыть Security Lab