Вниманию общественности представлен первый публичный выпуск проекта nftables, новой реализации пакетного фильтра для Linux, идущего на смену iptables, как в свое время iptables пришел на смену ipchains, а ipchains заменил собой ipfwadm. Главным отличием nftables, является не только изменившийся синтаксис задания правил, но и совершенно новый подход в их трансляции: определенные пользователем правила теперь преобразуются в специальный упрощенный псевдокод, который используется для принятия решения по дальнейшим действиям с пакетом через специальный интерфейс внутри ядра. Nftables состоит из трех частей: кода фильтрации, работающего внутри ядра, связующей интерфейсной библиотеки libnl, работающей с ядром через netlink, и фронтэнда, работающего на уровне пользователя. Для формирования правил фильтрации в nftables представлена утилита nft , которая проверяет корректность правил и транслирует их в псевдокод. Правила теперь могут добавляться не только инкрементально, но и загружаться целиком из файла на диске, как это сделано, например, в пакетном фильтре PF. Код фильтра, работающий на уровне ядра избавлен от блокировок и значительно сокращен, все операции по определению условий и связанных с ними действий выполняются на уровне пользователя, в ядре производится только базовый набор операций, таких как чтение данных из пакета, сравнение данных и т.п. В пакетный фильтр интегрирована поддержка словарного маппинга и поиска по наборам правил (sets), работа которых реализована через хеши и rb-деревья. При этом элементы наборов могут быть заданы в виде диапазонов значений (можно определять подсети). Фильтр более не зависит от типа протокола, поддерживая IPv4, IPv6 и бриджинг. По умолчанию не производится учет пакетов и байт трафика, подпадающих под правила, их учет нужно включать отдельно. Новый синтаксис правил в корне не похож на то, что было раньше и больше напоминает сценарий, в котором можно задавать условия, создавать переменные, выполнять математические операции. Язык классификации правил основан на реальной грамматике, при обработке которой используется сгенерированный в bison парсер. Например, типичный набор правил: Code: include "ipv4-filter" chain filter output { ct state established,related accept tcp dport 22 accept counter drop } По заявлению разработчиков, код nftables еще находится на стадии альфа тестирования и не подходит для использовании в промышленной эксплуатации, тем не менее в процессе регулярного тестирования последний крах ядра из-за сбоя nftables был зафиксирован несколько месяцев назад. Источник: http://www.opennet.ru/opennews/art.shtml?num=20843