Если вы когда-то администрировали сервер на 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
| Характеристика | 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, больше всего времени ушло на то, чтобы понять логику chains и осознанно сформировать policy. Но когда я разобралась — это оказалось в разы удобнее, чем iptables. Особенно удобно, что можно писать правила в логических блоках, группировать порты, использовать sets, и всё это читается, как человеческий текст.
Итого…
nftables — это современный способ конфигурирования firewall в Linux. Если вы всё ещё сидите на iptables (или работаете в iptables-nft режиме), я очень рекомендую хотя бы протестировать чистую конфигурацию на nftables. Она логичнее, быстрее и перспективнее. Особенно на новых VPS с Debian 12, Ubuntu 22.04 и выше.