Настройка firewall через nftables вместо iptables: личный опыт перехода и тонкости конфигурации

ГлавнаяНастройка firewall через nftables вместо iptables: личный опыт перехода и тонкости конфигурации

Содержание

Если вы когда-то администрировали сервер на Linux, то наверняка сталкивались с iptables. Этот инструмент годами был стандартом для настройки firewall в Linux, но с выходом новых дистрибутивов вроде Debian 12 или Ubuntu 22.04 постепенно на его место приходит nftables — более гибкое и современное решение. Я как раз недавно прошла весь путь миграции со «старичка» iptables на nftables и хочу поделиться опытом — по-человечески, без заумных инструкций, но с работающими командами и нюансами.


Почему iptables устарел — и что предлагает nftables

Сначала немного теории, чтобы было проще ориентироваться.

iptables
основан на фреймворке netfilter и давно используется для управления трафиком. Однако у него есть ряд ограничений:

  • запутанный синтаксис;
  • невозможность объединять правила в логические блоки;
  • разные утилиты (
    iptables
    ,
    ip6tables
    ,
    ebtables
    ,
    arptables
    ) для разных протоколов.

nftables, наоборот, предоставляет унифицированный подход и один бинарник

nft
, которым можно управлять всеми типами фильтрации. Он быстрее, мощнее и позволяет писать конфигурации более понятно.

В новых системах по умолчанию уже используется режим iptables-nft, то есть iptables-команды проксируются на движок nftables. Однако это не совсем нативно — всё равно лучше перейти полностью на чистый nftables.


Как понять, какой движок используется сейчас

Запустите:

iptables -V

Если вы видите в ответе что-то вроде

iptables v1.8.9 (nf_tables)
, значит, используется режим iptables-nft, а не классический iptables. Это первый признак, что можно (и стоит) мигрировать.


Установка и активация nftables (Ubuntu/Debian)

На Ubuntu 22.04, Debian 12 и большинстве свежих систем

nftables
уже предустановлен. Но на всякий случай:

sudo apt update sudo apt install nftables

Активируем:

sudo systemctl enable nftables sudo systemctl start nftables

Проверим статус:

sudo systemctl status nftables

Базовая настройка firewall через nftables

Создаём конфигурационный файл, например

/etc/nftables.conf
:

#!/usr/sbin/nft -f flush ruleset table inet filter { chain input { type filter hook input priority 0; policy drop; # Разрешаем loopback iif lo accept # Разрешаем уже установленные соединения ct state established,related accept # Разрешаем SSH tcp dport 22 accept # Разрешаем HTTP и HTTPS 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; } }

Применяем правила:

sudo nft -f /etc/nftables.conf

Сохраняем для автозапуска:

sudo netfilter-persistent save

Таблица сравнения iptables vs nftables

Характеристикаiptablesnftables
СинтаксисРазрозненныйУнифицированный
ПроизводительностьНижеВыше
Поддержка IPv6Через отдельные утилитыВстроенная
Работа с NAT, фильтрацией, логамиЧерез отдельные chainsЧерез unified table
Поддержка atomic операцийНетДа
Совместимость с iptablesДа (
iptables-nft
)
Да, можно мигрировать

Полезные команды nftables

Вот список базовых и часто используемых команд:

# Показать текущие правила sudo nft list ruleset # Показать таблицы sudo nft list tables # Добавить правило "вручную" (например, открыть порт 8080) sudo nft add rule inet filter input tcp dport 8080 accept # Удалить правило sudo nft delete rule inet filter input handle <номер> # Сбросить все правила sudo nft flush ruleset

Особенности и подводные камни

  1. iptables dport не работает напрямую с nft — вместо этого используйте
    tcp dport
    .
  2. Убедитесь, что у вас удалён iptables-persistent, иначе он может конфликтовать.
  3. Не путайте
    nft list
    с
    nft list rules
    и
    nft list ruleset
    — последняя команда показывает всё сразу, и это удобно.

Личный опыт

Когда я впервые перешла на

nftables
, больше всего времени ушло на то, чтобы понять логику chains и осознанно сформировать policy. Но когда я разобралась — это оказалось в разы удобнее, чем iptables. Особенно удобно, что можно писать правила в логических блоках, группировать порты, использовать
sets
, и всё это читается, как человеческий текст.


Итого…

nftables
— это современный способ конфигурирования firewall в Linux. Если вы всё ещё сидите на iptables (или работаете в
iptables-nft
режиме), я очень рекомендую хотя бы протестировать чистую конфигурацию на
nftables
. Она логичнее, быстрее и перспективнее. Особенно на новых VPS с Debian 12, Ubuntu 22.04 и выше.

VPS на год? Мы добавим сверху

Сэкономьте месяц — просто введите

Месяц в подарок
COPIED
NEWCOMM COPIED