Второй выпуск пакетного фильтра nftables Печать
17.04.14 20:30

Проект Netfilter представил второй выпуск нового пакетного фильтра nftables (0.2), а также соответствующий выпуск вспомогательной библиотеки libnftnl 1.0.1.

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

Новые возможности, доступные в данной версии:

  • Поддержка гибридных IPv4/IPv6 таблиц. По умолчанию, правила в такой таблице применяются как к IPv4, так и к IPv6-пакетам. Исключение составляют те правила, для которых протокол указан явно. Пример работы с подобной таблицей:
    
        nft inet filter input ip saddr 192.168.0.0/24 jump from_lan
        nft inet filter input ip6 saddr 2001::/64 jump from_lan
        nft inet filter input tcp dport ssh accept
        nft inet filter input iif lo accept
  • Возможность изменения метаинформации о пакете, в частности, метки (аналог iptables -j MARK), класса шейпера (iptables -j CLASSIFY) и статуса трассировки (iptables -j TRACE). Например,
    
        nft filter input mark set 0x1

    устанавливает метку пакета в значение 1, а

    
        nft filter input mark set mark | 0x1

    устанавливает в единицу младший бит метки, не меняя остальные.

    Особенный интерес представляет возможность использования меток соединений в словарях (maps), что позволяет, например, в рамках одного правила устанавливать различные метки в зависимости от исходных IP-адресов пакетов:

    
        nft filter input mark set ip saddr map {
            192.168.0.0/24 : 0x1,
            192.168.1.0-192.168.1.64 : 0x2,
            192.168.2.1 : 0x3,
            * : 0x4
        }

    Кроме того, метка может быть рассчитана на основании арифметических операций с адресами пакета (аналог неофициального дополнения к iptables IPMARK):

    
        nft filter input ip saddr 192.168.0.0/16 mark set ip saddr & 0xff00
  • Управление метками соединений (аналог iptables -j CONNMARK). В частности, поддерживается возможность установки метки соединения на основании метки пакета и наоборот, а также прямое задание метки соединения.
  • Поддержка именованных меток соединений (аналог iptables -m connlabel).
  • Возможность балансировки пакетов, передаваемых на обработку вспомогательным программам, между несколькими очередями, что позволяет более эффективно организовывать работу на системах с большим трафиком (аналог iptables -j NFQUEUE --queue-balance).
  • Реализован экспорт набора правил в форматы XML и JSON. Возможность импорта ожидается в следующем выпуске.
  • Поддержка комментариев, встроенных непосредственно в правила (аналог iptables -m comment):
    
        nft filter input tcp dport ssh accept comment "SSH access"
  • При чтении файла с правилами, содержащего ошибки, операция прерывается только после 10 ошибок (а не после первой, как раньше), что значительно ускоряет процесс отладки больших наборов правил.
  • Добавлена новая команда create для создания таблиц и цепочек. В отличие от уже имеющейся команды add, create не выдает ошибки, если создаваемый объект уже существует.
  • Исправлен ряд ошибок, в частности, улучшена работа с символьными переменными.
  • Также внесены некоторые изменения в синтаксис правил:
    • В некоторых meta-выражениях (mark, iif, iifname, iiftype, oif, oifname, oiftype, skuid, skgid, nftrace, rtclassid) явное указание слова meta теперь необязательно.
    • Приведены к единой схеме имена типов данных, используемые в декларации списков (set) и словарей (maps). В частности, типы, связанные с адресами, теперь именуются *_addr, с протоколами — *_proto, с интерфейсами — iface_*. Тип "arphrd" переименован в "iface_type".
  1. Главная ссылка к новости (http://lists.netfilter.org/pipermail/net...)
  2. OpenNews: Первый пригодный для пользователей релиз пакетного фильтра Nftables
  3. OpenNews: Релиз ядра Linux 3.13. Обзор новшеств
  4. OpenNews: В ядре Linux 3.13 ожидается появление нового пакетного фильтра Nftables
  5. OpenNews: Разработчики Netfilter представили замену iptables
Автор новости: Аноним
Тип: Программы
Ключевые слова: nftables, iptables, netfilter, (найти похожие документы)
При перепечатке указание ссылки на opennet.ru обязательно
Реклама
id=adv>
  1.1, Пропатентный тролль, 00:37, 18/04/2014 [ответить] [смотреть все] +1 +/
у БЗД подобное есть? (хотя бы в разработке?)
 
  2.8, Аноним, 02:05, 18/04/2014 [^] [ответить] [смотреть все] [показать ветку] –1 +/
Мапы адрес - метка считались киллeр-фичей pf по сути, наиболее существенное пр... весь текст скрыт [показать] [показать ветку]
 
  3.18, mickvav, 10:18, 18/04/2014 [^] [ответить] [смотреть все]    [к модератору]  +/
Как бы модуль IPMARK для iptables уже несколько лет как есть.
 
1.2, Аноним, 00:44, 18/04/2014 [ответить] [смотреть все]  –1 +/
PF и IPFW хватает всем нормальным людям... весь текст скрыт [показать]
 
  2.3, axe, 00:45, 18/04/2014 [^] [ответить] [смотреть все] [показать ветку]  +2 +/
кому не хватает, для тех есть netgraph )
 
  3.7, Аноним, 02:03, 18/04/2014 [^] [ответить] [смотреть все]  +/
