The OpenNET Project / Index page

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

22.01.2014 14:36  Первый пригодный для пользователей релиз пакетного фильтра Nftables

Проект Netfilter представил первый ориентированный на конечных пользователей выпуск пакетного фильтра Nftables 0.099, а также релиз сопутствующей библиотеки libnftnl 1.0.0, предоставляющей низкоуровневый API для взаимодействия с подсистемой nf_tables. Напомним, что подсистема nf_tables включена в состав ядра Linux 3.13, а в рамках пакета Nftables поставляются компоненты, работающие в пространстве пользователя.

Выпуск Nftables 0.099 уже не позиционируется как альфа-версия и отмечен как пригодный для персонального использования, но пока не рекомендуется для промышленного применения. Сообщается, что до выпуска Nftables 1.0 (в анонсе указано 0.1, но выпуск 0.100 уже опубликован) не исключено незначительное изменение грамматики правил и внесение нарушающих совместимость изменений. Менее чем через час после 0.099 опубликовано обновление Nftables 0.100, в котором оперативно исправили ссылки на библиотеку libnftnl (в коде использовалось старое название libnftables). Одновременно анонсирован пакет nftables-plus 0.099, который включает в себя дополнительные патчи для улучшения удобства использования.

В рамках проекта Nftables развивается новая реализация пакетного фильтра, унифицирующая интерфейсы фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов, и нацеленная на замену iptables, ip6table, arptables и ebtables. Для реализации поставленной задачи Nftables предоставляет на уровне ядра лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком. В работе используются уже существующие типовые универсальные компоненты инфраструктуры Netfilter, в том числе применяются существующие хуки, система отслеживания состояния соединений, компоненты организации очередей и подсистема ведения лога.

Непосредственно логика фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). Например, если в iptables при выполнении в правилах сопоставления номера входящего TCP-порта использовалась специальная предопределённая функция модуля ядра xt_tcpudp, то в nftables производится формирование инструкции "прочитать в регистр 2 байта из определённой позиции заголовка пакета и сравнить содержимое регистра с указанным значением".

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

Для формирования правил фильтрации предлагается использовать утилиту nft, которая проверяет корректность правил и транслирует их в байткод. Правила могут как добавляться инкрементально, так и загружаться целиком из файла на диске. Синтаксис правил не похож на iptables и отличается использованием иерархических блочных структур вместо линейной схемы. Язык классификации правил основан на реальной грамматике, при обработке которой используется сгенерированный в bison парсер. Поддерживается словарный маппинг (хеши), поиск по наборам правил (sets), диапазоны значений (можно определять подсети), средства для отслеживания соединений, NAT, ведение лога. Для обеспечения совместимости с правилами iptables/ip6tables предоставляется специальная прослойка.

Пример правил:


