From 6d35d6f0458548039cda8270909fb58837c231e9 Mon Sep 17 00:00:00 2001 From: bol-van Date: Thu, 22 Feb 2024 10:56:16 +0300 Subject: [PATCH] nftables_notes update --- docs/nftables_notes.txt | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/docs/nftables_notes.txt b/docs/nftables_notes.txt index 33b26b8..4147e0c 100644 --- a/docs/nftables_notes.txt +++ b/docs/nftables_notes.txt @@ -3,9 +3,9 @@ nftables - это технология, пришедшая на замену ipt Весь код из разрозненных, но похожих компонент, собрали в одно целое с единым синтаксисом. Добавили различные конструкции языка, позволяющие писать правила более лаконично, не повторяя одни и те же команды с небольшими различиями. На nftables можно сделать почти все, что можно было сделать на iptables. Есть то, что можно сделать на nftables, но нельзя на iptables. -Удобно, красиво. +Есть и наоборот. -К сожалению, не обошлось и без боли. 10 лет развития nftables казалось бы должны были вылизать все. Но не тут то было. +К сожалению, не обошлось и без боли. Главная боль N1. Очень серьезная, актуальная для openwrt, и решения не видно. @@ -29,13 +29,7 @@ Swap позволяет немного сгладить проблему, но Если памяти становится 200 Mb, то swap уже не спасет. Все равно вызывается OOM killer, заодно убивая и другие процессы, кроме nft, а это уже совсем плохо. Может быть убито что-то важное. -Боль N2, но не такая смертельная. - -10 лет вылизывания кода, но при загоне больших листов в set-ы то и дело при вызовах nft list происходят seg faults. -Например, падать может nft -t list ruleset, но nft -t list table inet zapret может не падать. -Вроде это не влияет на функционал, но все равно создается неудобство. - -Боль N3, не смертельная, но тоже не айс. +Боль N2, не смертельная, но тоже не айс. Какие-то нерациональные алгоритмы разбора таблиц в nft. Например, есть 1 большой set на 100000 элементов и 1 маленький на 2 элемента. @@ -43,13 +37,13 @@ Swap позволяет немного сгладить проблему, но Что он делает за это время ? Тащит из ядра огромный блоб, в котором все в куче, и разбирает его, чтобы выделить искомую мелочь ? В какой-то мере удается это сгладить, обьединяя несколько команд в единый скрипт. -Боль N4 +Боль N3 Все версии nft вплоть до 1.0.1 имеют баг, который не разрешает названия интерфейсов в кавычках в определении flowtable. Без кавычек нельзя вставить интерфейсы , имя которых начинается с цифры. OpenWRT решает эту проблему отдельным патчем в snapshot версии, но на традиционных системах и в openwrt 21.x- его нет. Почему бы не наплевать на интерфейсы, начинающиеся с цифры ? Потому что для openwrt 6to4-6to4, 6in4-he-net - обычное явление. - +На текущий момент этой проблемы в openwrt уже нет, если использовать актуальную версию. Плюс N1, главный @@ -91,9 +85,6 @@ zapret может работать в другой таблице и не тро Выводы -Честно говоря, лучше бы openwrt оставался на iptables. -Пусть они и старые, c недостатками, но как говорится ложка дегтя портит цистерну меда. -nftables - именно тот случай. Все хорошо, но все плохо из-за досадной особенности. Без больших листов все почти прекрасно. Но большие ip листы убивают все. Не для домашних это роутеров. А ipset-ы к nftables не прикрутить. Делать нечего. Openwrt отошел от iptables. С этим придется как-то жить. @@ -102,3 +93,6 @@ iptables можно задействовать на любой openwrt верс Если используется fw3, применяется старый механизм интеграции в fw3. Если он не используется, то правилами iptables управляем как в традиционных linux системах - то есть с возможностью запуска и остановки, а скрипт запуска вносит в том числе и правила iptables. + +На новых openwrt возможно снести nftables и firewall4 и установить firewall3 и iptables. +Если вам никак без больших ip листов на слабой системе, это может быть единственным спасением.