nftables
Оригинальный автор(ы) | Проект Netfilter |
---|---|
Разработчик(и) | Проект Netfilter |
Стабильная версия | 1.1.0 [ 1 ] ![]() |
Предварительный выпуск | |
Репозиторий | |
Написано в | С |
Операционная система | Линукс |
Платформа | Сетевой фильтр |
Тип | фильтрация пакетов |
Лицензия | лицензия GPLv2 |
Веб-сайт |
nftables — подсистема ядра Linux, обеспечивающая фильтрацию и классификацию сетевых пакетов /датаграмм/кадров. Он доступен с момента выпуска ядра Linux 3.13 19 января 2014 года. [ 2 ]
nftables заменяет устаревший iptables компонент Netfilter . Среди преимуществ nftables перед iptables — меньшее дублирование кода и более простое расширение для новых протоколов. Среди недостатков nftables является то, что DPI , обеспечиваемый «соответствием строк iptables», например фильтрацией SNI , не поддерживается. [ 3 ]
nftables настраивается с помощью пользовательского пространства утилиты nft , а устаревшие инструменты настраиваются с помощью утилит iptables , ip6tables , arptables и ebtables framework.
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. Их использование может значительно сократить количество цепочек и правил, необходимых для реализации заданной схемы фильтрации пакетов.
The iptables-translate
Инструмент можно использовать для перевода многих существующих правил iptables в эквивалентные правила nftables. [ 4 ] [ 5 ] Debian 10 (Buster) , среди других дистрибутивов Linux , использует nftables вместе с iptables-translate
в качестве механизма фильтрации пакетов по умолчанию. [ 6 ]
История
[ редактировать ]Впервые проект был публично представлен на Netfilter Workshop 2008 Патриком МакХарди из основной команды Netfilter. [ 7 ] Первый предварительный выпуск реализации ядра и пользовательского пространства был выпущен в марте 2009 года. [ 8 ] Хотя этот инструмент был назван «самым большим изменением в межсетевом экране Linux с момента появления iptables в 2001 году», пресса уделила ему мало внимания. [ 9 ] Известный хакер Федор Васькович (Гордон Лайон) заявил, что он «с нетерпением ждет его общего выпуска в основном ядре Linux ». [ 9 ]
Проект остался на стадии альфа-версии, а официальный сайт был удален в 2009 году. В марте 2010 года электронные письма автора в списках рассылки проекта показали, что проект все еще активен и приближается к бета-версии. [ 10 ] [ 11 ] но последний так и не был отправлен официально. В октябре 2012 года Пабло Нейра Аюсо предложил уровень совместимости для iptables. [ 12 ] и объявил о возможном включении проекта в основное ядро.
16 октября 2013 года Пабло Нейра Аюсо отправил запрос на извлечение ядра nftables в основное дерево ядра Linux . [ 13 ] Он был объединен с основной веткой ядра 19 января 2014 года с выпуском ядра Linux версии 3.13. [ 2 ]
Обзор
[ редактировать ]Механизм ядра nftables добавляет к ядру Linux простую виртуальную машину , которая может выполнять байт-код для проверки сетевого пакета и принимать решения о том, как этот пакет следует обрабатывать. Операции, реализуемые этой виртуальной машиной, намеренно сделаны базовыми. Он может получать данные из самого пакета, просматривать связанные метаданные (например, входящий интерфейс) и управлять данными отслеживания соединений. Для принятия решений на основе этих данных можно использовать арифметические, побитовые операторы и операторы сравнения. Виртуальная машина также способна манипулировать наборами данных (обычно IP-адресами), позволяя заменять несколько операций сравнения одним поиском набора. [ 14 ]
Описанная выше организация противоречит коду брандмауэра iptables, в логику которого настолько глубоко встроена информация о протоколах, что код пришлось реплицировать четыре раза — для IPv4 , IPv6 , ARP и Ethernet - моста — в качестве межсетевого экрана. Механизмы слишком специфичны для протокола, чтобы их можно было использовать в общем виде. [ 14 ]
Основными преимуществами nftables перед iptables являются упрощение ABI ядра Linux , уменьшение дублирования кода , улучшенное сообщение об ошибках , а также более эффективное выполнение, хранение и поэтапное изменение правил фильтрации. Традиционно используется , , и (для мостов IPv4, IPv6, ARP и Ethernet соответственно) предназначены для замены на как единая унифицированная реализация, обеспечивающая настройку брандмауэра поверх виртуальной машины в ядре .
nftables также предлагает улучшенный API пользовательского пространства, который позволяет атомарную замену одного или нескольких правил брандмауэра в рамках одной транзакции Netlink . Это ускоряет изменение конфигурации брандмауэра для установок с большими наборами правил; это также может помочь избежать состояний гонки во время выполнения изменений правил. nftables также включает функции совместимости, упрощающие переход с предыдущих брандмауэров, утилиты командной строки для преобразования правил в формат iptables, [ 15 ] и синтаксически-совместимые версии команд iptables, использующие серверную часть nftables. [ 16 ]
Ссылки
[ редактировать ]- ^ «[ОБЪЯВЛЕНИЕ] выпуск nftables 1.1.0» . 16 июля 2024 г. Проверено 17 июля 2024 г.
- ^ Jump up to: а б «nftables, преемник iptables» . Линукс 3.13 . kernelnewbies.org. 19 января 2014 г. Проверено 4 марта 2016 г.
- ^ «Как мы использовали eBPF для создания программируемой фильтрации пакетов в Magic Firewall» .
- ^ «Переход с iptables на nftables — nftables wiki» .
- ^ «Список доступных переводов с помощью инструмента iptables-translate — nftables wiki» .
- ^ «Nftables — Debian Wiki» .
- ^ «Программа дня пользователя – NFWS2008» . Workshop.netfilter.org. 03.10.2008 . Проверено 22 февраля 2014 г.
- ^ первоначальное объявление о выпуске .
- ^ Jump up to: а б Грей, Патрик (26 марта 2009 г.). «НОВОСТИ: Linux получает новый брандмауэр» . Risky.biz.
- ^ «Linux Netfilter Devel – Re: Текущее состояние nftables» . Spinics.net . Проверено 20 января 2014 г.
- ^ «Linux Netfilter Devel – Re: Текущее состояние nftables» . Spinics.net . Проверено 20 января 2014 г.
- ^ «Linux Netfilter Devel — [RFC] снова на nf_tables (плюс уровень совместимости)» . Spinics.net . Проверено 20 января 2014 г.
- ^ «[ИСПРАВЛЕНИЕ 00/17] обновления netfilter: запрос на извлечение nf_tables» . Марк.инфо . Проверено 20 января 2014 г.
- ^ Jump up to: а б Джонатан Корбет (20 августа 2013 г.). «Возвращение nftables» . LWN.net . Проверено 22 октября 2013 г.
- ^ Нейра Аюсо, Пол. «Nftables — инструмент командной строки NFT » git.netfilter.org . Получено 24 января.
- ^ Артуро, Рал. «Резюме Netfilter Workshop 2018 в Берлине» . ral-arturo.org . Проверено 24 января 2019 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Репозиторий исходного кода nftables Git
- документация nftables HOWTO
- Первый выпуск nftables (18 марта 2009 г.)
- Пабло Нейра Аюсо: [RFC] снова на nf_tables (плюс уровень совместимости)
- Краткое руководство по nftables
- Разделы nftables в ArchWiki и Gentoo Wiki
- Корбет, Джонатан (24 марта 2009 г.). «nftables: новый механизм фильтрации пакетов» . LWN.net .
- Макхарди, Патрик (30 сентября 2008 г.). nftables — преемник iptables, ip6tables, ebtables и arptables . Семинар Netfilter 2008 . Архивировано из оригинала ( ODP ) 22 марта 2009 г.
- nft_compat расширен для поддержки расширений ebtables (объединен в ядро Linux 4.0)
- Расширенное и улучшенное руководство для инструмента командной строки nft.