LINUX.ORG.RU

nftables


0

1

Читаю я их вики, и не понимаю, а в чем удобство nftables по сравнению с iptables?

http://wiki.nftables.org/wiki-nftables/index.php/Main_Page

Заявляется, что nftables позволяют делать удобную иерархию правил.

Но как то из описания этого не видно.

Как в iptables приходится следить за порядком правил,так и в nftables (http://wiki.nftables.org/wiki-nftables/index.php/Simple_rule_management).

Как в iptables вполне была иерархия на уровне chains, так и здесь она же.

Что мне в ней нравится меньше всего: файрвол проходится по списку правил, проверяя их подряд.

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

Т.е. например, правило A говорит, что все, что приходит на порт 1234, надо блокировать, а правило Б говорит, что все, что входит с интерфейса eth1, надо разрешать.

Или я чего-то не понял, и nftables лишен этой проблемы, и написать подобные правила одновременно невозможно?

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 4)

Принципиально поменялся только синтаксис.

Есть реальная польза от интеграции ipset, добавлении maps и dictionaries

сомнительная польза от интеграции с ebtables

Поменялось внутреннее устройство ( якобы должно быть быстрее )

Якобы разрешено несколько action - вроде полезного LOG & DROP или MARK & ACCEPT

Правила все равно _нужно_ проходить по очереди, иначе будет крайне сложно понять/описать действия фильтра.

Жаль, что нет анонимных цепочек типа

ip proto tcp {
  ip daddr x.x.x.x dport 80 drop;
  ip daddr y.y.y.y dport 8080 accept;
  ....
}

PS им все это еще пилить и пилить.

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

Правила все равно _нужно_ проходить по очереди, иначе будет крайне сложно понять/описать действия фильтра.

Нет, если бы каждому пакету соответствовало в итоге 1 правило, этого бы можно было избежать.

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

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

ты когда-нибудь ковырялся в libpcap ?

Одна из интересных и полезных вещей в ней - оптимизатор.

Запустив tcpdump c ключиком -d -O и без '-O' интересно сравнить результат. Если бы аналогичные оптимизации были бы возможны в nftables на уровне цепочки, то это дало существенное ускорение обработки пакетов (ну а дальше и до jit-компиляции не далеко). Но тогда нужно где-то хранить исходные правила, чтоб в них что-то можно было добавлять/удалять.

Только есть и другая проблема - как отлаживать вложные наборы правил. Сейчас все просто - включил TRACE и понял, где собака зарыта, а как быть с трассировкой такой «оптимизированной» цепочки ?

А на счет языков - да хоть на m4 делай генератор правил :)

vel ★★★★★
()
Ответ на: комментарий от cvs-255

Странно, что еще никто не сделал транслятор правил цепочки iptables в LSF/BPF :)

Написал цепочку правил, скомпилировал, получил одно офигенное правило. Жаль, что в BPF нет action, только фильтр.

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