Если вы когда-то администрировали сервер на Linux, то наверняка сталкивались с iptables. Этот инструмент годами был стандартом для настройки firewall в Linux, но с выходом новых дистрибутивов вроде Debian 12 или Ubuntu 22.04 постепенно на его место приходит nftables — более гибкое и современное решение. Я как раз недавно прошла весь путь миграции со «старичка» iptables на nftables и хочу поделиться опытом — по-человечески, без заумных инструкций, но с работающими командами и нюансами.
Почему iptables устарел — и что предлагает nftables
Сначала немного теории, чтобы было проще ориентироваться.
iptables
- запутанный синтаксис;
- невозможность объединять правила в логические блоки;
- разные утилиты (,
iptables
,ip6tables
,ebtables
) для разных протоколов.arptables
nftables, наоборот, предоставляет унифицированный подход и один бинарник
nft
В новых системах по умолчанию уже используется режим iptables-nft, то есть iptables-команды проксируются на движок nftables. Однако это не совсем нативно — всё равно лучше перейти полностью на чистый nftables.
Как понять, какой движок используется сейчас
Запустите:
iptables -V
Если вы видите в ответе что-то вроде
iptables v1.8.9 (nf_tables)
Установка и активация 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
Характеристика | iptables | nftables |
---|---|---|
Синтаксис | Разрозненный | Унифицированный |
Производительность | Ниже | Выше |
Поддержка 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
Особенности и подводные камни
- iptables dport не работает напрямую с nft — вместо этого используйте .
tcp dport
- Убедитесь, что у вас удалён iptables-persistent, иначе он может конфликтовать.
- Не путайте с
nft list
иnft list rules
— последняя команда показывает всё сразу, и это удобно.nft list ruleset
Личный опыт
Когда я впервые перешла на
nftables
sets
Итого…
nftables
iptables-nft
nftables
VPS на год? Мы добавим сверху
Сэкономьте месяц — просто введите