Разработчики Netfilter представили замену iptables
Вниманию общественности [URL="http://marc.info/?l=linux-netdev&m=123735060618579&w=2"]представлен[/URL] первый публичный выпуск проекта nftables, новой реализации пакетного фильтра для Linux, идущего на смену iptables, как в свое время iptables пришел на смену ipchains, а ipchains заменил собой ipfwadm. Главным отличием nftables, является не только изменившийся синтаксис задания правил, но и совершенно новый подход в их трансляции: определенные пользователем правила теперь преобразуются в специальный упрощенный псевдокод, который используется для принятия решения по дальнейшим действиям с пакетом через специальный интерфейс внутри ядра.
Nftables состоит из трех частей: кода фильтрации, работающего внутри ядра, связующей интерфейсной библиотеки libnl, работающей с ядром через [URL="http://en.wikipedia.org/wiki/Netlink"]netlink[/URL], и фронтэнда, работающего на уровне пользователя. Для формирования правил фильтрации в 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
}
[/CODE]
По заявлению разработчиков, код nftables еще находится на стадии альфа тестирования и не подходит для использовании в промышленной эксплуатации, тем не менее в процессе регулярного тестирования последний крах ядра из-за сбоя nftables был зафиксирован несколько месяцев назад
[URL="http://opennet.ru/opennews/art.shtml?num=20843"]opennet.ru[/URL]
[size="1"][color="#666686"][B][I]Добавлено через 10 часов 54 минуты[/I][/B][/color][/size]
ИМХО, какой-то странноватый синтаксис