LINUX.ORG.RU

Новая реализация пакетного фильтра nftables будет добавлена в ядро Linux 3.13

 , , , ,


3

3

В ветку linux-next, на базе которой будет сформировано ядро версии 3.13, добавлена новая реализация подсистемы пакетной фильтрации nftables. Разработка системы ведётся с 2009 года, её целью является замена подсистем iptables, ip6table, arptables и ebtables. Результата разработчики желают добиться путём сокращения количества (и дублей) кода уровня ядра, упрощения взаимодействия ядра и userspace-приложений, а также использования байт-кода для компилирования правил фильтрации и исполнения их в ядре.

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

Идея в целом позаимствована в реализациях Berkeley Packet Filters, применяемых в BSD-системах. При этом синтаксис пользовательских правил (утилиты nft) также напоминает синтаксис ipfw FreeBSD.

Например, для приёма icmp-сообщений echo-request, в командной строке (скрипте) необходимо набрать:

nft add rule  filter input icmp type echo-request accept

Сводный список правил формируется как иерархическая блочная структура, чем-то напоминающая pf и npf:

# nft list table filter -n  -a
table filter {
        chain output {
                 table filter hook output priority 0;
                 ip protocol tcp counter packets 82 bytes 9680 # handle 8
                 ip saddr 127.0.0.1 ip daddr 127.0.0.6 drop # handle 7
        }
}
# nft  add rule filter output position 8 ip daddr 127.0.0.8 drop 
# nft list table filter -n -a
table filter {
        chain output {
                 table filter hook output priority 0;
                 ip protocol tcp counter packets 190 bytes 21908 # handle 8
                 ip daddr 127.0.0.8 drop # handle 10
                 ip saddr 127.0.0.1 ip daddr 127.0.0.6 drop # handle 7
        }
}

>>> Подробности

★★★

Проверено: Shaman007 ()
Последнее исправление: cetjs2 (всего исправлений: 3)
Ответ на: комментарий от pekmop1024

Самое прикольное, как я понял, что «iptables like chain setup» будет не единственной возможностью.

Lothlorien ★★★
() автор топика

Вот это действительно нечто хорошее из нового.

Quasar ★★★★★
()
Ответ на: комментарий от NaN

Нормальный iptables

Это где такой дают? Где тот чертов iptables, в котором одной строкой можно, например, порт отфорвардить?

pekmop1024 ★★★★★
()
Ответ на: комментарий от NaN

Если можно будет прямо там писать скрипты для правил, не прибегая к помощи того же shell, то это будет шикарно.

Quasar ★★★★★
()

напоттерили очередной велосипед

unt1tled ★★★★
()

Может, они и tc заменят на что-то более человечное?

Chaser_Andrey ★★★★★
()

Идея в целом позаимствована в реализациях Berkeley Packet Filters, применяемых в BSD-системах. При этом синтаксис пользовательских правил (утилиты nft) также напоминает синтаксис ipfw FreeBSD.

вся суть GPL, или им втулят блоб, или надо идею побыстрому брать в BSD

anonymous
()
Ответ на: комментарий от anonymous

Еси чо, то бпф не имеет никакого отношения к БСД. Разве что... бсдуны позаимствовали его... правда до толковой реализации так и не дошли, впрочем как и с ipfw (который большую часть своей жизни был где-то в районе ipchains из линукс 2.2). Единственно что они крутяцки реализовали, это БП pf... но это угребище настолько неадекватно и сложно настраивается, что все равно большая часть используют ipfw.

Как-то так.

Jetty ★★★★★
()

Новость с момента публикации на опеннете успела протухнуть, я даже успел починить acpi в ноуте за это время :)

full_inu
()

а также использования байт-кода для компилирования правил фильтрации и исполнения их в ядре.

В какой версии ждать в ядре HotSpot JVM? (8

asaw ★★★★★
()
Ответ на: комментарий от anonymous

Это ты тут так тонко намекнул, что BSD владеет какими-то правами на идеи или у тебя просто ё-хурт?

Deleted
()

подразумевает сосуществование старых и новой подсистем

и насколько долго? До ядра 4.0?

DNA_Seq ★★☆☆☆
()

Прогресс, однако :)

С синтаксисом, конечно, можно было и не изобретать велосипед, а взять из OpenBSD pf. iptables по сравнению с pf - угловатое подростковое поделие. Так что прогресс очевиден, но явно не достаточен. Компиляция правил в некий интерпретируемый байт-код тоже весьма здоровая идея, потому что структурками для сложных фильтров никак не обойтись, а быстродействие очень важно. Вобщем, еще немного и линух в этом плане доростет до OpenBSD :)

