Предыдущая значительная ветка 1.4 вышла 8 лет назад, в декабре 2007.
Введён слой совместимости iptables-compat (утилиты iptables-compat, iptables-compat-save, ...), позволяющий мигрировать на nftables, не ломая обратной совместимости. Много мелких исправлений и улучшений. Нарушения совместимости:
- удалены targets MIRROR и SAME;
- удалён match «unclean».
Nftables — замена для {ip | ip6 | arp | eb}tables, доступна начиная с ядра 3.13.
Основные отличия от iptables:
- C-подобный синтаксис описания правил, иерархичные блочные структуры вместо линейного списка. Более компактный и удобочитаемый.
- Таблицы и цепочки полностью настраиваемы, предопределённых цепочек нет. Гибкость и производительность.
- Можно задавать несколько действий в одном правиле.
- Счётчики для цепочек и правил перестали быть обязательными, включаются явным образом.
- Упрощённая работа с IPv4/IPv6 dualstack, можно использовать цепочки, обрабатывающие оба вида трафика.
- Поддержка множеств (как в ipset) и отображений (maps) позволяет выбирать определённые значения в зависимости от значений ключей, например:
nft add rule ip nat prerouting dnat tcp dport map { 80 : 192.168.1.100, 8888 : 192.168.1.101 }
. Могут быть именованными и обновляться динамически. - Правила компилируются в байткод в пространстве пользователя и загружаются в ядро. Позволяет: уменьшить объём кода в ядре за счёт выноса в userspace функций логики работы с протоколами; получать поддержку новых протоколов без обновления ядра за счёт обновления только userspace утилит.
Подробнее почитать можно тут: Why nftables?, Main_differences_with_iptables, Why will you love nftables.