The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Разработчики Netfilter представили замену iptables

20.03.2009 15:57

Вниманию общественности представлен первый публичный выпуск проекта nftables, новой реализации пакетного фильтра для Linux, идущего на смену iptables, как в свое время iptables пришел на смену ipchains, а ipchains заменил собой ipfwadm. Главным отличием nftables, является не только изменившийся синтаксис задания правил, но и совершенно новый подход в их трансляции: определенные пользователем правила теперь преобразуются в специальный упрощенный псевдокод, который используется для принятия решения по дальнейшим действиям с пакетом через специальный интерфейс внутри ядра.

Nftables состоит из трех частей: кода фильтрации, работающего внутри ядра, связующей интерфейсной библиотеки libnl, работающей с ядром через netlink, и фронтэнда, работающего на уровне пользователя. Для формирования правил фильтрации в nftables представлена утилита nft , которая проверяет корректность правил и транслирует их в псевдокод. Правила теперь могут добавляться не только инкрементально, но и загружаться целиком из файла на диске, как это сделано, например, в пакетном фильтре PF.

Код фильтра, работающий на уровне ядра избавлен от блокировок и значительно сокращен, все операции по определению условий и связанных с ними действий выполняются на уровне пользователя, в ядре производится только базовый набор операций, таких как чтение данных из пакета, сравнение данных и т.п. В пакетный фильтр интегрирована поддержка словарного маппинга и поиска по наборам правил (sets), работа которых реализована через хеши и rb-деревья. При этом элементы наборов могут быть заданы в виде диапазонов значений (можно определять подсети). Фильтр более не зависит от типа протокола, поддерживая IPv4, IPv6 и бриджинг. По умолчанию не производится учет пакетов и байт трафика, подпадающих под правила, их учет нужно включать отдельно.

Новый синтаксис правил в корне не похож на то, что было раньше и больше напоминает сценарий, в котором можно задавать условия, создавать переменные, выполнять математические операции. Язык классификации правил основан на реальной грамматике, при обработке которой используется сгенерированный в bison парсер. Например, типичный набор правил:


   include "ipv4-filter"

   chain filter output {
         ct state established,related accept
         tcp dport 22 accept
         counter drop
   }