alukin
()

Синтаксис упорот. Не, ну там для цепочек оно может и удобно... Как по мне текущий синтаксис вполне очень даже.

leg0las ★★★★★
()
Ответ на: комментарий от Quasar

А если тебе нужно подгрузить какой-нибудь хитрый модуль, например ipt_netflow во время выполнения скрипта, или роут кинуть?

leg0las ★★★★★
()

Выглядит пристойно, надо будет попробовать.

leave ★★★★★
()
Ответ на: комментарий от Quasar

Если можно будет прямо там писать скрипты для правил, не
прибегая к помощи того же shell, то это будет шикарно.

Не шикарно. Производительность угробтся.

AS ★★★★★
()
Ответ на: комментарий от MrClon

У меня скрипт ната на ~300 строк и меня все устраивает.

leg0las ★★★★★
()

Круто конечно, но не вижу смысла менять синтаксис userspace утилит - проще было-б сделать одну общую с синтаксисом от iptables.

jekader ★★★★★
()

Можно тезисно: чем оно принципиально лучше?
Ну, с точки зрения администратора.

Yustas ★★★★
()

Идея в целом позаимствована в реализациях Berkeley Packet Filters, применяемых в BSD-системах.

Ну заимствуют идеи, что такого!

использования байт-кода

Это должен быть руби! Тем более, что у написанного синтаксис весьма рубиновый:)

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от Yustas

Нет, когда Поттерингу сообщают обычно получается что-то вроде firewalld (это настоящий проект, тоже «замена iptables», уже есть в федоре) ;)

jekader ★★★★★
()
Ответ на: комментарий от Jetty

неадекватно и сложно настраивается, что все равно большая часть используют ipfw.

Ну зачем настолько толсто 4.2 писать? в сравнении с развесистым iptables, синтаксис pf прост, логичен и вообще хорош.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от pekmop1024

Если политика FORWARD не DROP по-умолчанию, то ничего и не надо открывать. В любом случае, это охренеть какая проблема сделать второе правило? Да вам, батенька, на винду надо. А то тут сплошные сложности и лишние телодвижения.

anonymous
()
Ответ на: комментарий от oskar0609

Начнем с протоколов с адовой кучей дублирующего кода в ядре (Потому что нет такой штуки iptabltes. Есть iptables, ip6tables, ebtables, arptables. Захочешь ещё — пиши ещё ядерных модулей.). Как следствие, N (по количеству протоколов) утилит управления. Как следствие, невозможно указать разные протоколы в одном правиле. Как следствие, огромные таблицы (не для локалхоста, разумеется) с ссылками друг на друга. Достаточно?

anonymous
()
Ответ на: комментарий от special-k

Это должен быть руби! Тем более, что у написанного синтаксис весьма рубиновый:)

Больше на тикль похож.

habamax ★★★
()
Ответ на: комментарий от anonymous

ок, что мешает разработчикам сделать один универсальный модуль и одну утилиту - iptables, а не городить неведомую хрень с прослойками, фрейворками, байт-кодом, выносом в пространство пользователя и новым синтаксисом?

anonymous
()

Думаю рано еще в продакшен выводить, но по тестить можно. Я использую ipfw мне его на данный момент хватает, но есть несколько линуксов, с радостью переведу на новый фильтр, но чуть позже, думаю после нового года, когда это решение обкатается.

bagasik
()
Ответ на: комментарий от anonymous

ок, что мешает разработчикам сделать один универсальный модуль и одну утилиту - iptables, а не городить неведомую хрень с прослойками, фрейворками, байт-кодом, выносом в пространство пользователя и новым синтаксисом?

Они так и сделали :) В ядре есть виртуальная машина, в пространстве пользователя — утилита управления, которая создает для неё правила. Что тебе не нравится-то?

anonymous
()
Ответ на: комментарий от anonymous

Не нравиться тут может отсутствие документации, например. Что меня немного смущает. Но код выглядит адекватным.

anonymous
()

Какой неудобный синтаксис... Надеюсь ипстол не выкинут и оставят возможность выбора.

Lavos ★★★★★
()
Ответ на: комментарий от pekmop1024

ну так если вы цепочке FORWARD сделали дефолтное правило DROP, то приходится открывать. делайте ACCEPT и не надо будет ничего открывать

Синтаксис iptables нормальный, всё вполне логично(классификатор-действие). Скорее проблема в том, что люди не могут осилить прохождение пакетов по таблицам и цепочкам

srg666
()

В няшкаче уже всё обсудили. Что-то вы слоу.

skvitek ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.