Вы сравниваете немного разные вещи ... весь текст скрыт [показать]
 
  4.9, Аноним, 02:08, 18/04/2014 [^] [ответить] [смотреть все]  +/
netgraf слишком общая и универсальная вещь, и требует серьезного напилинга под к... весь текст скрыт [показать]
 
1.4, Аноним, 00:59, 18/04/2014 [ответить] [смотреть все]  +2 +/
include trollface h однако ... весь текст скрыт [показать]
  1.5, asavah, 01:07, 18/04/2014 [ответить] [смотреть все]  +/ Изменений овер9000 ...  практически только дока, мля

   0944e15..daf4958  master     -> origin/master
* [new branch]      trans      -> origin/trans
* [new tag]         v0.2       -> v0.2
Updating 0944e15..daf4958
Fast-forward
Makefile.defs.in  |    1 +
Makefile.rules.in |    4 +-
configure.ac      |   28 ++--
doc/.gitignore    |    4 +-
doc/Makefile.in   |    4 +-
doc/nft.xml       | 2168 +++ ...
doc/nftables.xml  |  966 --- ...
include/gmputil.h |    9 ++
include/utils.h   |   16 +-
src/datatype.c    |   12 +-
src/gmputil.c     |    7 +-
src/meta.c        |    8 +-
src/netlink.c     |    2 +-
src/parser.y      |    7 +
src/payload.c     |    3 +-
src/proto.c       |    4 +-
src/rule.c        |    2 +-
17 files changed, 2246 insertions(+), 999 deletions(-)
create mode 100644 doc/nft.xml
delete mode 100644 doc/nftables.xml

  1.10, Аноним, 02:13, 18/04/2014 [ответить] [смотреть все]  +/
Очень надеюсь, что добавят поддержку ipset Он очень хорошо оптимизирован под ги... весь текст скрыт [показать]
  1.13, Ващенаглухо, 09:01, 18/04/2014 [ответить] [смотреть все]    [к модератору]  +2 +/ какой уродливый синтаксис у этого nft, iptables был намного проще.
 
  2.15, Аноним, 10:04, 18/04/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  +/
Воистину так В принципе, все понимаю про преимущества nftables, но его освоение... весь текст скрыт [показать] [показать ветку]
 
  3.16, Andrey Mitrofanov, 10:07, 18/04/2014 [^] [ответить] [смотреть все]    [к модератору]  +/
> Воистину так. В принципе, все понимаю про преимущества nftables, но его освоение
> по большей тормозит именно дико уродливый синтаксис правил nft...

И это пройдёт. Освоение iptables то же самое тормозит, пока не прочитаешь [и поймёшь!] достаточно решений реальных проблем. И для этого всё будет.

 
  4.17, Аноним, 10:11, 18/04/2014 [^] [ответить] [смотреть все]     [к модератору]  +/
В принципе да, iptables в свое время тоже осваивал на практике, может когда дойд... весь текст скрыт [показать]
 
  5.20, llolik, 10:24, 18/04/2014 [^] [ответить] [смотреть все]    [к модератору]  +/
Читаю wiki-справку проекта. Вроде бы как даже удобней iptables, там даже примеры есть, как описать одно и то же правило в ipt и nft. Другое дело,  что сама вики пока довольно скудная.
 
1.14, жабабыдлокодер, 09:35, 18/04/2014 [ответить] [смотреть все]    [к модератору]  +/ >При чтении файла с правилами, содержащего ошибки, операция прерывается только после 10 ошибок (а не после первой, как раньше), что значительно ускоряет процесс отладки больших наборов правил.

Ай да молодцы!

  1.19, Пушистик, 10:23, 18/04/2014 [ответить] [смотреть все]    [к модератору]  +/ spoofing attack поддерживается?
  1.21, Аноним, 10:49, 18/04/2014 [ответить] [смотреть все]     [к модератору]  +/
закос на ipfw и json ... весь текст скрыт [показать]
 
Ваш комментарий  

Read more http://www.opennet.ru/opennews/art.shtml?num=39596