mirror of
https://github.com/bol-van/zapret.git
synced 2024-11-30 05:50:53 +03:00
nftables_notes update
This commit is contained in:
parent
b751c4daa4
commit
6d35d6f045
@ -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 листов на слабой системе, это может быть единственным спасением.
|
||||
|
Loading…
Reference in New Issue
Block a user