The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"В ядре Linux 3.13 ожидается появление нового пакетного фильт..."
Отправлено opennews, 20-Окт-13 00:12 
В экспериментальную ветку linux-next, на базе которой будет формироваться ядро Linux 3.13, принят (http://marc.info/?l=linux-netdev&m=138203780210029&w=4) код Nftables (http://netfilter.org/projects/nftables/), новой реализации пакетного фильтра, идущего на смену iptables.  Nftables отличается существенным пересмотром организации процесса обработки правил фильтрации пакетов, новым синтаксисом правил, унификацией интерфейсов iptables/ip6tables/arptables/ebtables и сокращением кода, выполняемого на уровне ядра.  

Ключевой особенностью Nftables является идеи близкой к реализации в BPF (Berkeley Packet Filters) - правила фильтрации компилируются в пространстве пользователя в  байткод и передаются в ядро через API Netlink, после чего выполняются с использованием конечного автомата (pseudo-state machine) для принятия решения по дальнейшим действиям с пакетом. В качестве базовых блоков по-прежнему используются компоненты инфраструктуры  Netfilter, в том числе существующие хуки, система отслеживания состояния соединений, компоненты организации очередей обработки и подсистема ведения лога.

Выполнение правил с использованием конечного автомата вместо применения логики сопоставления позволяет сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя. Кроме того, появляется возможность унифицировать работу с различными видами протоколов в едином наборе псевдокода, без необходимости поддержания в ядре отдельных расширений фильтрации для IPv4, IPv6, ARP и сетевых мостов. При необходимости поддержки фильтрации нового протокола, все изменения могут быть внесены на уровне пользователя без обновления кода ядра.


Все операции по определению условий и связанных с ними действий выполняются на уровне пользователя, в ядре производится только базовый набор операций, таких как чтение данных из пакета, сравнение данных и т.п. Присутствует поддержка словарного маппинга и поиска по наборам правил (sets), работа которых реализована через хеши и rb-деревья. При этом элементы наборов могут быть заданы в виде диапазонов значений (можно определять подсети).

Для взаимодействия с кодом, работающим на уровне ядра, предлагается специальная связующая интерфейсная библиотека libnl, и построенный поверх неё фронтэнд, работающий на уровне пользователя. Для формирования правил фильтрации в nftables подготовлена утилита nft, которая проверяет корректность правил и транслирует их в байткод. Правила  могут добавляться не только инкрементально, но и загружаться целиком из файла на диске.

Новый синтаксис правил (https://home.regit.org/netfilter-en/nftables-quick-howto/) в корне не похож на iptables и отличается использованием иерархических блочных структур  вместо линейной схемы.  Язык классификации правил основан на реальной грамматике, при обработке которой используется сгенерированный в bison парсер.  Для обеспечения обратной совместимости с линейными правилами  предоставляется специальная прослойка, позволяющая использовать iptables/ip6tables поверх инфраструктуры Nftables. Тем не менее, представленный для ядра 3.13 код, предусматривает сосуществование старой и новой подсистем, так как  Nftables ещё требует доработки и тестирования.


Пример правил:


<font color="#461b7e">
table filter {
        chain input {
                 table filter hook input priority 0;
                 ct state established accept
                 ct state related accept
                 meta iif lo accept
                 tcp dport ssh counter packets 0 bytes 0 accept
                 counter packets 5 bytes 5 log drop
        }

        chain output {
                 table filter hook output priority 0;
                 ct state established accept
                 ct state related accept
                 meta oif lo accept
                 ct state new counter packets 0 bytes 0 accept
        }
}

</font>

URL: http://lwn.net/Articles/570921/rss
Новость: http://www.opennet.ru/opennews/art.shtml?num=38209

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру