Nftables

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Nftables
Тип Утиліта
Репозиторій git.netfilter.org/nftables/
Операційна система GNU/Linux[d] і Android
Мова програмування C
Ліцензія GNU General Public License, version 2.0[d]
Вебсайт netfilter.org/projects/nftables/

CMNS: Nftables у Вікісховищі

nftables — підсистема ядра Linux, що забезпечує фільтрацію і класифікацію мережевих пакетів / дейтаграм / кадрів. Включена в ядро ​​Linux, починаючи з версії 3.13, випущеної 19 січня 2014 року. Є проєктом із заміни фреймворків iptables, ip6tables, arptables, ebtables в мережевому екрані Netfilter. Шляхом об'єднання функціональності фреймворків, у nftables менше дублюється код при побудові правил для Netfilter і краща низькорівнева оптимізація. Станом на 26 квітня 2016 року перебуває в процесі розробки. У просторі користувача nftables налаштовується за допомогою утиліти nft.

Огляд[ред. | ред. код]

У пакетному фільтрі nftables уніфіковані інтерфейси фільтрації пакетів для IPv4, IPv6, ARP і мережевих мостів. У пакет nftables входять компоненти пакетного фільтра, що працюють в просторі користувача, в той час як на рівні ядра роботу забезпечує підсистема nf_tables, що входить до складу ядра Linux починаючи з випуску 3.13. На рівні ядра надається лише загальний інтерфейс, що не залежить від конкретного протоколу і надає базові функції вилучення даних з пакетів, виконання операцій з даними і управління потоком.

Безпосередньо правила фільтрації і специфічні для протоколів обробники компілюються у байткод в просторі користувача, після чого цей байткод завантажується в ядро ​​за допомогою інтерфейсу Netlink і виконується в ядрі в спеціальній віртуальній машині, що нагадує BPF (Berkeley Packet Filters). Подібний підхід дозволяє значно скоротити розмір коду фільтрації, що працює на рівні ядра і винести всі функції розбору правил і логіки роботи з протоколами в простір користувача.

Синтаксис командного рядка nft[ред. | ред. код]

Синтаксис nft більше схожий на реальну граматику.

Наприклад, команда що блокує пакети які направляються за адресою 1.2.3.4:

nft add rule ip filter output ip daddr 1.2.3.4 drop

Синтаксис такої ж дії для iptables:

iptables -t filter -A OUTPUT -j DROP -d 1.2.3.4

Для забезпечення зворотної сумісності надається спеціальний прошарок, що дозволяє використовувати iptables/ip6tables поверх інфраструктури nftables.

Історія[ред. | ред. код]

Проєкт був вперше представлений на Netfilter Workshop 2008 Патріком Мак-Гарді з команди по розробці ядра Netfilter

Перший попередній реліз реалізації ядра і призначеного для користувача простору був представлений в березні 2009 року. Хоча інструмент був названий найбільшою зміною брандмауера Linux з моменту появи iptables у 2001 році, в той час він отримав мало освітлення в пресі.

У жовтні 2012 року, був запропонований прошарок сумісності з iptables і анонсоване можливе включення проєкту в основну гілку ядра. 16 жовтня 2013 року було відправлено запит на включення змін (pull request) в ядро ​​Linux. 19 січня 2014 року nftables був включений в ядро ​​Linux версії 3.13.

Примітки[ред. | ред. код]

Посилання[ред. | ред. код]