mirror of
https://github.com/bol-van/zapret.git
synced 2024-12-23 06:42:34 +00:00
nftables_notes update
This commit is contained in:
parent
b751c4daa4
commit
6d35d6f045
@ -3,9 +3,9 @@ nftables - это технология, пришедшая на замену ipt
|
|||||||
Весь код из разрозненных, но похожих компонент, собрали в одно целое с единым синтаксисом.
|
Весь код из разрозненных, но похожих компонент, собрали в одно целое с единым синтаксисом.
|
||||||
Добавили различные конструкции языка, позволяющие писать правила более лаконично, не повторяя одни и те же команды с небольшими различиями.
|
Добавили различные конструкции языка, позволяющие писать правила более лаконично, не повторяя одни и те же команды с небольшими различиями.
|
||||||
На nftables можно сделать почти все, что можно было сделать на iptables. Есть то, что можно сделать на nftables, но нельзя на iptables.
|
На nftables можно сделать почти все, что можно было сделать на iptables. Есть то, что можно сделать на nftables, но нельзя на iptables.
|
||||||
Удобно, красиво.
|
Есть и наоборот.
|
||||||
|
|
||||||
К сожалению, не обошлось и без боли. 10 лет развития nftables казалось бы должны были вылизать все. Но не тут то было.
|
К сожалению, не обошлось и без боли.
|
||||||
|
|
||||||
Главная боль N1. Очень серьезная, актуальная для openwrt, и решения не видно.
|
Главная боль N1. Очень серьезная, актуальная для openwrt, и решения не видно.
|
||||||
|
|
||||||
@ -29,13 +29,7 @@ Swap позволяет немного сгладить проблему, но
|
|||||||
Если памяти становится 200 Mb, то swap уже не спасет. Все равно вызывается OOM killer, заодно убивая и другие процессы, кроме nft,
|
Если памяти становится 200 Mb, то swap уже не спасет. Все равно вызывается OOM killer, заодно убивая и другие процессы, кроме nft,
|
||||||
а это уже совсем плохо. Может быть убито что-то важное.
|
а это уже совсем плохо. Может быть убито что-то важное.
|
||||||
|
|
||||||
Боль N2, но не такая смертельная.
|
Боль N2, не смертельная, но тоже не айс.
|
||||||
|
|
||||||
10 лет вылизывания кода, но при загоне больших листов в set-ы то и дело при вызовах nft list происходят seg faults.
|
|
||||||
Например, падать может nft -t list ruleset, но nft -t list table inet zapret может не падать.
|
|
||||||
Вроде это не влияет на функционал, но все равно создается неудобство.
|
|
||||||
|
|
||||||
Боль N3, не смертельная, но тоже не айс.
|
|
||||||
|
|
||||||
Какие-то нерациональные алгоритмы разбора таблиц в nft.
|
Какие-то нерациональные алгоритмы разбора таблиц в nft.
|
||||||
Например, есть 1 большой set на 100000 элементов и 1 маленький на 2 элемента.
|
Например, есть 1 большой set на 100000 элементов и 1 маленький на 2 элемента.
|
||||||
@ -43,13 +37,13 @@ Swap позволяет немного сгладить проблему, но
|
|||||||
Что он делает за это время ? Тащит из ядра огромный блоб, в котором все в куче, и разбирает его, чтобы выделить искомую мелочь ?
|
Что он делает за это время ? Тащит из ядра огромный блоб, в котором все в куче, и разбирает его, чтобы выделить искомую мелочь ?
|
||||||
В какой-то мере удается это сгладить, обьединяя несколько команд в единый скрипт.
|
В какой-то мере удается это сгладить, обьединяя несколько команд в единый скрипт.
|
||||||
|
|
||||||
Боль N4
|
Боль N3
|
||||||
|
|
||||||
Все версии nft вплоть до 1.0.1 имеют баг, который не разрешает названия интерфейсов в кавычках в
|
Все версии nft вплоть до 1.0.1 имеют баг, который не разрешает названия интерфейсов в кавычках в
|
||||||
определении flowtable. Без кавычек нельзя вставить интерфейсы , имя которых начинается с цифры.
|
определении flowtable. Без кавычек нельзя вставить интерфейсы , имя которых начинается с цифры.
|
||||||
OpenWRT решает эту проблему отдельным патчем в snapshot версии, но на традиционных системах и в openwrt 21.x- его нет.
|
OpenWRT решает эту проблему отдельным патчем в snapshot версии, но на традиционных системах и в openwrt 21.x- его нет.
|
||||||
Почему бы не наплевать на интерфейсы, начинающиеся с цифры ? Потому что для openwrt 6to4-6to4, 6in4-he-net - обычное явление.
|
Почему бы не наплевать на интерфейсы, начинающиеся с цифры ? Потому что для openwrt 6to4-6to4, 6in4-he-net - обычное явление.
|
||||||
|
На текущий момент этой проблемы в openwrt уже нет, если использовать актуальную версию.
|
||||||
|
|
||||||
Плюс N1, главный
|
Плюс N1, главный
|
||||||
|
|
||||||
@ -91,9 +85,6 @@ zapret может работать в другой таблице и не тро
|
|||||||
|
|
||||||
Выводы
|
Выводы
|
||||||
|
|
||||||
Честно говоря, лучше бы openwrt оставался на iptables.
|
|
||||||
Пусть они и старые, c недостатками, но как говорится ложка дегтя портит цистерну меда.
|
|
||||||
nftables - именно тот случай. Все хорошо, но все плохо из-за досадной особенности.
|
|
||||||
Без больших листов все почти прекрасно. Но большие ip листы убивают все. Не для домашних это роутеров.
|
Без больших листов все почти прекрасно. Но большие ip листы убивают все. Не для домашних это роутеров.
|
||||||
А ipset-ы к nftables не прикрутить.
|
А ipset-ы к nftables не прикрутить.
|
||||||
Делать нечего. Openwrt отошел от iptables. С этим придется как-то жить.
|
Делать нечего. Openwrt отошел от iptables. С этим придется как-то жить.
|
||||||
@ -102,3 +93,6 @@ iptables можно задействовать на любой openwrt верс
|
|||||||
Если используется fw3, применяется старый механизм интеграции в fw3.
|
Если используется fw3, применяется старый механизм интеграции в fw3.
|
||||||
Если он не используется, то правилами iptables управляем как в традиционных linux системах - то есть с возможностью
|
Если он не используется, то правилами iptables управляем как в традиционных linux системах - то есть с возможностью
|
||||||
запуска и остановки, а скрипт запуска вносит в том числе и правила iptables.
|
запуска и остановки, а скрипт запуска вносит в том числе и правила iptables.
|
||||||
|
|
||||||
|
На новых openwrt возможно снести nftables и firewall4 и установить firewall3 и iptables.
|
||||||
|
Если вам никак без больших ip листов на слабой системе, это может быть единственным спасением.
|
||||||
|
Loading…
Reference in New Issue
Block a user