![]() |
Разработчики Netfilter представили замену iptables
Вниманию общественности представлен первый публичный выпуск проекта nftables, новой реализации пакетного фильтра для Linux, идущего на смену iptables, как в свое время iptables пришел на смену ipchains, а ipchains заменил собой ipfwadm. Главным отличием nftables, является не только изменившийся синтаксис задания правил, но и совершенно новый подход в их трансляции: определенные пользователем правила теперь преобразуются в специальный упрощенный псевдокод, который используется для принятия решения по дальнейшим действиям с пакетом через специальный интерфейс внутри ядра.
Nftables состоит из трех частей: кода фильтрации, работающего внутри ядра, связующей интерфейсной библиотеки libnl, работающей с ядром через netlink, и фронтэнда, работающего на уровне пользователя. Для формирования правил фильтрации в nftables представлена утилита nft , которая проверяет корректность правил и транслирует их в псевдокод. Правила теперь могут добавляться не только инкрементально, но и загружаться целиком из файла на диске, как это сделано, например, в пакетном фильтре PF. Код фильтра, работающий на уровне ядра избавлен от блокировок и значительно сокращен, все операции по определению условий и связанных с ними действий выполняются на уровне пользователя, в ядре производится только базовый набор операций, таких как чтение данных из пакета, сравнение данных и т.п. В пакетный фильтр интегрирована поддержка словарного маппинга и поиска по наборам правил (sets), работа которых реализована через хеши и rb-деревья. При этом элементы наборов могут быть заданы в виде диапазонов значений (можно определять подсети). Фильтр более не зависит от типа протокола, поддерживая IPv4, IPv6 и бриджинг. По умолчанию не производится учет пакетов и байт трафика, подпадающих под правила, их учет нужно включать отдельно. Новый синтаксис правил в корне не похож на то, что было раньше и больше напоминает сценарий, в котором можно задавать условия, создавать переменные, выполнять математические операции. Язык классификации правил основан на реальной грамматике, при обработке которой используется сгенерированный в bison парсер. Например, типичный набор правил: Код:
include "ipv4-filter"По заявлению разработчиков, код nftables еще находится на стадии альфа тестирования и не подходит для использовании в промышленной эксплуатации, тем не менее в процессе регулярного тестирования последний крах ядра из-за сбоя nftables был зафиксирован несколько месяцев назад. Источник: http://www.opennet.ru/opennews/art.shtml?num=20843 |
| Время: 23:24 |