По заявлению разработчиков, код nftables еще находится на стадии альфа тестирования и не подходит для использовании в промышленной эксплуатации, тем не менее в процессе регулярного тестирования последний крах ядра из-за сбоя nftables был зафиксирован несколько месяцев назад.

  1. Главная ссылка к новости (http://marc.info/?l=linux-netd...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/20843-netfilter
Ключевые слова: netfilter, firewall, iptables, linux
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (48) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, chemtech (?), 17:00, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну сейчас начнется: PF против nftables... ))))))))
     
     
  • 2.4, aim (??), 17:20, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    судя по всему pf опять вырулит по-простоте синтаксиса как минимум
     
     
  • 3.28, junker (?), 22:42, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    кстати не факт!
    с учётом вот этого: "и фронтэнда, работающего на уровне пользователя"
    фронтэнд можно приделать какой угодно, наверное даже и с синтаксисом, идентичным PF
     
     
  • 4.52, dry (?), 12:43, 23/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    не вижу прорыва.
    заменили одну хорошую реализацию на другую (надеюсь не менее хорошую).
    смысл такой переработки?
    лучше бы замену tc написали, вот там действительно стоило бы пересмотреть
    подход к конфигурации. потому что динамически изменять правила в этом
    говнище крайне геморройно.
     
  • 2.6, abigor (?), 17:31, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Даешь холливар!
    pf vs nftables!!!
    А вообще, честно, я не понимаю эту разницу в фаерволах, почему не сделать единый фаер для всех систем! чтоб не запоминать кучу спрок синтаксиса для разных ОС ( читать для linux и unix ) Я конечно понимаю что различия в архитектуре ядер. НО я думаю если захотеть, можно прийти к единому решинию. Кажется мне, что дело в разных лицензиях. На этом уполкаю, я то еще разведу войну GPLv* vs BSD
     
     
  • 3.7, Nick (??), 17:34, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Даешь холливар!
    >....я то еще разведу войну
    >GPLv* vs BSD

    разведи-разведи :)

    особенно о психологическом аспекте договорённости об едином интерфейсе
    универсального фаервола...

     
  • 3.8, Andrew (??), 17:42, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > А вообще, честно, я не понимаю эту разницу в фаерволах, почему не сделать единый фаер для всех систем! чтоб не запоминать кучу спрок синтаксиса для разных ОС ( читать для linux и unix )

    IPFilter

     
  • 3.20, User294 (ok), 20:24, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >А вообще, честно, я не понимаю эту разницу в фаерволах, почему не
    >сделать единый фаер для всех систем!

    Можно продолжить идею: а почему бы не сделать единую модель авто, похоронив все остальные?!Водителям было бы удобно - в любом авто как у себя дома.Ремонтерам было бы удобно.Любое авто ремонтируется одинаково.Заправщикам тоже было бы удобно.Магазин запчастей мог бы стать размерами с киоск :) И т.д. и т.п. :)

     
     
  • 4.38, . (?), 04:13, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >чтоб не запоминать кучу спрок синтаксиса для разных ОС
    >
    >Можно продолжить идею: а почему бы не сделать единую модель авто
    >Водителям было бы удобно

    рули, педали и ПДД одинаковые

     
     
  • 5.41, Michael Shigorin (ok), 13:13, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Угу --- левые и правые, две и три, теоретические и практические... а так да, конечно.
     
  • 5.43, User294 (??), 13:51, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Да, конечно, в какойнить тойоте руль ну совсем как у копейки, никто и не сомневался :).И чего никто на копейке ездить не хочет?Все почему-то иномарки предпочитают купить.Вот прям копия :)
     

  • 1.2, User294 (ok), 17:18, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >    include "ipv4-filter"

    А я думал - stdio.h =)

     
  • 1.3, User294 (ok), 17:19, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > создавать переменные, выполнять математические операции

    А тормозить все это не будет?

     
     
  • 2.11, Sem (??), 17:53, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Я думаю, что все операции будут происходить в момент загрузки правил. С чего ему тормозить? Вот работать быстрее iptables будет точно.

    Мне вот интересно, как будет реализован ipq? Не хотелось бы наработки переписывать.

     
     
  • 3.22, User294 (ok), 20:33, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Я думаю, что все операции будут происходить в момент загрузки правил.

    Если так - было б гут.А то есть области где каждый лишний такт проца-как нож в спину.Например мелкие роутеры с не особо каким процом айпитаблесом натят и файрволят например.И это стоит понимать.

    >С чего ему тормозить?

    Ну, могу себе представить реализацию где переменные на ходу заполняются и т.п., это ессно будет не шибко быстро.

    >Вот работать быстрее iptables будет точно.

    Мне пофиг на работу самой по себе айпитаблес-морды к нетфильтру, но не пофиг на скорость файрволинга по итоговому набору правил нетфильтром.Не имеет оно права проц грузить и должно много выжимать даже на хилом проце :).Надеюсь что оно и правда будет не хуже.

     
     
  • 4.25, Knuckles (ok), 21:23, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Так написано же, что будет парситься и перемалываться в псевдокод. Я так понимаю, что синтаксис правил удобен для пользователя, а псевдокод удобен (в плане скорости в т.ч.) для фильтра.
     

  • 1.9, Аноним (-), 17:44, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Напоминиет миграцию от комбайнеров к шейдерам в OpenGL.
     
  • 1.10, Аноним (-), 17:48, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно, синтаксис iptables ужасен, новый nftables мне нравится, хотя лучше pf-а ещё нечего не видел, для конечно.
     
     
  • 2.49, Аноним (-), 19:49, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Интересно, синтаксис iptables ужасен, новый nftables мне нравится, хотя лучше pf-а ещё
    >нечего не видел, для конечно.

    Наоборот, синтаксис iptables устраивает полностью.
    А пример из текста новости совершено не читабелен.

    Неужели Вам ЭТО понятнее правил iptables?

     
     
  • 3.54, Осторожный (ok), 07:28, 24/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>Интересно, синтаксис iptables ужасен, новый nftables мне нравится, хотя лучше pf-а ещё
    >>нечего не видел, для конечно.
    >
    >Наоборот, синтаксис iptables устраивает полностью.
    >А пример из текста новости совершено не читабелен.
    >
    >Неужели Вам ЭТО понятнее правил iptables?

    Давай более простой вопрос.
    Ты вообще видел и использовал pf ?
    Если нет, тогда собственно и разговаривать не о чем.

     

  • 1.12, Аноним (-), 18:01, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну хоть не XML
     
     
  • 2.40, СуперАноним (?), 12:16, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    А почему бы и не на XML правила записывать? Транслятор соответствующий мог бы их в тот же самый байт-код перегонять.
     

  • 1.14, Аноним (-), 18:14, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    покороче нельзя было название придумать?
     
  • 1.17, spamtrap (??), 18:58, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >определенные пользователем правила теперь преобразуются в специальный упрощенный псевдокод, который используется для принятия решения

    слабаки! нада было сразу в машинный код транслировать. а так придётся потом этот псевдокод интерпретировать, и получится, что файлвол - интерпретатор собственного байт-кода в режиме ядра

     
     
  • 2.27, User294 (ok), 22:22, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >слабаки! нада было сразу в машинный код транслировать.

    А что с портабельностью делать?Генерилка кода для всех поддерживаемых платформ - монстрик типа gcc всунутый в ядро? :)

     
     
  • 3.44, Аноним (-), 16:16, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Здесь может помочь llvm
     

  • 1.19, o.k. (?), 19:59, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    главное, чтоб списки адресов наконец реализовали ..
     
     
  • 2.21, Аноним (-), 20:30, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    ip daddr { 192.168.0.0/24 => drop, 192.168.0.100 => accept}
     
     
  • 3.23, bill (??), 20:43, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >ip daddr { 192.168.0.0/24 => drop, 192.168.0.100 => accept}

    Эт не то, если я правильно понял. В ipfw есть таблицы, очень удобная фича.

     
     
  • 4.35, o.k. (?), 01:20, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    угу .. именно, только в ipfw ими я не пользовался, а вот в pf юзал постоянно
    table <users> { 192.168.2.8, 192.168.1.5, 192.168.3.0/24 }
    pass in from <users> to any
     
  • 2.37, sky (??), 01:49, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >главное, чтоб списки адресов наконец реализовали ..

    Реализация давно есть, но ее не включили в ядро. http://ipset.netfilter.org/

     

  • 1.24, geekkoo (ok), 20:45, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда ж они наконец успокоятся? Сначала был ipfwadm, потом ipchains, затем долгое время iptables, который даже при переезде на 2.6.0 не сломали. Но покой нам только снится ... Это было обманчивое затишье.
     
     
  • 2.42, Michael Shigorin (ok), 13:16, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Когда ж они наконец успокоятся? Сначала был ipfwadm, потом ipchains, затем долгое
    >время iptables, который даже при переезде на 2.6.0 не сломали. Но
    >покой нам только снится ... Это было обманчивое затишье.

    iptables оказался весьма good enough, чтоб мотивация по замене копилась небыстро.

     

  • 1.26, СуперАноним (?), 21:31, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так и Layer7 фильтрацию наконец бы в него ванильно включили
    http://l7-filter.sourceforge.net/
     
  • 1.29, zed (??), 22:51, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а разве pf не кроссплатформенный? он вроде везде работает
     
     
  • 2.36, o.k. (?), 01:22, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    в BSD только... в linux к сожалению нет.
     
     
  • 3.55, Осторожный (ok), 07:30, 24/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >в BSD только... в linux к сожалению нет.

    Вроде как есть порт pf в Windows

     

  • 1.31, Touch (ok), 23:30, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    PF PF ..  Layer 2 он умеет ?.. нет .. прохождение всего списка правил снова после попадания в altq например ?.. нет .. равномерное распределение пропускной способности по типу pipe с weight ?.. нет .. вобщем ipfw+dummynet .. хоть закидайте меня помидорами по самую макушку :)
     
     
  • 2.32, Touch (ok), 23:32, 20/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    да, забыл про forward и divert совместно с несколькими одновременно работающими natd .. :)
     
  • 2.34, iZEN (ok), 00:33, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >PF PF ..  Layer 2 он умеет ?.. нет .. прохождение
    >всего списка правил снова после попадания в altq например ?.. нет
    >.. равномерное распределение пропускной способности по типу pipe с weight ?..
    >нет .. вобщем ipfw+dummynet .. хоть закидайте меня помидорами по самую
    >макушку :)

    Видимо, давно man 5 pf.conf не смотрел. :)
    На, почитай: http://www.freebsd.org/cgi/man.cgi?query=pf.conf&sektion=5

     
     
  • 3.47, Touch (ok), 19:12, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    $ man 5 pf.conf | col -b | grep -i mac | grep -vi macro | grep -vi machin
    $

    $ man 5 pf.conf | col -b | grep -i layer
         their layer 3 (see ip(4) and ip6(4)) and layer 4 (see icmp(4), icmp6(4),
         Due to a lock order reversal (LOR) with the socket layer, the use of the
    $

    "Оказывается, что pf+altq нельзя настроить так, что бы умел поделить поровну трафик на каждого подключенного юзера. Один товарищ попытался извратнуться ( http://developer.co.ua/posts/view/shljuz_s_avtorizatsiej_i_dinamicheskim_rasp ). Смелый и инженерный такой подход у него. А ведь хочется что бы кнопочку, ну максимум две, нажать - и шо б все заработало как надо. Ан нет. "
    Взято отсюда: http://nexus.org.ua/weblog/message/878/

    Ещё поспорим ?.. :)

     
     
  • 4.48, Touch (ok), 19:18, 21/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    кстати по ссылке человек выбрал pf потому что видно не прочёл man natd, который поверьте более объёмен чем секция "Translation" в man pf.conf.
     
     
  • 5.51, o.k. (?), 10:25, 22/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >кстати по ссылке человек выбрал pf потому что видно не прочёл man
    >natd, который поверьте более объёмен чем секция "Translation" в man pf.conf.
    >

    ну не смешите =)
    и binat там несомненно есть ))))

     

  • 1.33, nuclight (ok), 23:47, 20/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Для формирования правил фильтрации в nftables представлена утилита nft , которая проверяет
    >корректность правил и транслирует их в псевдокод.

    Байт-код? То есть в линуксе наконец-то изобрели ipfw2 ? Поздравляю!

     
  • 1.39, chodorenko (?), 11:47, 21/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вообще както странно, неужели нельзя отделить написание правил от конкретного типа фаервола ? ну не пофигу ли вам во что преобразуется iptables -s $localnet -j Accept ? главное чтобы транслятор мог правильно преобразовать и скорость работы была нормальной. A вообщето опять начинается изобретение велосипеда как и с буфером обмена
     
  • 1.50, Аноним (-), 05:00, 22/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну из плюсов очевидно подедржка обоих протоколов v4/v6 и бриджинг ну и соответственно наборы (sets), когда можно одним правилом решить то на что раньше нужно было городить тучу.
     
  • 1.53, Осторожный (ok), 17:30, 23/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Похоже что разработчики iptables наконец-то прочитали faq по pf и наконец-то увидели, как они были не правы.
    Решили срочно исправиться и все переделать ...
     
  • 1.56, Аноним (56), 15:18, 26/01/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как же вы любите Херами помериться. Я не знаю на чем основан фаервол в микротиках(учитывая что он на ядре линукс) но реализация мне там очень нравится. так же надеялся что в NFTCLI сделают что то вроде интерактива с табуляцией и динамической справкой. Ну и подсветка синтаксиса не помешала бы. В общем пока в OSourse -е  "Лебедь, рак и щука" есть хорошие идеи но реализовать их качественно не получается, а жаль. Внедряют что то новое не доработав старое(в частности не к IPTables) и каждый режет свое.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру