Что пришло на смену iptables в современных Linux-системах?

«Что пришло на смену iptables в современных Linux-системах?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Прямой заменой классического iptables является nftables — новый фреймворк, встроенный в ядро Linux, который предоставляет единый интерфейс для фильтрации пакетов, трансляции адресов (NAT) и классификации трафика.

Почему nftables лучше для DevOps?

  • Единый синтаксис: Один набор правил для IPv4, IPv6, ARP и сетевых мостов (bridge), что упрощает управление.
  • Улучшенная производительность: Использует структуры данных в ядре (например, хэш-таблицы), что часто дает лучшую производительность по сравнению с длинными линейными цепочками iptables.
  • Более выразительный язык: Поддержка словарей (maps) и наборов (sets) позволяет создавать сложные правила проще.
  • Упрощенная миграция: Существуют утилиты (iptables-translate, ip6tables-translate) для конвертации существующих правил.

Пример сравнения:

  • iptables: Разрешить SSH для определенной сети.
    iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
  • nftables: То же самое правило.
    nft add rule ip filter input ip saddr 192.168.1.0/24 tcp dport 22 accept

    Или в декларативном стиле в файле /etc/nftables.conf:

    table ip filter {
        chain input {
            type filter hook input priority 0;
            ip saddr 192.168.1.0/24 tcp dport ssh accept
        }
    }

Текущее состояние: В большинстве современных дистрибутивов (RHEL 8+, Ubuntu 20.04+, Debian 10+) инструменты iptables, ip6tables и т.д. являются символическими ссылками на версии, использующие бэкенд nftables (iptables-nft). Это обеспечивает обратную совместимость. Для новых развертываний я рекомендую изучать и использовать нативный синтаксис nft.