|
|
@ -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 листов на слабой системе, это может быть единственным спасением. |
|
|
|