Автор (ы) | Проект Netfilter |
---|---|
Разработчик (и) | Проект Netfilter |
Стабильная версия | 0.9.6 / 15 июня 2020 г.; 3 месяца назад (15.06.2020) |
Предварительный выпуск | Git repo |
Repository | |
Написано на | C |
Операционная система | Linux |
Платформа | Netfilter |
Тип | фильтрация пакетов |
Лицензия | GPLv2 |
Веб-сайт |
|
tc
относится к планировщик пакетов ядра Linux как iptables
в Netfilter и
в nftables. Все это программы CLI пространства пользователя, которые используются для настройки соответствующей подсистемы ядра Linux. nftables - подсистема ядра Linux, обеспечивающая фильтрацию и классификацию сетевые пакеты / датаграммы / кадры. Он доступен с момента выпуска ядра Linux 3.13 19 января 2014 года.
nftables заменяет устаревшие части iptables в Netfilter. Среди преимуществ nftables перед iptables - меньшее дублирование кода и более простое расширение для новых протоколов. nftables настраивается с помощью утилиты nft пользовательского пространства, тогда как устаревшие инструменты настраиваются с помощью утилит iptables, ip6tables, arptables и фреймворков ebtables.
nftables использует строительные блоки инфраструктуры Netfilter, такие как существующие перехватчики в сетевом стеке, систему отслеживания соединений, компонент организации очередей в пользовательском пространстве и подсистему журналирования.
Команда для отбрасывания любых пакетов с IP-адресом назначения 1.2.3.4
:
nft add rule ip filter output ip daddr 1.2.3.4 drop
Обратите внимание, что новый синтаксис существенно отличается от iptables, в котором было бы записано то же правило:
iptables -A OUTPUT -d 1.2.3.4 -j DROP
Новый синтаксис может показаться более подробным, но он также гораздо более гибкий. nftables включает расширенные структуры данных, такие как словари, карты и конкатенации, которых нет в iptables. Их использование может значительно сократить количество цепочек и правил, необходимых для выражения заданного дизайна фильтрации пакетов.
Инструмент iptables-translate
может использоваться для преобразования многих существующих правил iptables в эквивалентные правила nftables. Debian 10 (Buster), среди других дистрибутивов Linux, использует nftables вместе с iptables-translate
в качестве серверной части фильтрации пакетов по умолчанию.
Проект был впервые публично представлен Патриком Макхарди на Netfilter Workshop 2008 от основной группы Netfilter. Первый предварительный выпуск реализации ядра и пользовательского пространства был выпущен в марте 2009 года. Хотя этот инструмент был назван «самым большим изменением в брандмауэре Linux с момента появления iptables в 2001 году», он не получил особого внимания со стороны прессы. Известный хакер Федор Васькович (Гордон Лайон) сказал, что он «с нетерпением ждет его общего выпуска в основном ядре Linux ".
. Проект остался на стадии альфа, а официальный сайт был удален в 2009. В марте 2010 года электронные письма от автора в списках рассылки проекта показали, что проект все еще активен и приближается к бета-версии, но последняя так и не была отправлена официально. В октябре 2012 года Пабло Нейра Аюсо предложил уровень совместимости для iptables и объявил возможное включение проекта в основное ядро.
16 октября 2013 года Пабло Нейра Аюсо отправил nftables core pull request в дерево основной ветки ядра Linux. был включен в основную ветку ядра 19 января 2014 года с выпуском ядра Linux версии 3.13.
Механизм ядра nftables добавляет простую виртуальную машину в Ядро Linux, которое может выполнять байт-код для проверки сетевого пакета и принятия решений. о том, как следует обрабатывать этот пакет. Операции, выполняемые этой виртуальной машиной, намеренно сделаны базовыми. Он может получать данные из самого пакета, просматривать связанные метаданные (например, входящий интерфейс) и управлять данными отслеживания соединений. Арифметические, побитовые операторы и операторы сравнения могут использоваться для принятия решений на основе этих данных. Виртуальная машина также способна манипулировать наборами данных (обычно IP-адресами), позволяя заменять несколько операций сравнения одним поиском набора.
Вышеописанная организация противоречит коду межсетевого экрана iptables, который так глубоко встроен в логику протокола, что код пришлось реплицировать четыре раза - для IPv4, IPv6, ARP и Ethernet. мостовое соединение - механизмы межсетевого экрана слишком привязаны к протоколу, чтобы их можно было использовать в общем виде.
Основными преимуществами nftables перед iptables являются упрощение ядра Linux ABI, уменьшение дублирования кода , улучшенное сообщение об ошибках , а также более эффективное выполнение, хранение и инкрементальные изменения правил фильтрации. Традиционно используемые iptables(8)
, ip6tables(8)
, arptables(8)
и ebtables(8)
( для мостов IPv4, IPv6, ARP и Ethernet соответственно) предназначены для замены на nft(8)
в качестве единой унифицированной реализации, обеспечивающей конфигурацию брандмауэра поверх встроенного ядра виртуальная машина.
nftables также предлагает улучшенный API пользовательского пространства, который позволяет атомарно заменять одно или несколько правил межсетевого экрана в рамках одной транзакции Netlink. Это ускоряет изменение конфигурации брандмауэра для установок с большими наборами правил; это также может помочь избежать состояния гонки во время выполнения изменений правил. nftables также включает функции совместимости, упрощающие переход от предыдущих брандмауэров, утилиты командной строки для преобразования правил в формат iptables и синтаксически совместимые версии команд iptables, использующие серверную часть nftables.
.