table filter {
        chain input {
                 type filter hook input priority 0;
                 ct state established accept
                 ct state related accept
                 meta iif lo accept
                 tcp dport ssh counter packets 0 bytes 0 accept
                 counter packets 5 bytes 5 log drop
        }

        chain output {
                 type filter hook output priority 0;
                 ct state established accept
                 ct state related accept
                 meta oif lo accept
                 ct state new counter packets 0 bytes 0 accept
        }
}


  1. Главная ссылка к новости (http://marc.info/?l=netfilter&...)
  2. OpenNews: Разработчики Netfilter представили замену iptables
  3. OpenNews: В ядре Linux 3.13 ожидается появление нового пакетного фильтра Nftables
  4. OpenNews: Релиз ядра Linux 3.13. Обзор новшеств
Лицензия: CC-BY
Тип: Программы
Ключевые слова: nftables, firewall
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.4, pavlinux (ok), 15:08, 22/01/2014 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    > унифицирующая интерфейсы фильтрации пакетов для IPv4, IPv6

    Ура!!!

    ---
    Кто уже юзал, - там порядок следования правил в цепочке важен?
    Или впаяли какой-нибудь искусственный интеллект  

     
     
  • 2.7, Потерпевший (?), 15:22, 22/01/2014 [^] [ответить]    [к модератору]
  • +2 +/
    "Ура!!!" будет, когда в ядре появится MPLS/VPLS, а nftables будет и по метке фильтровать, и по IP.
     
     
  • 3.16, Аноним (-), 15:46, 22/01/2014 [^] [ответить]    [к модератору]
  • +/
    Ладно MPLS, пусть хотя бы multicast поддержку сделают для NAT, невозможно через маршрутизатор на Linux IPTV смотреть без костылей типа udpxy.
     
     
  • 4.18, Аноним (-), 15:49, 22/01/2014 [^] [ответить]    [к модератору]
  • +1 +/
    А зачем мультикастовое прокси в ядре?
     
  • 4.29, pavlinux (ok), 16:07, 22/01/2014 [^] [ответить]     [к модератору]
  • +/
    А что-то типа iptables -t filter -A INPUT -d 224 0 0 0 4 -i eth0 -j ACCEPT ip... весь текст скрыт [показать]
     
     
  • 5.34, Аноним (-), 16:27, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    А IGMP Linux IGMP не NAT ит ... весь текст скрыт [показать]
     
     
  • 6.36, Andrew Kolchoogin (ok), 16:34, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    И это очень хорошо Если вы посмотрите в стандарт IGMP v3, то он surprisingly... весь текст скрыт [показать]
     
  • 6.47, pavlinux (ok), 17:11, 22/01/2014 [^] [ответить]    [к модератору]  
  • +1 +/
    igmpproxy
     
  • 5.56, Аноним (-), 17:43, 22/01/2014 [^] [ответить]    [к модератору]  
  • –2 +/
    а для выпресчата по вланам групповой мультикаст? сейчас только фряха с мроутедом может это делать
     
  • 4.35, Andrew Kolchoogin (ok), 16:29, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    задумался А что вы, собственно, имеете в виду Как и зачем NAT у вза... весь текст скрыт [показать]
     
     
  • 5.37, Аноним (-), 16:36, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Вот он у меня там на Linux-роутере и помирает, запрос этот Ага, я читал это, и ... весь текст скрыт [показать]
     
     
  • 6.38, Andrew Kolchoogin (ok), 16:41, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Ну да, all is working as designed Я не очень понимаю, что тут имеется в виду Е... весь текст скрыт [показать]
     
     
  • 7.39, Аноним (-), 16:46, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Сейчас когда вспоминал, кстати, вычитал Luckily, starting from 2 6 34, the ker... весь текст скрыт [показать]
     
     
  • 8.40, Andrew Kolchoogin (ok), 16:50, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Это совершенно другая песня Если ваш провайдер готов выдать вам дополнительный ... весь текст скрыт [показать]
     
     
  • 9.41, Аноним (-), 16:52, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    То есть через NAT не будет работать Блин ... весь текст скрыт [показать]
     
     
  • 10.52, pavlinux (ok), 17:23, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Можно поставить бридж меж tap и выходным фейсом если их два иль больше , а ebt... весь текст скрыт [показать]
     
  • 10.108, unscrubber3 (?), 12:06, 23/01/2014 [^] [ответить]     [к модератору]  
  • –1 +/
    на фрибсд можно сделать так - http www opennet ru tips info 2649 shtml и имеющ... весь текст скрыт [показать]
     
     
  • 11.128, pavel_simple (ok), 08:23, 24/01/2014 [^] [ответить]     [к модератору]  
  • +1 +/
    1 слава богу не все настолько укуренные чтобы ставить домой рутер на фряхе чтоб... весь текст скрыт [показать]
     
  • 3.33, Аноним (-), 16:17, 22/01/2014 [^] [ответить]     [к модератору]  
  • +1 +/
    Реквестуй в проект http sourceforge net projects mpls-linux включение, наконе... весь текст скрыт [показать]
     
     
  • 4.59, pavlinux (ok), 17:47, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    MPLS 8482 Patenetd by IBM 174 Corporation ... весь текст скрыт [показать]
     
     
  • 5.111, Аноним (-), 17:00, 23/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Опенбздуны реализацию протокола, запатентованного, Cisco Systems R включили, н... весь текст скрыт [показать]
     
  • 3.69, Аноним (-), 19:04, 22/01/2014 [^] [ответить]    [к модератору]  
  • –1 +/
    > когда в ядре появится MPLS/VPLS

    А зачем он там? Вы собрались делать из пЫонернетовских писюков на BSD core router'ы? У пЫонерии или писюки слишком крутые стали или оптимизма сильно дофига oO.

     
     
  • 4.136, Аноним (-), 09:27, 25/01/2014 [^] [ответить]     [к модератору]  
  • +1 +/
    Да нормально, если гигабит до семи-десяти в сторону аплинков netflow пишется, B... весь текст скрыт [показать]
     
     
  • 5.137, AlexAT (ok), 10:40, 25/01/2014 [^] [ответить]     [к модератору]  
  • +2 +/
    Кстате да, две 4-6-ядерные машинки на ксеонах за 120-150 тыров каждая две тольк... весь текст скрыт [показать]
     
  • 3.84, metallica (ok), 23:37, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    Прикольно http://www.isoc.org/inet2000/cdproceedings/1h/1h_2.htm
     
  • 2.8, Аноним (-), 15:33, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > там порядок следования правил в цепочке важен?

    Естественно. Каждому правило ставится в соответствие номер-идентификатор (handle), которые можно вывести командой nft list -a

     
     
  • 3.23, pavlinux (ok), 15:56, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Ну вот к примеру у правила table filter hook output priority 0 по-моему вообще... весь текст скрыт [показать]
     
     
  • 4.27, Аноним (-), 16:03, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Это не правило, а метаданные цепочки У них и handle нет А еще -I умеет совать ... весь текст скрыт [показать]
     
     
  • 5.30, pavlinux (ok), 16:08, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > А еще -I умеет совать после правила с заданным номером.

    Вот ещё, это же считать надо :)

     
     
  • 6.31, Аноним (-), 16:13, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    >> А еще -I умеет совать после правила с заданным номером.
    > Вот ещё, это же считать надо :)

    Зачем считать? --line-numbers же показывает номера.

     
     
  • 7.138, rico (ok), 18:28, 27/01/2014 [^] [ответить]    [к модератору]  
  • +/
    судя по отсутствию активности вы открыли ему новый мир :)
     
  • 4.65, Адекват (ok), 18:09, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Это не баг, это фича, и ей нужно пользоваться -A удобен для запрещающих равил -... весь текст скрыт [показать]
     
  • 2.22, Anonymous528 (?), 15:52, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    Да, но там есть функция insert, вставляет нужное в нужное.
     
     ....нить скрыта, показать (32)

  • 1.5, Аноним (-), 15:20, 22/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Это замена iptables?
     
     
  • 2.6, asavah (ok), 15:22, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    когда допилят, да.
    пока ещё сыроват для продакшна, но поиграться уже можно.
     
     
  • 3.11, Аноним (-), 15:38, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    А чем старый аналог плох был?
     
     
  • 4.13, Аноним (-), 15:42, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Кривой архитектурой Четыре велосипеда, полученные путем копипасты одного и того... весь текст скрыт [показать]
     
  • 4.70, Аноним (-), 19:06, 22/01/2014 [^] [ответить]    [к модератору]  
  • –1 +/
    > А чем старый аналог плох был?

    Там ты программил правила на почти асме, а тут синтаксис до си заапгрейдили :).

     
     
  • 5.117, Аноним (-), 02:22, 24/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > Там ты программил правила на почти асме, а тут синтаксис до си заапгрейдили :).

    Разница в синтаксисе далеко не такая существенная.

     
  • 2.45, Нанобот (ok), 17:10, 22/01/2014 [^] [ответить]    [к модератору]  
  • –2 +/
    Это замена iptables, ip6tables, arptables и ebtables
     
     
  • 3.54, Адекват (ok), 17:40, 22/01/2014 [^] [ответить]    [к модератору]  
  • –2 +/
    > ....arptables...

    то есть,  типа, iptables не умел отлавливать пакеты по мак-адресам, да ?

     
     
  • 4.57, Нанобот (ok), 17:45, 22/01/2014 [^] [ответить]    [к модератору]  
  • –2 +/
    о чём ты, мальчик?
     
     
  • 5.66, Адекват (ok), 18:18, 22/01/2014 [^] [ответить]    [к модератору]  
  • –2 +/
    > о чём ты, мальчик?

    Перепутал, с кем не бывает :))

     
  • 1.9, Анонимус_б6 (?), 15:34, 22/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    >Подобный подход позволяет значительно сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя

    вот чем это лучше? скажите нубу плиз.

     
     
  • 2.15, Аноним (-), 15:45, 22/01/2014 [^] [ответить]     [к модератору]  
  • –2 +/
    Для пользователя - мало чем А вот для разработчиков - очень даже лучше Не надо... весь текст скрыт [показать]
     
     
  • 3.19, Аноним (-), 15:50, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    А как будет работать «система отслеживания состояния соединений»? Логику её модулей тоже придётся на BPF писать?
     
     
  • 4.21, Аноним (-), 15:51, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > А как будет работать «система отслеживания состояния соединений»? Логику её модулей тоже придётся на BPF писать?

    А ее не трогали. Как работала, так и работает.

     
  • 3.50, Aceler (ok), 17:21, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > Для пользователя - мало чем.

    Для пользователя будет заметно, когда его роутер перестанет перегреваться на торрентах :-)

     
     
  • 4.55, Адекват (ok), 17:41, 22/01/2014 [^] [ответить]    [к модератору]  
  • –1 +/
    >> Для пользователя - мало чем.
    > Для пользователя будет заметно, когда его роутер перестанет перегреваться на торрентах
    > :-)

    Мда, такого бреда...

     
  • 4.118, Аноним (-), 02:24, 24/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > Для пользователя будет заметно, когда его роутер перестанет перегреваться на торрентах :-)

    Радиатор+термопаста. В особо запущенных случаях - кулер. Ну и руки из правильного места.

     
  • 1.10, Аноним (-), 15:37, 22/01/2014 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    Похоже, что оно не поддерживает ipset, вместо этого вводя свой аналогичный велос... весь текст скрыт [показать]
     
  • 1.12, Аноним (-), 15:42, 22/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    table filter {
            chain input {
                     table filter hook input ...

    пока синтаксис выглядит не очень, зачем одно и тоже два раза повторять, неясно.

     
     
  • 2.14, Аноним (-), 15:43, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    А можно и не повторять table filter chain inbound t... весь текст скрыт [показать]
     
     
  • 3.24, Аноним (-), 15:58, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    table filter же всё равно два раза.
     
     
  • 4.26, Аноним (-), 16:01, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > table filter же всё равно два раза.

    На самом деле, во второй раз - type filter. А в первый раз - опять-таки можно переименовывать.

     
     
  • 5.28, Аноним (-), 16:03, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    >> table filter же всё равно два раза.
    > На самом деле, во второй раз - type filter. А в первый
    > раз - опять-таки можно переименовывать.

    ну назвали бы type тогда :) понятно, спасибо!

     
     
  • 6.48, Аноним (-), 17:12, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Так и назвали См примеры http people netfilter org wiki-nftables index php S... весь текст скрыт [показать]
     
     
  • 7.60, pavlinux (ok), 17:55, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    логичней было бы сократить table ip filter chain input ... весь текст скрыт [показать]
     
     
  • 8.71, evilman (?), 19:06, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    gt оверквотинг удален type разный бывает, например, mangle или nat, так что ни... весь текст скрыт [показать]
     
     
  • 9.109, pavlinux (ok), 14:10, 23/01/2014 [^] [ответить]    [к модератору]  
  • +/
    NATить и манглить в таблице фильтр низя.
     
     
  • 10.116, AlexAT (ok), 21:04, 23/01/2014 [^] [ответить]     [к модератору]  
  • +1 +/
    На самом деле, если очень хочется - то можно Я вот в таблице nat DROP аю, на... весь текст скрыт [показать]
     
  • 3.25, Аноним (-), 15:59, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    В нынешнем iptables со товарищи, при создании соответствующей таблицы автоматиче... весь текст скрыт [показать]
     
     
  • 4.68, metallica (ok), 18:49, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Не понял, и в iptables создаём какие угодно цепочки с любыми именами ... весь текст скрыт [показать]
     
     
  • 5.125, Аноним (-), 02:45, 24/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > Не понял, и в iptables создаём какие угодно цепочки с любыми именами.

    Как насчет цепочек, создаваемых автоматически?

     
     ....нить скрыта, показать (12)

  • 1.17, Аноним (-), 15:49, 22/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Теперь наверное фильтры настраивать легко станет?
     
     
  • 2.20, Аноним (-), 15:51, 22/01/2014 [^] [ответить]     [к модератору]  
  • +2 +/
    Да примерно так же Исторически сложилось, что легкость настройки фильтров завис... весь текст скрыт [показать]
     
  • 2.32, llolik (ok), 16:15, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    Я бы сказал более наглядно (если считать для конечного пользователя)
     
     
  • 3.42, Доктор Звездулькин (?), 16:52, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    Вообще если первый критерий — простота и наглядность, то можно взять ufw.
     
     
  • 4.49, Аноним (-), 17:14, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    nftables примерно настолько же просто и наглядно, но при этом несравненно мощнее... весь текст скрыт [показать]
     
  • 4.61, pavlinux (ok), 17:58, 22/01/2014 [^] [ответить]    [к модератору]  
  • –1 +/
    > Вообще если первый критерий — простота и наглядность, то можно взять ...

    Cisco ASA за 300$ и не ипать моск.


     
     
  • 5.64, asavah (ok), 18:05, 22/01/2014 [^] [ответить]    [к модератору]  
  • –1 +/
    >> Вообще если первый критерий — простота и наглядность, то можно взять ...
    > Cisco ASA за 300$ и не ипать моск.

    Не! професиАналы негодуют.
    только DIR-100, только хардкор.

     
  • 5.72, Аноним (-), 19:08, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > Cisco ASA за 300$ и не ипать моск.

    Ща придет sfdtudio и покажет тебеи как офис на 100 компов роутит 20-баксовая мыльница. И даже не дохнет при этом :).

     
     
  • 6.79, anonymous (??), 22:31, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Если внешка на 10 мбит, это неудивительно ... весь текст скрыт [показать]
     
  • 6.110, pavlinux (ok), 14:12, 23/01/2014 [^] [ответить]    [к модератору]  
  • +/
    >> Cisco ASA за 300$ и не ипать моск.
    > Ща придет sfdtudio и покажет тебеи как офис на 100 компов роутит
    > 20-баксовая мыльница. И даже не дохнет при этом :).

    Я тоже люблю хардкор.

     
  • 1.43, gaga (ok), 16:59, 22/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Можно будет с помощью этой штуки фильтровать трафик пользователя, цгруппы и приложения?
     
     
  • 2.46, Аноним (-), 17:10, 22/01/2014 [^] [ответить]    [к модератору]  
  • +1 +/
    По UID и GID - можно. По cgroups и приложению - нет. AFAIK, Поттеринг пытался это пропихнуть, но его патч завернули по причине "поттеринг".
     
     
  • 3.51, Аноним (-), 17:23, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    Потому что он опять пытался решать задачу, которая никому нафиг не сдалась. Фильтрация по приложениям, командным строкам, контрольным группам - бред собачий.
     
     
  • 4.78, Аноним (-), 22:28, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    Было бы не плохо
     
  • 4.88, Аноним (-), 04:10, 23/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Очень даже сдалась Просто вы себе использование cgroups мыслите не вполне совре... весь текст скрыт [показать]
     
  • 3.87, Аноним (-), 04:07, 23/01/2014 [^] [ответить]    [к модератору]  
  • +/
    Вот же ж. Единственный полезный телодвижений от Лёни, и на тебе.
    А все остальные, которые вредные - радостно прогрессируют.
    Что-то с этой планетой не так..
     
  • 1.44, Нанобот (ok), 17:07, 22/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    ipfwadm, ipchains, iptables, nftables... прям как в басне крылова "квартет"
     
  • 1.58, Адекват (ok), 17:46, 22/01/2014 [ответить] [показать ветку] [···]     [к модератору]  
  • –3 +/
    gt оверквотинг удален Что-то как-то слишком просто, нет, я понимаю что они сде... весь текст скрыт [показать]
     
     
  • 2.120, Аноним (-), 02:30, 24/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > без возможности обратного восстановления конечно

    Дурачок? nft list никто не отменял, вообще-то.

     
  • 1.67, asavah (ok), 18:40, 22/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    кстати вдруг кто споткнётся при сборке nftables вылетает ошибка и не генерятся доки/маны:

    openjade:/usr/share/sgml/docbook/stylesheet/dsssl/modular/print/dbbibl.dsl:704:4:E: flow object not accepted by port; only display flow objects accepted
    Done.

    ставим openjade 1.3 и всё пучком (вылет идёт на openjade 1.4).

     
  • 1.73, AlexAT (ok), 19:14, 22/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Юзерспейс там пока конечно ужасный... просто адовый. Эта зараза не хочет автоматически очищать таблицы, и даже flush всех цепочек не сбрасывает, приходится удалять по одному. Еще пока так и не понял - как вывести весь конфиг, а не конкретную таблицу.

    Бэкпортировал nftables в ядро CentOS 6.5, юзерспейс тоже адаптировал, сейчас немножко погоняю (filter уже проверил, NAT проверил), и выложу ссылку для желающих потестировать на "классике".

     
     
  • 2.76, AlexAT (ok), 20:51, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    del
     
  • 1.75, AlexAT (ok), 20:51, 22/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +3 +/
    Для желающих nftables в CentOS'е - экспериментальный бэкпорт nftables в ядро CentOS 6.5.

    http://alex-at.ru/linux/centos-6-5-nftables

     
     
  • 2.77, crypt (ok), 21:58, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    круто-круто, только вот на сайте по любым другим ссылкам ошибка This is b2evolu... весь текст скрыт [показать]
     
     
  • 3.82, AlexAT (ok), 22:48, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > круто-круто, только вот на сайте по любым другим ссылкам ошибка:

    Уже нет.

     
  • 1.80, PavelR (??), 22:43, 22/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    > Похоже, что оно не поддерживает ipset, вместо этого вводя свой аналогичный велосипед.
    > Конечно, ipset за несколько лет гораздо лучше вылизан по скорости и потреблению
    > памяти, да еще имеет критически важную фичу, которой нет в ntf
    > - таймауты.

    Мне вот вообще интересно, iptables умеет разные модули, в которых можно [было] написать что угодно, какие угодно проверки, причем единственное ограничение - это возможности языка С.

    Теперь же получается будет ограничение - возможности виртуальной машины. И никаких модулей.
    Мне как-то кажется, что оптимизировать проверки под С проще, чем под возможности виртуальной машины.


    >Непосредственно логика фильтрации и специфичные для протоколов обработчики компилируются в
    >байткод в пространстве пользователя, после чего данный байткод загружается в ядро при
    >помощи интерфейса Netlink и выполняется в специальной виртуальной машине, напоминающей BPF
    >(Berkeley Packet Filters).

    Какие цели проекта? Пока я считаю, что проект в целом - "хотим свой велосипед, круглое - не модно, хотим овальное и розовое".

     
     
  • 2.81, PavelR (??), 22:46, 22/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Чтобы далеко не ходить за примером, спрошу у уважаемой публики Как будет реализ... весь текст скрыт [показать]
     
     
  • 3.83, AlexAT (ok), 23:07, 22/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > Как будет реализован модуль с функционалом, аналогичным модулю recent ?

    Есть подозрение, что это правильнее всего будет делать на базе set'ов.

     
     
  • 4.98, PavelR (??), 08:42, 23/01/2014 [^] [ответить]     [к модератору]  
  • +/
    как же, на базе set-ов сделать функционал, когда прилетевший пакет добавит IP ... весь текст скрыт [показать]
     
     
  • 5.100, pavel_simple (ok), 08:50, 23/01/2014 [^] [ответить]     [к модератору]  
  • +/
    если написать разлаписто а не одним правилом то вроде-как взлетает -- т е xt_re... весь текст скрыт [показать]
     
  • 5.106, AlexAT (ok), 11:01, 23/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Позволю себе пофантазировать синтаксис пока не соблюдаю, но концепт должен быть... весь текст скрыт [показать]
     
     
  • 6.121, Аноним (-), 02:32, 24/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Насколько я понял, таймауты там не поддерживаются как класс Можно оперировать т... весь текст скрыт [показать]
     
     
  • 7.130, pavel_simple (ok), 08:28, 24/01/2014 [^] [ответить]     [к модератору]  
  • +1 +/
    понял не правильно ... весь текст скрыт [показать]
     
  • 3.86, Inome (ok), 00:08, 23/01/2014 [^] [ответить]    [к модератору]  
  • +2 +/
    +1 тоже интересует вопрос о работе старых модулей на новом iptables. Надеюсь, что модули вообще можно будет использовать !?
     
     
  • 4.90, AlexAT (ok), 07:14, 23/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Хитрость в том, что не менее половины старых модулей там просто не нужно, ибо ... весь текст скрыт [показать]
     
     
  • 5.91, pavel_simple (ok), 07:38, 23/01/2014 [^] [ответить]    [к модератору]  
  • +/
    с match модулями как-раз всё понятно, и эта виртуальная машина тут очень при чём. НО, что делать с target модулями, как сохранять состояния, работа с памятью?
     
     
  • 6.92, AlexAT (ok), 07:43, 23/01/2014 [^] [ответить]     [к модератору]  
  • +/
    С target-модулями ничего особо хорошего С другой стороны - скорее всего поддерж... весь текст скрыт [показать]
     
  • 6.97, PavelR (??), 08:37, 23/01/2014 [^] [ответить]     [к модератору]  
  • +/
    да вот не всё понятно кроме данных непосредственно пакета есть куча разнообразн... весь текст скрыт [показать]
     
     
  • 7.127, Аноним (-), 02:49, 24/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Эти данные так же доступны для BPF, как и сам пакет ... весь текст скрыт [показать]
     
     
  • 8.129, pavel_simple (ok), 08:27, 24/01/2014 [^] [ответить]     [к модератору]  
  • +1 +/
    proof ... весь текст скрыт [показать]
     
  • 5.95, PavelR (??), 08:36, 23/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Хорошо, не менее половины старых модулей А что со второй половиной Допустим,... весь текст скрыт [показать]
     
     
  • 6.113, AlexAT (ok), 20:42, 23/01/2014 [^] [ответить]     [к модератору]  
  • +/
    И все-таки именно за этим не придётся лезть в ядро - уже реализовано А при доба... весь текст скрыт [показать]
     
  • 6.122, Аноним (-), 02:37, 24/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Метаданные пакета входящий интерфейс, исходящий интерфейс, realm, mark, connmar... весь текст скрыт [показать]
     
     
  • 7.131, pavel_simple (ok), 08:30, 24/01/2014 [^] [ответить]     [к модератору]  
  • +1 +/
    vlan тэг QinQ тожа нет ... весь текст скрыт [показать]
     
  • 2.134, Кот_Говноглот (?), 12:03, 24/01/2014 [^] [ответить]    [к модератору]  
  • +/
    Ну почитай же ты документацию. Они там библиотеку для этого сделали.
     
     
  • 3.135, pavel_simple (ok), 12:47, 24/01/2014 [^] [ответить]     [к модератору]  
  • +/
    где документация, я вот не нашел мой гугол меня подводит где написано как расш... весь текст скрыт [показать]
     
     ....нить скрыта, показать (20)

  • 1.85, Inome (ok), 00:07, 23/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Честно говоря, прибываю в ужасе от нового синтаксиса правил.. Сделали более громоздкий и длинный синтаксис, променяв годами проверенный стандартный. Хорошо, что пока поддерживается оба варианта. Надеюсь, кто-нибудь напишет конвертер старого синтаксиса под новый, если они решат его выпилить в более новых версиях.
     
     
  • 2.99, PavelR (ok), 08:46, 23/01/2014 [^] [ответить]     [к модератору]  
  • –2 +/
    А всё потому, что там сидят кодеры, а не разработчики, и их цель - писать код, к... весь текст скрыт [показать]
     
     
  • 3.124, Аноним (-), 02:40, 24/01/2014 [^] [ответить]     [к модератору]  
  • +1 +/
    Окей, идите на винду, там исключительно разработчики С 2009 по 2013 разработк... весь текст скрыт [показать]
     
  • 2.123, Аноним (-), 02:39, 24/01/2014 [^] [ответить]     [к модератору]  
  • –1 +/
    Годами проверены только громоздкость, неудобство и запутанность стандартного с... весь текст скрыт [показать]
     
     
  • 3.132, pavel_simple (ok), 08:31, 24/01/2014 [^] [ответить]     [к модератору]  
  • +1 +/
    ставь подпись неасилятор ... весь текст скрыт [показать]
     
  • 1.89, sabitov (ok), 06:02, 23/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Это поделие нахер не надо, пока не будет нормальной документации... :(

    add rule ip filter input meta dnat set tcp dport map { 80 => 192.168.1.100, 8888 => 192.168.1.101 }

    This is typical port redirection that depends on the destination port.
    Thus, if the destination port is 22, then the packet is dnatted to 192.168.1.100.


    Ладно, тут хотя бы понятно, что очепятка, но вот такой шедевр тех. документации повергает в уныние:

    Prepending new rules

    To prepend new rules through the insert command:

    $ sudo nft insert rule filter output ip daddr 192.168.1.1 counter

    :( :( :(

     
     
  • 2.93, AlexAT (ok), 07:45, 23/01/2014 [^] [ответить]     [к модератору]  
  • +/
    Это поделие надо по другой причине - оно практически унифицирует интерфейс, лази... весь текст скрыт [показать]
     
  • 1.94, PavelR (??), 08:25, 23/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    >Плюс производительность - она должна быть серьезно выше, чем у iptables/xtables

    Почему производительность у псевдокода виртуальной машины должна быть выше чем производительность скомпилированного С-кода, исполняющегося непосредственно CPU ?

     
     
  • 2.96, pavel_simple (ok), 08:36, 23/01/2014 [^] [ответить]    [к модератору]  
  • +/
    >>Плюс производительность - она должна быть серьезно выше, чем у iptables/xtables
    > Почему производительность у псевдокода виртуальной машины должна быть выше чем производительность
    > скомпилированного С-кода, исполняющегося непосредственно CPU ?

    если говорить про match модули -- то можно предположить что

    виртуальная машина проста как два пальца и накладных расходов минимум (ещё не смотрел)
    текущий вариант представляет таблицу вызовов и это накладывает какие-то ограничения (с ограничениями не встречался)

    к тому-же самое смешное что не так давно почти на все архитектуры был запилен bpf-jit и кроме того google-пограмисты подарили нам всем xt_bpf, который практически решил проблемы написания match модулей.
    modinfo xt_bpf
    filename:       /lib/modules/3.12-0.bpo.1-amd64/kernel/net/netfilter/xt_bpf.ko
    alias:          ip6t_bpf
    alias:          ipt_bpf
    license:        GPL
    description:    Xtables: BPF filter match
    author:         Willem de Bruijn <willemb@google.com>
    depends:        x_tables
    intree:         Y
    vermagic:       3.12-0.bpo.1-amd64 SMP mod_unload modversions

    другое дело что подобный подход не применим на target, и возможно какое-то подобие виртуальной машины было-бы востребовано, но опять=же возникает вопрос почему было не расширить тот-самый bpf-jit функциями позволяющими работать с памятью и sk_buff и менять содержимое.

     
     
  • 3.101, PavelR (ok), 09:18, 23/01/2014 [^] [ответить]     [к модератору]  
  • –3 +/
    - Зачем всю функциональность запихивать в виртуальную машину - Зачем убирать в... весь текст скрыт [показать]
     
     
  • 4.103, pavel_simple (ok), 09:39, 23/01/2014 [^] [ответить]    [к модератору]  
  • +/
    >[оверквотинг удален]
    > }
    > hook filter.forward {
    >       priority 0 table MY_FILTER_CHAINS chain MY_INPUT_CHAIN_NAME;
    > }
    > А в некоем идеале слоя совместимости и так:
    > hook filter.forward {
    >       priority 0 iptables;
    > }
    > где iptables - имя "некоего native-C модуля".
    > =)

    кратко ИМХО о userspace -- мне (я думаю многим другим кто уже привых) новый систаксис сильно не нравится. но во 1 -- это именно дело привычки, а во 2-ых -- предоставленный "слой совместимости" вполне может быдет более популярен, чем то что оне там напридумывали. В общем случае на userspace можно положить -- бсдшнеги моляться на ipfw шный синтаксис а фломастеры по прежнему разного вкуса.

     
     
  • 5.105, PavelR (ok), 10:19, 23/01/2014 [^] [ответить]    [к модератору]  
  • +/
    >[оверквотинг удален]
    >> hook filter.forward {
    >>       priority 0 table MY_FILTER_CHAINS chain MY_INPUT_CHAIN_NAME;
    >> }
    >> А в некоем идеале слоя совместимости и так:
    >> hook filter.forward {
    >>       priority 0 iptables;
    >> }
    >> где iptables - имя "некоего native-C модуля".
    >> =)
    > но во 1 -- это именно дело привычки

    да это понятно.

    > а во 2-ых -- предоставленный "слой совместимости" вполне
    > может быдет более популярен, чем то что оне там напридумывали.

    ну если они _всю_ функциональность запихнут, то почти пофиг, в каком формате конфигурить, напрямую в новом или через "слой совместимости" ака "трансляторы".
    Только вот с "запихнуть всю функциональность" будут нехилые проблемы.

    Да в общем, они _это_ пилили 5 (пять) лет, на "всю функциональность" уйдет еще лет 10 (десять). Жаль только, что это в апстрим приняли _в таком виде_.

     
  • 4.114, AlexAT (ok), 20:51, 23/01/2014 [^] [ответить]    [к модератору]  
  • +/
    Ну, "виртуальная машина" там - одно название. Суть та же таблица команд и вызовов, псевдокод. Разница только в том, что если раньше цепочку вызовов собирало само ядро, причем каждый match вызывался отдельно, выполняя, возможно, и ненужные совершенно операции, то теперь цепочка вызовов собирается userspace'ом, возможно, оптимизированно. Грубо говоря - все match'и разбили до элементарных примитивов.

    Пример: xt_iprange
    if (info->flags & IPRANGE_SRC) { ... }
    if (info->flags & IPRANGE_DST) { ... }

    Если я хочу матчить только по SRC - нафига мне каждый раз проверять флаг для SRC/DST? Это прекрасно может сделать юзерспейс, и оставить из этого только один матч. Мелочь, а приятно. А внутри еще и:

    m ^= !!(info->flags & IPRANGE_SRC_INV);

    Опять же, нафига? Проверка инвертированного диапазона. Юзерспейс прекрасно знал, что матч инвертирован, и мог сменить match на не-match еще до передачи в ядро. Зачем эти лишние операции на каждый пакет.

    Еще один плюс - возможность хукать несколько хуков на разные участки прохождения пакета (разным софтом, к примеру, с разными приоритетами). Или исключать хуки совсем. Если нам не нужно фильтровать output, к примеру - зачем этот хук? В iptables он есть, и занимает время. Если нам не нужен nat на PREROUTING и OUTPUT - этих хуков тоже не будет.

    В принципе, определенная оптимизация имеет место быть. Операции "на каждый пакет" заменяются разовыми при генерации псевдокода.

     
     
  • 5.133, pavel_simple (ok), 08:34, 24/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > В принципе, определенная оптимизация имеет место быть. Операции "на каждый пакет" заменяются
    > разовыми при генерации псевдокода.

    вот именно что по сути это state machine "компилируемая" для ядра в юзерспейсе. и конечно сдесь есть здравое звено. чего только стоит отсутствие парсинга аргументов в ядре...

    НО минус то тоже огромный -- КАК это расширять?

     
  • 3.102, pavel_simple (ok), 09:19, 23/01/2014 [^] [ответить]    [к модератору]  
  • +/
    >[оверквотинг удален]
    > description:    Xtables: BPF filter match
    > author:         Willem de Bruijn
    > <willemb@google.com>
    > depends:        x_tables
    > intree:         Y
    > vermagic:       3.12-0.bpo.1-amd64 SMP mod_unload modversions
    > другое дело что подобный подход не применим на target, и возможно какое-то
    > подобие виртуальной машины было-бы востребовано, но опять=же возникает вопрос почему было
    > не расширить тот-самый bpf-jit функциями позволяющими работать с памятью и sk_buff
    > и менять содержимое.

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

     
     
  • 4.104, PavelR (ok), 10:16, 23/01/2014 [^] [ответить]    [к модератору]  
  • –1 +/
    >как его нормальным способом расширять я пока не понял.

    Вот-вот. Золотые слова.

     
  • 1.107, rshadow (ok), 11:10, 23/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    А с таким подходом теперь запилят нормальный юзерспейсный фаервол? С показом кто куда идет, счетчиком трафика по приложениям и т.д....
     
     
  • 2.115, AlexAT (ok), 20:58, 23/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > А с таким подходом теперь запилят нормальный юзерспейсный фаервол? С показом кто
    > куда идет, счетчиком трафика по приложениям и т.д....

    Оно совершенно для другого. Хотите считать трафик по приложениям - настраивайте selinux, и матчите по secmark.

     
  • 2.126, Аноним (-), 02:47, 24/01/2014 [^] [ответить]    [к модератору]  
  • +/
    > А с таким подходом теперь запилят нормальный юзерспейсный фаервол?

    Нет. Это никому не нужно. (Никому из разработчиков, разумеется)

     
  • 1.112, gapsf2 (ok), 17:21, 23/01/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Ответы на некоторые вопросы:
    https://home.regit.org/wp-content/uploads/2013/09/2013_kernel_recipes_nftables
     

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


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