В Linux 3.13 появится пакетный фильтр Nftables

image

Теги: ядро Linux, код

Код Nftables является новой реализацией пакетного фильтра вместо iptables, ip6table, arptables и ebtables.

Создатели ядра Linux внесли изменение в ветку linux-next, которая станет основой для Linux 3.13. Так, в ветку был внедрен код Nftables, который является новой реализацией пакетного фильтра вместо iptables, ip6table, arptables и ebtables.

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

Главной особенностью Nftables стало то, что правила фильтрации компилируются в пространстве пользователя в байткод и передаются в ядро через API Netlink. Затем для принятия решения по дальнейшим действиям правила выполняются с использованием конечного автомата pseudo-state machine.

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

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

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

}

}


comments powered by Disqus