Несколько дней назад анонсирован запуск новой версии пакетного фильтра "nftables 0.9.4"что он разработан как замена iptables, ip6table, arptables и ebtables за счет унификации интерфейсов фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов.
Пакет nftables включает компоненты фильтра пакетов, которые работают в пользовательском пространстве, в то время как на уровне ядра подсистема nf_tables предоставляет часть ядра Linux, начиная с версии 3.13.
На базовом уровне только предоставляет общий интерфейс, не зависящий от протокола конкретный и предоставляет основные функции для извлечения данных из пакетов, выполнения операций с данными и управления потоком.
Лас- правила прямой фильтрации и драйверы для конкретных протоколов они компилируются в байт-код в пользовательском пространстве, после чего этот байт-код загружается в ядро с помощью интерфейса Netlink и выполняется в ядре на специальной виртуальной машине, которая напоминает BPF (фильтры пакетов Berkeley).
Такой подход позволяет значительно уменьшить размер кода фильтрации, работающего на уровне ядра, и исключить все функции синтаксического анализа правил и логики работы с протоколами в пользовательском пространстве.
Основные новые функции Nftables 0.9.4
Все необходимые изменения для работы версии nftables 0.9.4 входят в ветку Ядро Linux 5.6 и в нем поддержка диапазонов в комбинациях «Объединение, конкретные адреса и пакеты портов, упрощающие назначение».
Например, для набора «белых списков», элементы которого являются комбинациями, спецификация индикатора «диапазон» будет указывать, что набор может включать диапазоны в объединение.
Добавлена возможность использовать присоединения по ссылкам NAT., позволяя указать адрес и порт при определении преобразований NAT на основе списков карт или именованных наборов.
В дополнение поддержка аппаратного ускорения с удалением некоторых операций фильтрации. Ускорение он включается через утилиту ethtool ("ethtool -K eth0 hw-tc-offload включен"), После чего он запускается в nftables для основной цепочки с использованием флага" offload ".
При использовании ядра Linux 5.6 поддерживается аппаратное ускорение.e, чтобы соответствовать полям заголовка и проверять входящий интерфейс в сочетании с пакетами приема, отбрасывания, дублирования (dup) и пересылки (fwd).
В наборах и списках карт можно использовать директиву typeof, которая определяет формат элемента при сопоставлении.
Из других изменений которые выделяются из этой версии:
- Улучшено сообщение о местонахождении ошибки в правилах.
- Добавлена поддержка проверки подчиненного интерфейса путем указания "Мета SDIF" или же "мета sdifname«
- Добавлена поддержка прокрутки вправо или влево. Например, чтобы изменить метку существующего пакета влево на 1 бит и установить самый маленький бит в 1.
- Реализована опция «-V» для отображения информации. Параметры командной строки теперь должны указываться перед командами. Например, необходимо указать «nft -a список правил»И выполнить«набор правил списка nft -a»Выдаст ошибку.
Как установить новую версию nftables 0.9.4?
Для тех, кому интересно получить новую версию nftables 0.9.4 на данный момент можно скомпилировать только исходный код в вашей системе. Хотя через несколько дней уже скомпилированные бинарные пакеты будут доступны в разных дистрибутивах Linux.
Для компиляции у вас должны быть установлены следующие зависимости:
Их можно скомпилировать с помощью:
./autogen.sh
./configure
make
make install
А для nftables 0.9.4 скачиваем с следующая ссылка. А компиляция выполняется с помощью следующих команд:
cd nftables
./autogen.sh
./configure
make
make install